ios NslocalizedString返回键而不是值

gorkyyrv  于 2023-02-06  发布在  iOS
关注(0)|答案(9)|浏览(183)

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

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

我使用下面的代码来获取字符串值:

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

但是应用程序显示“LABEL_ONE”而不是“标签编号1”?有什么问题吗?谢谢

50pmv0ei

50pmv0ei1#

字符串文件名必须为Localizable.strings。

aamkag61

aamkag612#

除了上面的答案之外,本地化文件必须命名为Localizable.strings,而不是其他任何名称。

mtb9vblg

mtb9vblg3#

您的代码是正确的,所以问题在其他地方。
以下是一些可能性:

  1. Localized.strings文件未复制到应用程序捆绑包中。若要使用"项目导航器"验证Localized.strings文件上的此焦点,并确保在右窗格中的"目标成员身份"下选中您的目标,请执行以下操作
  2. Localized.strings文件中存在一些语法问题,例如缺少;
    1.您引用的代码未执行。若要验证,请放置一个断点并查看是否到达该断点,或者使用一些调试日志...
    1.该字符串出现在阿拉伯语的Localized.strings中,但在英语中缺失。
uemypmqf

uemypmqf4#

你的问题很简单:

应用程序找不到包含翻译的文件。

因此,您必须确保您使用正确的名称创建可本地化文件(例如,英语为en),并且在您的设备(或模拟器)中,您已在这些文件中设置了您准备的语言之一。
否则,找不到文件,并返回键而不是值。

sdnqo3pr

sdnqo3pr5#

试试这个答案,它对我很有效。我在iOS模拟器上遇到了这个问题。我最终删除了模拟器目录中的Localization.strings文件
(/用户/(me)/资料库/应用程序支持/iPhone模拟器/5.0/应用程序/(等)/(项目)/(application.app)
从这里复制
https://stackoverflow.com/a/11657945

u0sqgete

u0sqgete6#

在我的情况下,在最初引入i18n后清理项目就解决了这个问题。

idfiyjo8

idfiyjo87#

检查您是否错误地在后面添加了任何文本/字符;在可本地化.strings文件中。

在运行应用时不会显示错误,但是XCode忽略了这个字符之后的所有键值对,这导致返回键而不是值。
我在字符串文件中错误地放了一个+,为此浪费了2个小时。

sqxo8psd

sqxo8psd8#

请确保目标成员资格设置为包括您的应用程序和您可能需要它的任何其他地方。在我的情况下,成员资格只设置为测试文件夹

ccgok5k5

ccgok5k59#

[2017年8月的回答。编译器可能已更改]
在.strings文件中搜索语法错误
我写了下面这句话:

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

不知何故,这使得编译成功了,甚至命令***plutil -lint Localizable.strings***也说没问题,在我从该行的每个文件中删除了相同的逗号之后,现在编译器能够检测到错误。
之前的问题是编译成功了,但是因为逗号的原因,.strings文件实际上是错误的,所以逗号之后什么都没有读到,我不知道逗号在.strings文件中是否有用。
注:***plutil -lint可本地化.strings***用于终端tu调试.strings文件,因为Xcode无法判断.strings编译错误的位置。

相关问题