28

我正在关注 Ray Wenderlich 的本地化教程之一,但我似乎无法让它工作。

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

在此处输入图像描述

法语文件具有我的字符串的正确(以及谷歌翻译)法语版本:

在此处输入图像描述

我通过从 localizable.strings 文件中调用正确的键来设置字符串:

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

而且我将模拟器设置为法语(顺便说一句:每当我更改语言时,模拟器就会崩溃)。

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

在此处输入图像描述

难道我做错了什么?

4

6 回答 6

46

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

似乎本地化不适用于 xCode 6.1 和 8.1 模拟器。解决方法:转到“编辑方案”>>“运行”(侧栏)>>“选项”选项卡>>“应用程序语言”选择您希望在模拟器上运行应用程序的语言。我从natanavra的Workaround获得了这个解决方法, 感谢他。

但是我在开发者论坛上读到,它在 Xcode 的 6.2 beta 版本中工作。希望可以。

于 2015-01-01T11:11:35.017 回答
24

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

尝试从模拟器中完全删除应用程序并再次构建运行。

于 2013-09-27T20:06:03.687 回答
13

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

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

模拟器- 转到 iOS 模拟器 > 重置内容和设置并按 Shift+CMD+K 清理项目

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

于 2014-04-09T09:10:16.067 回答
11

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

于 2014-06-01T08:53:13.213 回答
4

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

您必须在运行应用程序之前编辑方案。

转到编辑方案 -> 运行 -> 选项,在此处更改语言。

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

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

于 2015-07-01T06:36:39.190 回答
1

我的问题是本地化文件中的字符编码不正确。

于 2016-05-05T00:01:52.993 回答