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

4th*_*ace 119 xcode localization objective-c ios swift

*comment参数是什么:

NSString *NSLocalizedString(NSString *key, NSString *comment)
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

NSLocalizedString(@"Hello_World_Key", @"Hello World")
Run Code Online (Sandbox Code Playgroud)

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

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

Spanish.lproj/Localization.strings: @"Hello_World_Key" = @"Hola Mundo";
Run Code Online (Sandbox Code Playgroud)

英语不是多余的吗?

Rob*_*ger 272

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

该注释对您的本地化程序很有用.例如:

NSLocalizedString(@"Save",@"Title of the Save button in the theme saving dialog");
Run Code Online (Sandbox Code Playgroud)

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

/* Title of the Save button in the theme saving dialog */
"Save" = "Save";
Run Code Online (Sandbox Code Playgroud)

  • 我可以问为什么这个答案不是正确的答案? (7认同)
  • 不,在这种情况下使用密钥,而不是评论. (4认同)

Ale*_*lds 69

应用程序忽略注释字符串.它用于翻译者的利益,为在应用程序中找到密钥的上下文使用添加含义.

例如,Hello_World_Key密钥可能在给定语言中采用不同的值,这取决于Hello World该语言中短语需要的正式或非正式程度("世界是什么","哟世界","美好的一天"等).

您可以在注释字段中添加一个字符串,以便将此用法提示给翻译者,翻译人员(可以假设)可以更好地本地化您的应用程序.