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

当iOS应用程序的Xcode项目是新创build的,在项目(不是目标)设置中,我们可以看到它默认启用了Use Base internationalization ,并且有2个文件被本地化为默认的English Development Language (一个用于Main.storyboardLaunchScreen.storyboard ,两者都驻留在Base.lproj目录中)。 看下面的截图:

Xcode默认的项目本地化设置

(为了简单起见,我从现在开始只会提到Main.storyboard 。)

而在Main.storyboard的右侧面板的本地化部分,我们可以看到默认情况下已经检查了Base本地化,还有一个默认未选中的English本地化。 看下面的截图:

故事板默认的本地化设置

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

本地化本地开发区域

如果我理解正确,使用这些默认设置,开发人员可以在Main.storyboardBase本地化中编写英文,并且不要选中English本地化。 如果应用程序需要适应其他语言,开发人员可以在项目本地化设置中添加本地化,​​并在popup的对话框中selectMain.storyboard 。 看下面的截图:

添加本地化

Chinese (Simplified)为例,这将产生一个新创build的zh-Hans.lproj目录,其中包含Main.strings文件。 (为简单起见,我将其称为Chinese而不是Chinese (Simplified) 。开发人员只需将该文件中的英文string翻译成中文(默认情况下zh-Hans.lproj目录中新创build的Main.stringsMain.storyboard中的Base.lproj复制所有英文文本)。 通过这些设置,AppStore上这个应用程序的描述中的Language字段将列出英语(来自Base本地化,因为英语是development language )和中文(来自Chinese本地化)。 在最终用户的设备上,如果系统语言为英文/中文(或英文/中文为首选语言),则应用程序将使用相应的语言资源(对于英文,使用Base本地化;对于中文,使用Chinese本地化)。 对于所有其他语言偏好,英语将作为后备语言,因为CFBundleDevelopmentRegionen ,所以使用Base本地化。

所以我的第一个问题是,上述的理解是否正确? 总而言之, development language是英语,我们不需要为故事板文件启用English本地化。 只需使用Base本地化,并直接在故事板文件中写入英文。 我们只需要添加英文以外的其他语言的本地化。 (实际上如果启用English本地化似乎很麻烦,如果启用English本地化,那么我们需要在Base.lproj/Main.storyboarden.lproj/Main.strings保留这两个文本。)

如果上述的理解是正确的,那么我的第二个问题就是,如何以相反的方式实现国际化? 也就是说,如果我想用Chinese作为development language ,在Base本地化中写中文,只添加中文以外的其他语言的本地化,那么在Xcode中可能和如何做到这一点? 我找不到在项目设置中改变development language的方法,以声称项目中的Base本地化是Chinese而不是English

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

要回答你关于改变开发语言的问题,这不是简单的事情,而是可以做到的。 特别:

  1. 首先添加你想成为你的基本语言的语言。 取消选中 Xcode为您本地化的所有文件。
  2. Info.plist (如您Info.plist ),将开发区域更改为您想成为您的基本语言的语言。 请注意,该属性有点错误,因为它的值应该是一个语言代码 (带有可选的国家代码),而不是区域或国家代码。
  3. 在Xcode中closures你的项目。 在另一个代码编辑器中,打开projectname.xcodeproj/project.pbxproj并searchdevelopmentRegion 。 你应该看到一行像developmentRegion = English; 。 将其更改为引用与Info.plist文件中相同的语言。
  4. 在Xcode中重新打开项目。 浏览所有可本地化的文件并检查英文旁边的框以生成可本地化的资源。 请注意,对于storyboard和xib,Xcode可能会创build一个storyboard而不是一个string文件。 如果发生这种情况,只要将文件types更改为string文件。

下面是使用fr作为基本语言的结果示例:

项目信息

文件信息