NslocalizedString返回键而不是值

时间:2014-05-17 20:14:10

标签: ios nslocalizedstring

我创建两个Localizable.strings文件,一个用于英语,第二个用于阿拉伯语:

/* The number 1 */
"LABEL_ONE" = "label number one";

我正在使用此代码获取字符串值:

[self.Lable1 setText:NSLocalizedString(@"LABEL_ONE", @"The number 1")];

但应用显示“LABEL_ONE”而不是“标签第一”? 有什么问题 ? 感谢

8 个答案:

答案 0 :(得分:7)

您的字符串文件名必须是Localizable.strings。

答案 1 :(得分:5)

您的代码是正确的,所以问题出在其他地方。

以下是一些可能性:

  1. Localized.strings文件未复制到应用程序包中。使用“项目导航器”验证此焦点在Localized.strings文件上,并确保在“目标成员资格”下的右窗格中选中目标
  2. Localized.strings文件中存在一些语法问题,即缺少;
  3. 您引用的代码未执行。要验证放置断点并查看是否已达到或使用某些调试日志......
  4. 该字符串显示在Localized.strings的阿拉伯语中,但缺少英语。

答案 2 :(得分:2)

除了最佳答案之外,本地化文件必须命名为Localizable.strings,而不是其他任何内容。

答案 3 :(得分:0)

你的问题非常简单:

该应用无法找到包含翻译的文件。

因此,您必须确保使用正确的名称创建可本地化的文件(例如英语为en)以及您设备(或模拟器)中的已在这些文件中设置了您准备的1种语言。

否则,找不到该文件,并返回密钥而不是值。

答案 4 :(得分:0)

试试这个答案对我有用 我在iOS模拟器上遇到了这个问题。我最终删除了模拟器目录中的Localization.strings文件

(/ Users /(me)/ Library / Application Support / iPhone Simulator / 5.0 / Applications /(etc)/(project)/(application.app)

从这里复制

https://stackoverflow.com/a/11657945

答案 5 :(得分:0)

在我的情况下,在最初引入i18n之后清理项目解决了它。

答案 6 :(得分:0)

检查是否在;之后错误添加了任何文本/字符。在Localizable.strings文件中。

运行应用程序时未显示错误,但XCode忽略此字符后的所有键值对,这将导致返回键而不是值。

我在字符串文件中误加了一个+,并为此浪费了2个小时。

答案 7 :(得分:-1)

[2017年8月答复。编译器可能已更改]

在.strings文件中搜索逗号(,)

我有以下一行:

"Changed your mind?" = "¿Cambiaste de opinión?";,

不知怎的,这使得编译成功,即使命令 plutil -lint Localizable.strings 也说没关系。在我从该行的每个文件中取下相同的逗号后,现在编译器能够检测到有错误。

之前的问题是编译成功,但由于逗号,.strings文件实际上是错误的,因此在读取逗号后没有任何内容。我不知道逗号在.strings文件中是否有用。

注意: plutil -lint Localizable.strings 用于终端tu debug .strings文件,因为Xcode无法分辨.strings编译错误的位置。