使用与 NSLocalizedString(@"Text aka.key",@"Description") 中使用的键不同的后备语言
我到处使用 NSLocalizedString(@"Text in deutsch",@"das Textfeld Text in deutsch") 我有两个 Localized.strings 文件。一份用于德语,一份用于英语。
我现在意识到的是。 如果您有德语 iPhone,您会看到德语文本;如果您的 iPhone 设置为英语,您会看到英语文本。但是如果你有法语,那么你也会得到德语文本,因为我使用德语作为键,对吧? 有没有一种方法可以将英语设置为后备语言,而不是我的代码中到处使用的德语? (我有太多次出现 NSLocalizedString ,现在在任何地方更改键都会很痛苦(在代码中,在 Localized.string.en 和 Localized.string.de 中))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须将
Info.plist
中的CFBundleDevelopmentRegion
设置为英语。这样做,只要不支持用户的首选语言(在您的情况下不是英语和德语),就会使用开发语言。
我通常使用全局函数来包装
NSLocalizedString
,并且当存在未翻译的德语短语并且您希望它回退为英语时还提供回退。还有更多关于本地化的内容,我写了更多关于如何回退的内容作品。
You have to set
CFBundleDevelopmentRegion
in yourInfo.plist
to English.Doing so, whenever the user's preferred language is unsupported (that is other than English and German in your case), then the development language will be used.
I usually use a global func to wrap
NSLocalizedString
, and also provide a fallback when there is a un-translated German phrase and you want it to fall back to English.There's more about localization and I wrote more about how fallback works.
始终选择本地化(something.lproj)。如果 l10n 提供翻译,则不会使用密钥本身;这意味着您可以使用“DISCOMBOBULATE_OR_OK”等键,在适合的语言中翻译为“Discombobulate”,在“Discombobulate”翻译对于可用空间来说太长的语言中翻译为“OK”。
可能性:
始终显示在第一或第二位。)值得询问拥有英国/美国/澳大利亚的人手机进行测试。
A localization (something.lproj) is always picked. The keys themselves aren't used if the l10n provides a translation; this means you can use keys like "DISCOMBOBULATE_OR_OK" which translates to "Discombobulate" in languages where it fits and "OK" in languages where the translation for "Discombobulate" is too long for the space available.
Possibilities:
It's worth asking someone with a UK/US/AU phone to test.