我创建两个Localizable.strings文件,一个用于英语,第二个用于阿拉伯语:
/* The number 1 */
"LABEL_ONE" = "label number one";
我正在使用此代码获取字符串值:
[self.Lable1 setText:NSLocalizedString(@"LABEL_ONE", @"The number 1")];
但应用显示“LABEL_ONE”而不是“标签第一”? 有什么问题 ? 感谢
答案 0 :(得分:7)
您的字符串文件名必须是Localizable.strings。
答案 1 :(得分:5)
您的代码是正确的,所以问题出在其他地方。
以下是一些可能性:
Localized.strings
文件未复制到应用程序包中。使用“项目导航器”验证此焦点在Localized.strings
文件上,并确保在“目标成员资格”下的右窗格中选中目标Localized.strings
文件中存在一些语法问题,即缺少;
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)
从这里复制
答案 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编译错误的位置。