2010-06-04 67 views
4

我有一个应用程序有一些非美国Localizable.strings文件。他们出现在项目中,我期望他们:有一个Localizable.strings对象,以及用于“en”,“fr”等的子对象。每个都是UTF16文本文件,并且我已验证它们会传播进入构建包作为正确的二进制plist文件。iPhone:NSLocalizedString从英文.strings文件读取甚至当另一个lang被设置时

当运行我的应用程序,但是,即使在设备设置一些其他的语言,只能从我的英语Localizable.strings的字符串文件回来

从NSLocale首选语言例如“fr”我可以看到设备设置正在通过某种方式获得,因为系统工具栏按钮(“撤消”等)被翻译。

但我的字符串仍然是英文。 (请注意,它们来自.strings文件,因为我编辑了该文件来进行验证。)

因此:字符串文件看起来不错,并且已构建并部署成功。

有什么我需要做的“告诉”项目,其他语言环境支持?

谢谢!

回答

5

如果在项目的根目录中有一个Localizable.strings文件,并且在单独的.lproj目录中出现这种情况(显然)。该应用程序似乎总是喜欢,如果它存在。事实证明,这可能是一个臆测,试图让本地化项目在本地工作。

我在这里留下这个问题,以防其他人遇到这个问题。

0

对于en_US总是回来的特定问题,您需要查询preferredLanguages以查找当前首选语言的数组,而不是currentLocale

NSLocalizedString是否不从正确的文件返回键控字符串?

IN本地化您必须确保您正在改变您认为正在改变的内容。如果您在首选项中更改Language,那么它将影响从localizable.strings文件返回的字符串。如果您更改区域格式下的设置,那是唯一的日期,货币符号等。This是我成功使用的一个很好的简单指南。

+0

亚当,感谢您的回答。当我将偏好中的语言更改为“法语”时,我的首选语言是“fr”(这是正确的)。但是,然后NSLocalizedString从我的英文.strings文件中返回字符串。有任何想法吗? – 2010-06-04 05:11:43

+0

为了清晰起见,更新了问题。 – 2010-06-04 06:08:28

+0

您正在将国际标题下的语言设置为法语,因此应该从localizable.strings下的“fr”文件中获取文本。我猜想由于某种原因它会回落到英语 - 您的字符串文件或选定的编码可能有问题吗?我不完全确定这一点,但在字符串文件中可能不匹配的引号或分号可能会导致此问题。当然你的密钥资源必须存在。 – 2010-06-04 06:12:59

6

如果您在项目的根目录下运行带有Localizable.strings文件的应用程序,清理不够,还需要从模拟器中删除应用程序。

2

本地化.NIB后,它还可以帮助卸载模拟器中的应用程序,因为本地化版本将在新位置中有两个(或更多)新文件(如'en.lproj','fr.lproj “)。但是,当您构建到模拟器时,知道删除旧的.xib文件是非常愚蠢的,因此它会继续加载旧的陈旧的xib文件,而不是新的本地化版本,除非通过重新安装应用程序清除设备。

2

我解决了这个办法: 我从模拟器和Xcode中删除的应用程序:产品 - >清洁

相关问题