NSLocalizedString()的第二个参数是什么?


123

什么是*comment参数:

NSString *NSLocalizedString(NSString *key, NSString *comment)

如果我这样做:

NSLocalizedString(@"Hello_World_Key", @"Hello World")

并有两个版本的Localizable.strings(英语和西班牙语),每个都需要输入:

English.lproj/Localization.strings: @"Hello_World_Key" = @"Hello World";

Spanish.lproj/Localization.strings: @"Hello_World_Key" = @"Hola Mundo";

英语难道不是多余的吗?

Answers:


72

注释字符串被应用程序忽略。它用于翻译者的利益,可在您的应用程序中找到的键的上下文用法中添加含义。

例如,Hello_World_Key键在给定语言中的取值可能会有所不同,具体取决于该Hello World短语在该语言中的正式程度或非正式程度(“ What's up World”,“ Yo World”,“ Good Day World”等)。

您可以在注释字段中添加一个字符串,以向翻译者提示这种用法,翻译者(可能会认为)可以更好地本地化您的应用程序。


277

第二个参数是注释,如果您使用genstrings命令行实用程序,它将自动出现在字符串文件中,该实用程序可以通过扫描源代码为您创建字符串文件。

该注释对您的本地化人员很有用。例如:

NSLocalizedString(@"Save",@"Title of the Save button in the theme saving dialog");

当您运行genstrings时,这将在Localizable.strings文件中生成一个条目,如下所示:

/* Title of the Save button in the theme saving dialog */
"Save" = "Save";

@JuandelaTorre:这个问题已有几年历史了,也许4thSpace(提出问题的人)因为接受了其中一个答案而没有看他的问题。
曼尼2012年

如果字符串文件中不包含与您指定的标识符匹配的条目,也将使用它。
奥斯卡

4
不,在这种情况下使用键,而不是注释。
尼克·洛克伍德

有什么意义?是的,它对于短ID("id" - "word";如您的示例中的"Save" = "Save";)很有用,但是您必须手动添加更长的时间"id" - "word 1 word 2 word 3";
user924

注释(第二个参数)用于本地化程序。有人在用另一种语言为您的应用程序添加字符串时需要上下文,以便知道要应用哪种翻译。第一个参数仅指定本地化字符串文件中的键,字符串文件是实际存储要在UI中显示的文本的文件。
罗伯·肯尼格

0

这只是为了让开发人员对翻译有所了解,也就是说,您要提供一个从相应的字符串文件中获取相应的字符串的键。

comment参数使开发人员能够理解键代表的含义...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.