iOS本地化教程

本地化是使您的应用支持其他语言的过程。 在许多情况下,您首先使用英语用户界面制作应用程序,然后将其本地化为其他语言,例如日语。
本地化的过程很繁琐,随着XCode的更新,本地化的步骤会一点一点地改变。 在这篇博客文章中,我将基于最新的XCode XCode 7解释整个步骤。3.1。

在开始本地化工作之前,请确保已选中“使用基础国际化”复选标记。

什么是“基础国际化”?

当您创建新的XCode项目时,XCode将自动生成资源和包括默认语言在内的文件结构。

这就是所谓的“基础”语言。 如果您要为全球市场开发应用程序,通常您希望在此“基本”语言资源中使用英文文本。

添加新的本地化

好的,默认情况下,我们具有基本语言资源结构。 让我们添加新的语言支持。
在项目浏览器中选择项目文件,然后在项目和目标列表中选择项目。 打开“ 信息”选项卡,然后单击“本地化”部分下的“ +”按钮。 然后从显示的下拉列表中选择您要支持的语言。

XCode将打开一个对话框,显示要为新语言添加的资源。 按“ 完成”按钮将在名为[New Language] .lproj的新语言项目文件夹下生成这些文件 (在此示例中,我添加了日语支持,因此创建了ja.lproj文件夹。)

现在,我们在项目文件夹中具有以下文件结构。

Localizable.strings文件在哪里?

您可以在Localizable.strings文件中添加翻译数据作为键值对。
XCode的早期版本默认情况下用于生成Localizable.strings文件,并且我们能够轻松地为其他语言复制Localizable.strings文件。
默认情况下,最新版本的XCode不会创建Localizable.strings文件。
要添加Localizable.strings文件,请转到File-> New-> File ,在iOS的Resource选项卡下选择Strings File ,将其命名为Localizable.strings并创建文件。

现在,您有了基本语言的Localizable.strings文件,如下所示。

要为日语添加Localizable.strings ,请在文件检查器中单击日语 。 这将在ja.lproj文件夹下创建一个新的Localizable.strings文件。

现在,我们有两个Localizable.strings文件-一个在Base.lproj文件夹下,另一个在ja.lproj文件夹下。

让我们将应用程序中使用的单词和短语添加到BaseLocalizable.strings文件中。
下面是添加“ Welcome” =“ Welcome”的示例
左侧是所谓的Key,稍后由NSLocalizedString方法使用该键从右侧拉出文本。 这是数据的键值对类型。

下面是NSLocalizedString方法的示例。 我们将键设置为方法的第一个参数。 通过将键指定为第一个参数,该方法可以从Localizable.strings文件中提取相应的值并返回该值。 在此示例中,我获得了警报标题,消息和按钮的本地化字符串。

下一步,我们将日语文本添加到ja.lproj文件夹下的Localizable.strings文件中,如下所示。 我们使用相同的键,但用相应的日语翻译替换值。

之后,在iOS模拟器上将手机语言切换为日语,然后运行该应用程序,您现在应该会看到带有日语文本的警报。

每次您检查本地化结果时都可以切换电话语言,这很实用。 当您在iOS Simulator上运行应用程序时,XCode具有一项不错的功能,可以仅在应用程序内切换语言。

为此,请从XCode窗口左上角的下拉菜单中选择“ 编辑方案” ,然后将“应用程序语言”从“系统语言”更改为“日语”(如果迷路,请参阅以下屏幕截图)。
此配置不会更改模拟器的电话语言,而只会将应用程序内的语言环境更改为指定的语言。 当您添加几种语言并想要在各种语言之间切换以检查本地化结果时,这很方便。

故事板本地化

好的,现在我们知道如何使用NSLocalizedString拉本地化的文本以及如何在Localizalbe.strings文件中准备数据。
这足以让您以编程方式向用户显示本地化的文本。
下一步是支持在情节提要中设置的文本的本地化(如按钮标题)。 如果您在Storyboard中设置按钮标题或标签文本,并且没有在ViewControllers中以编程方式更改这些文本,则必须对Storyboard文件进行本地化。
要向故事板中使用的单词添加翻译数据,请首先从项目导航器中选择故事板文件,然后在右侧的文件检查器中选择日语并将其添加。 这将在ja.lproj文件夹下创建[StoryboardFileName] .strings文件。 在下面的示例中,由于故事板的文件名为Main.storyboard, 因此将创建Main.strings(日语)

Main.strings文件中,您将看到类似下面的内容。

InfoPlist.strings(日语)文件中,将值替换为日语翻译,如下所示。

这是将应用程序本地化为另一种语言的整个过程。