我写这个问题是因为Stackoverflow(甚至苹果的开发者网站)上关于此主题的很多信息都部分过时:
我想在我的Xcode 12.5/Swift 5/iOS 12.3+应用程序中支持多种语言:默认语言为德语,英语作为“备用语言”。
目前,“信息”选项卡列出了两种“本地化”语言: 我的
如何将“基础”语言更改为德语(比如说,“de_CH”),并使其在列表中显示为该语言,同时将英语(“en”)用作“回退”?我找到了一个类似的问题,但不幸的是answer中描述的步骤在Xcode 12.5中不再起作用。
我想在我的Xcode 12.5/Swift 5/iOS 12.3+应用程序中支持多种语言:默认语言为德语,英语作为“备用语言”。
目前,“信息”选项卡列出了两种“本地化”语言: 我的
Main.storyboard
和LaunchScreen.storyboard
文件的“本地化”部分默认情况下如下所示:
"Base" 被选中,这就是为什么第一个截图显示了 2 个文件。
Info.plist
中的语言设置如下:
到目前为止,我还没有触及实际的本地化设置,而是在XIB中使用相同的语言(可能保存在“基础”中)来标记每个标签。根据苹果旧版本地化指南,只要用户的语言设置中包括“基础”,它就是默认语言。如果用户的语言设置不包括基础语言,则“开发人员语言”是使用的“后备”语言(在我的情况下是英语)。这个问答页面也提到:“如果您采用了基础本地化,请确保CFBundleDevelopmentRegion的值与Base.lproj文件夹中内容使用的语言匹配。”
...在这个指南中,启用“英语-开发语言”的基本本地化,可以为两个storyboard添加2个本地化文件,而不实际添加另一个(“基础”)本地化到列表中。如您在我的第一张截图中看到的那样,“基础”和“开发”是单独的列表条目,在早期的Xcode版本中并非如此。
我的第一个问题是:我是否正确理解了所有这些?引文将“基础”和“开发语言”视为同一事物,这有点令人困惑,尽管您当然可以拥有不是“回退”语言的默认语言。
上面我提供的问答也详细介绍了特定语言的区域版本:
如果我的应用程序支持“德语”(语言代码:“de”),但用户的语言设置仅列出例如奥地利德语(“de_AT”),则该应用程序仍将将其自己的语言设置为德语。假设我想将瑞士德语(de_CH)用作默认语言,但用户在设置中只选择了奥地利德语(“de_AT”),这样是否仍然有效?您是否应该将应用程序的默认语言设置为常规非区域性语言(德语=“de”),即使标签等使用例如瑞士德语单词?如何将“基础”语言更改为德语(比如说,“de_CH”),并使其在列表中显示为该语言,同时将英语(“en”)用作“回退”?我找到了一个类似的问题,但不幸的是answer中描述的步骤在Xcode 12.5中不再起作用。