如何将英语以外的语言设置为开发语言和基础本地化?

时间:2015-11-27 07:53:10

标签: ios objective-c xcode localization internationalization

当新创建iOS应用程序的Xcode项目时,在项目(非目标)设置中,我们可以看到默认情况下已启用Use Base internationalization,并且Development Language有2个文件已本地化默认情况下为English(一个用于Main.storyboard,一个用于LaunchScreen.storyboard,两者都位于Base.lproj目录中。请参见下面的屏幕截图:

Xcode default project localization setting

(为简单起见,我现在只提及Main.storyboard。)

Main.storyboard右侧面板的本地化部分,我们可以看到默认情况下检查Base本地化,并且还有English本地化默认情况下取消选中。请参见下面的屏幕截图:

storyboard default localization setting

在目标Info.plist中,有一个名为Localization native development region的密钥(即CFBundleDevelopmentRegion),其默认值为en。请参见下面的屏幕截图:

Localization native development region

如果我理解正确,使用这些默认设置,开发人员只需在Base的{​​{1}}本地化版中写英文,并保持Main.storyboard本地化为未选中状态。如果应用程序需要适应其他语言,开发人员可以在项目本地化设置中添加本地化,​​并在弹出的对话框中选择English。请参见下面的屏幕截图:

add localization

Main.storyboard为例,这将导致新创建的目录Chinese (Simplified)中包含zh-Hans.lproj文件。 (为简单起见,我将其称为Main.strings而不是Chinese。)开发人员只需要将此文件中的英文字符串翻译成中文(Chinese (Simplified)中新创建的Main.strings默认情况下,1}}目录中的所有英文文本都来自zh-Hans.lproj中的Main.storyboard。使用这些设置,AppStore上此应用程序说明中的Base.lproj字段将列出英语(来自Language本地化,因为英语是Base)和中文(来自{{1本地化)。在最终用户的设备上,如果系统语言是英语/中文(或英语/中文是首选语言),该应用程序将使用相应的语言资源(对于英语,使用development language本地化;对于中文,请使用Chinese本地化)。对于所有其他语言偏好设置,英语将作为后备语言,因为BaseChinese,因此使用CFBundleDevelopmentRegion本地化。

所以我的第一个问题是,上述理解是正确的吗?总而言之,en为英语,我们不需要为故事板文件启用Base本地化。只需使用development language本地化并直接在故事板文件中写英文。我们只需要为英语以外的语言添加本地化。 (实际上如果我们启用English本地化似乎很麻烦。如果Base本地化已启用,那么我们需要在EnglishEnglish中维护这两个文本。)

如果上述理解是正确的,我的第二个问题是,如何以相反的方式实现国际化?也就是说,如果我想将Base.lproj/Main.storyboard用作en.lproj/Main.strings并在Chinese本地化中编写中文,并且仅为development language以外的语言添加本地化,​​则为有可能以及如何在Xcode中做到这一点?我无法找到更改项目设置中Base的方法,以声明项目中的Chinese本地化为development language而不是Base

1 个答案:

答案 0 :(得分:16)

您的理解大多是正确的。一个小小的澄清:如果用户使用某种第三语言(如俄语)运行,则该应用程序不一定会以英语运行。相反,应用程序将以用户喜欢的第一种语言运行。从iOS 8及更高版本开始,用户可以拥有首选语言的列表,例如“俄语,法语,中文,英语”。对于这个假设用户,该应用程序实际上将以中文运行,因为它在列表中的位置早于英语。

要回答有关更改开发语言的问题,这不是直截了当的,但可以完成。具体做法是:

  1. 首先添加您想要成为基础语言的语言。 取消选中 Xcode为您本地化提供的所有文件。
  2. Info.plist中(如您所见),将开发区域更改为您希望成为基础语言的语言。请注意,该属性有点错误,因为它的值应该是语言代码(带有可选的国家/地区代码),而不是区域或国家/地区代码。
  3. 在Xcode中关闭您的项目。在另一个代码编辑器中,打开projectname.xcodeproj/project.pbxproj并搜索developmentRegion。你应该看到像developmentRegion = English;这样的行。更改此选项以引用您在Info.plist文件中添加的语言。
  4. 在Xcode中重新打开项目。浏览所有可本地化的文件,并选中英语旁边的框以生成可本地化的资源。请注意,对于故事板和xib,Xcode可能会创建一个故事板而不是字符串文件。如果发生这种情况,只需将文件类型更改为字符串文件。
  5. 以下是使用fr作为基础语言的结果示例:

    Project info

    File info

相关问题