XCode 5 / iOS 7 – 本地化不能在模拟器中工作

我正在关注Ray Wenderlich的关于本地化的教程,但我似乎无法得到它的工作。

我已经把我的项目设置为英语和法语的本地化,我有一个locaziable.strings文件为每个:

在这里输入图像说明

法文档有正确的(就Google翻译而言)我的string的法文版本:

在这里输入图像说明

我通过调用localizable.strings文件中的正确键来设置string:

NSString* strTitle = [NSString stringWithFormat:NSLocalizedString(@"Title", Nil)]; 

我有模拟器设置为法语(顺便说一句:每当我做一个语言改变模拟器崩溃)。

但它不是从正确的localizable.strings文件中提取的。 它仍然以英文显示:

在这里输入图像说明

难道我做错了什么?

也许你已经在Localizable.strings文件已经存在但尚未本地化的时候运行了应用程序。 如果是这种情况,这个非本地化的文件仍然驻留在模拟器中的应用程序包的资源文件夹中(当您在模拟器或设备上运行新版本的应用程序时,不会删除未使用的文件)。 这可能会导致问题。

尝试从模拟器中完全删除应用程序,并再次build立一个运行。

如果您使用xcode 6.1.1和iOS sdk 8.1,请尝试此解决方法。

似乎本地化不适用于xCode 6.1和8.1模拟器。 解决方法:转到“编辑scheme”>>“运行”(侧栏)>>“选项”标签>>“应用程序语言”select您希望在模拟器上运行应用程序的语言。 我从natanavra的解决方法中得到了这个解决方法 。

不过,我在开发者论坛上看到,它正在使用Xcode的6.2testing版。 希望它能做到。

我在设备上遇到类似的问题(在我的情况下是IB本地化)。 所以一般的答案是

设备 – 通过Shift + CMD + K卸载应用程序和清理项目

模拟器 – 转到iOS模拟器>重置内容和设置,并通过Shift + CMD + K清理项目

这些问题真的很烦人。 除了更新本地化string的能力较差之外,本地化是iOS开发最大的缺点之一。

另一个可能导致本地化不起作用的问题是string文件的编码。 Localizable.strings的编码必须是UTF-16。 xcode中的文本文件的默认编码是UTF-8,这使我花了一整天的时间来检查为什么本地化不起作用。

在Xcode 6.0和更高版本中,本地化不能通过更改模拟器中的语言不起作用。

在运行应用程序之前,您必须编辑scheme。

转到编辑模式 – >运行 – >选项,在这里更改语言。

现在,运行您的应用程序。 它会工作。

有关更多详细信息,请检查此答案: 在iOS 8.1模拟器上更改语言不起作用

我的问题是在本地化文件中有一个错误编码的字符。