当创建一个 iOS 应用程序的 Xcode 项目时,在项目(而不是目标)设置中,可以看到默认启用了“使用基础国际化”,并且有两个文件针对默认的“开发语言”英语进行本地化(一个是“Main.storyboard”,另一个是“LaunchScreen.storyboard”,两个文件都位于“Base.lproj”目录中)。如下所示屏幕截图:
(为简单起见,从现在开始我只提到“Main.storyboard”)。
在“Main.storyboard”的右侧面板的本地化部分中,可以看到默认选中了“Base”本地化,并且还有一个默认未选中的英语本地化。如下所示屏幕截图: 在目标的“Info.plist”中,有一个名为“本地化本地开发区域”的键(即“CFBundleDevelopmentRegion”),其默认值为“en”。如下所示屏幕截图: 如果我理解正确的话,使用这些默认设置,开发人员只需在
如果以上理解是正确的,我的第二个问题是如何以相反的方式实现国际化?也就是说,如果我想将
在“Main.storyboard”的右侧面板的本地化部分中,可以看到默认选中了“Base”本地化,并且还有一个默认未选中的英语本地化。如下所示屏幕截图: 在目标的“Info.plist”中,有一个名为“本地化本地开发区域”的键(即“CFBundleDevelopmentRegion”),其默认值为“en”。如下所示屏幕截图: 如果我理解正确的话,使用这些默认设置,开发人员只需在
Main.storyboard
的Base
本地化中编写英语,然后将English
本地化保持未勾选状态。如果应用程序需要适应其他语言,则开发人员可以在项目本地化设置中添加一个本地化,并选择弹出的对话框中的Main.storyboard
。请参见下面的屏幕截图:
以简体中文
为例,这将导致新创建一个目录zh-Hans.lproj
,其中包含一个Main.strings
文件。(为简单起见,我将其称为中文
而不是简体中文
。)开发人员只需将该文件中的英文字符串翻译为中文(在zh-Hans.lproj
目录中新创建的Main.strings
默认情况下将从Base.lproj
的Main.storyboard
中复制所有英文文本)。使用这些设置,在AppStore上此应用程序的描述中的Language
字段将列出英语(来自Base
本地化,因为英语是开发语言)和中文(来自中文
本地化)。在最终用户的设备上,如果系统语言是英语/中文(或英语/中文是首选语言之一),则应用程序将使用相应的语言资源(对于英语,请使用Base
本地化;对于中文,请使用中文
本地化)。对于所有其他语言偏好,英语将作为后备语言,因为CFBundleDevelopmentRegion
是en
,所以使用Base
本地化。我的第一个问题是,以上理解是否正确?总结一下,使用英语作为开发语言
,我们不需要启用英语
本地化文件,只需使用Base
本地化,并直接在故事板文件中编写英文。我们只需要为非英语语言添加本地化。实际上,如果启用了英语
本地化,似乎会很麻烦。如果启用了英语
本地化,则需要同时维护Base.lproj/Main.storyboard
和en.lproj/Main.strings
中的文本。如果以上理解是正确的,我的第二个问题是如何以相反的方式实现国际化?也就是说,如果我想将
中文
作为开发语言
,并在Base
本地化中编写中文,并仅为非中文
语言添加本地化,这是否可行,如何在Xcode中进行操作?我无法找到更改项目设置中的开发语言
的方法,以便声明项目中的Base
本地化是中文
而不是英文
。