除了基本定位之外,我是否需要英语,其中包含完全相同的“翻译”?

时间:2013-11-11 21:31:57

标签: xcode localization nslocalizedstring

我希望基本文件包含我的英语单词,因为我的项目已将“Localization native development region”设置为英语。

更新 - 澄清我的问题:

enter image description here

3 个答案:

答案 0 :(得分:18)

除了解决最终用户将看到的语言问题之外,您还需要考虑将在AppStore中显示的内容。 我目前的经验是,如果你使用Base for English,英语不会出现在你的应用程序描述中支持的语言列表中(Apple如何知道你的基础本地化是哪种语言)。

我自己也遇到过这个问题 - 基地(英语),德语和俄语

目标设置参考:

Localization native development region = en

但是在Appstore上它以这种形式出现:

Languages: German, Russian

没有引用英文

我考虑将基本本地化复制到英语(不是高优先级,因为用户从截图中看到应用程序无论如何都适用于英语)

编辑:在iOS8中似乎有不同的行为 - 如果任何翻译符合您的"首选语言顺序&#34,则应用程序设置(Settings.bundle)似乎会忽略基本翻译;

换句话说,App已本地化:Base,German,Russian。 iPhone配置为使用英语,首选语言顺序为英语,德语,俄语。

应用程序设置有...德语!

再次:这仅适用于“仅限设置”而不适用​​于应用程序本身!

答案 1 :(得分:14)

虽然我不完全确定我是否正确,但我会尝试回答你的问题TTBOMK。

假设您在代码中使用了NSLocalizedString(key, comment)。您可以清楚地看到第一个参数实际上是字符串的键,而不是翻译(或要翻译)的字符串本身。因此,当您“编写代码”时,您实际上不会使用基本语言编写字符串 - 或者说任何其他语言。您应该将其视为在代码中添加字符串占位符。

稍后,您应该以{{1​​}}的形式为您要支持的每种语言创建一个Localizable.strings文件。要使您的UI至少以一种人类可读的语言显示,您至少应该为每个占位符键创建一个key = value;个文件,其中包含正确的字符串值。

例如:如果您的代码中有Localizable.strings,那么在其中包含NSLocalizedString(@“ConfirmationButtonTitle", @“Yada yada”)元素的Localizable.strings文件就足够了。如果您没有创建”GreenButtonTitle” = “Tap here to confirm”;文件或没有Localizable.strings文件包含Localizable.strings键,则按钮标题会回退到GreenButtonTitle,因为它是占位符键的名称

话虽如此,大多数人更喜欢出于各种原因将其键完全命名为字符串值。这可以说是一种方便且非常普遍的做法,但可能导致人们的思想冲突。

因此,如果您要创建之前的ConfirmationButtonTitle示例,例如NSLocalizedString,那么您的默认/基本NSLocalizedString(@“Tap here to confirm", @“Yada yada”)文件可能会包含Localizable.strings之类的元素。< / p>

这里发生的不是你重复自己,而是你将你的密钥命名为基本语言的字符串值,就是这样。

修改

总有一种基本语言概念,但据我所知,Xcode 5更强调这一点:这很好。如果您的基本语言是英语,那么您不必再拥有英语的“Tap here to confirm” = “Tap here to confirm”;文件。

答案 2 :(得分:1)

根据documentation(向下滚动到为代码中的面向用户的文本创建字符串文件),您不应该将Localizable.strings添加到基础本土化。即使您的开发语言是英语,也要为英语创建一个单独的文件夹和Localizable.strings。为您要添加的其他语言创建其他语言。

进一步阅读