使本地化工作

时间:2017-02-22 12:59:33

标签: objective-c macos cocoa internationalization

我有一个需要本地化的应用。

在摆弄设置一段时间后,我设法让项目进入状态,在应用程序包的nl.lproj目录中构建Resources(以及其他)目录,其中包含一个包含我所有翻译的MainMenu.strings文件;乍一看,它们似乎是正确的。

XIB文件被标记为可翻译,似乎是正确目标的一部分:

xib localization settings

但是,如果我在荷兰语环境中运行应用程序,则UI中不会显示本地化字符串。我添加了

NSLocale *loc = [NSLocale autoupdatingCurrentLocale];
NSString *lang = [loc languageCode];
NSLog(@"Current language: %@",lang);

验证荷兰语是否有效,而且确实如此。

This question建议干净,然后重建应用程序应该解决这些问题。我已经尝试过,但它没有解决问题。

如何找出我的应用未被翻译的原因?还有什么可能出错?有没有我可以检查的诊断?

相关应用程序是开源的,可以在https://github.com/Fedict/eid-mw找到。选择" eID Viewer"目标,并构建,以了解发生了什么。

4 个答案:

答案 0 :(得分:1)

本地化有两个不同的地方。一个是UI的本地化。这是通过检查这些框然后在xib文件下面的对话框中编辑字符串文件来完成的。 Window for localization of UI Window with the UI localization strings

第二个是Userfacing字符串在代码中的本地化。这是由宏NSLocalizedString(@"*key*", *comment*);完成的,其中键是键,注释是为本地化目的提供的注释。 enter image description here

这些字符串是在File Localizable.strings中编辑的。

这是与初学者Tutorial的链接。和Apple Docs

在Xcode中激活本地化字符串的调试功能:在Xcode中传入-NSShowNonLocalizedStrings YES作为启动参数。您可以在Product / Scheme / Edit Scheme -Arguments下找到它 enter image description here 希望这有帮助

答案 1 :(得分:0)

您需要名为" Localizable.strings"的名为.strings的文件。 并添加语言目标(在检查器中)并填写目标语言文件。

答案 2 :(得分:0)

您是否尝试过使用pseudolocalozations进行检查? 您是否正确设置了Mac上的语言和区域? 你是否也尝试用XCode专门用荷兰语发布它:

以特定语言和区域启动您的应用

  1. 单击“运行目标”菜单中的目标,然后选择“编辑方案”。

  2. 在右侧,选择选项。

  3. (可选)从“应用程序语言”弹出菜单中选择一种语言。

  4. (可选)从“应用程序区域”弹出菜单中选择一个区域。

  5. 单击“关闭”按钮。

  6. 点击“运行”以您指定的语言和区域启动您的应用。

答案 3 :(得分:0)

事实证明,OSX 10.8及更高版本支持本地化。我的应用选择了10.7作为部署目标(我们确实需要支持一些旧版本的OSX)。将部署目标切换为10.8会使翻译出现。

相关问题