NSShowNonLocalizedStrings只处理第一个字符串?

时间:2014-07-21 17:13:18

标签: ios localization

我在Xcode 5.1.1中创建了一个新的iOS应用程序,目标是iOS 7.1,并在应用程序中添加了这些行:didFinishLaunchingWithOptions:

NSLog(@"test1=%@", NSLocalizedString(@"test1", nil));
NSLog(@"test2=%@", NSLocalizedString(@"test2", nil));

我在项目的方案中添加了-NSShowNonLocalizedStrings YES,当我启动它时,会打印出来:

2014-07-21 13:08:05.414 TestProj[64366:60b] Localizable string "test1" not found in strings table "Localizable" of bundle CFBundle 0x8f6e740 </Users/stevex/Library/Application Support/iPhone Simulator/7.1/Applications/46F07A17-2E4D-4354-96C2-82450592F68D/TestProj.app> (executable, loaded).
2014-07-21 13:08:05.415 TestProj[64366:60b] test1=TEST1
2014-07-21 13:08:05.415 TestProj[64366:60b] test2=test2

NSShowNonLocalizedStrings只处理第一个字符串,根据我看到的文档,这似乎不正确。我做错了什么?

2 个答案:

答案 0 :(得分:1)

我的印象是,当您的应用使用较新的“基础”本地化系统时,NSShowNonLocalizedStrings默认值无法正常运行 - 您正在使用的是什么?

在Base本地化中,即使存在本地化,该参数也会记录并大写XIB中的每个字符串,从而大写并记录正确翻译的文本。这使得NSShowNonLocalizedStrings在很大程度上毫无用处。

我发现使用像Babble-On's pseudo-localization这样的服务来生成虚假翻译更容易 - 这更容易找到问题。如果您使用genstrings收集本地化字符串然后上传到他们,他们会生成一个假翻译,比如用法语,然后用 -AppleLanguages(fr) -AppleLocale fr_CA运行您的应用程序

该服务的伪本地化基本上重音每个字符并添加一些填充。当您浏览UI时,任何实际可读的内容都不会被翻译。

答案 1 :(得分:1)

根据苹果的guide,仅限:

  

基于AppKit的应用程序可以利用内置支持来检测不需要本地化的字符串以及那些需要本地化但当前不需要本地化的字符串。

因此,OS X应用程序可以使用它,但不包括iOS应用程序。