首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >en-GB和en-US包显示名称的iOS本地化

en-GB和en-US包显示名称的iOS本地化
EN

Stack Overflow用户
提问于 2020-05-27 06:48:23
回答 1查看 378关注 0票数 2

我们正在开发一个足球应用程序(足球)。该应用程序只支持英语,但足球在世界各地有不同的含义。在美国/澳大利亚/日本/新西兰,他们用足球代替足球。我们希望根据设备上选择的语言确定显示名称。

我们想要实现的是,在美国/澳大利亚/日本/新西兰的展示名称是“足球”,而在世界其他地方,它应该是“足球”。

实现

在阅读了苹果的文档后,我们认为我们可以有一个后备语言机制。所以我们实现了以下功能。

我们创建了一个名为InfoPlist.strings的文件,它支持以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
en-GB
en-US
en-AU
en-NZ
ja

InfoPlist.strings文件的构造如下:

恩格勃

代码语言:javascript
代码运行次数:0
运行
复制
CFBundleDisplayName = "Football";
CFBundleName = "Football";

恩-US/ AU / NZ / ja

代码语言:javascript
代码运行次数:0
运行
复制
CFBundleDisplayName = "Soccer";
CFBundleName = "Soccer";

项目结构

除此之外,我们将Info.plist中的Info.plist指定为en-GB / United Kingdom

我们还试图在Info.plist中添加以下内容,但没有运气:

代码语言:javascript
代码运行次数:0
运行
复制
<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string>
代码语言:javascript
代码运行次数:0
运行
复制
<key>LSHasLocalizedDisplayName</key>
<true/>

当您在设备上选择一种受支持的语言作为首选语言时,它可以正常工作。但是,当您选择一种不受支持的语言(即德语)时,它又回到了en-US本地化。你能帮我们理解一下吗?

理论上,操作系统查找首选语言(在本例中是德语),发现它不受支持。在此之后,如果它支持的是基本语言(没有方言),它将使用该语言。在这种情况下也是不可用的。最后一步结束:

如果应用程序不支持用户的首选语言,iOS将选择与应用程序的开发区域(CFBundleDevelopmentRegion)匹配的语言。

在我们的例子中,我们将CFBundleDevelopmentRegion定义为en-GB / United Kingdom

我们希望看到“足球”作为显示名称,但我们看到“足球”(en-US本地化)。我们不明白。

希望你能帮助我们

EN

回答 1

Stack Overflow用户

发布于 2020-12-16 07:31:19

我在ios 14中也遇到了同样的问题,似乎是个bug,每当对特定的地区en-XX有明确的定义时,一般都不会使用。相反,字母顺序用于特定的顺序。

https://developer.apple.com/forums/thread/663628

为了解决这个问题,有一种特定的语言en-001,我将它添加到项目中,并用默认值填充这些值。因此,它总是用en-001定义来解决未定义的特定问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62037020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档