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

什么是 *comment参数:

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

如果我这样做:

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

并且有两个版本的 Localizable.string (英语和西班牙语) ,是否每个都需要条目:

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


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

英语不是多余的吗?

31646 次浏览

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

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

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

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

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

应用程序忽略注释字符串。它是为了翻译人员的利益而使用的,用于为在应用程序中找到的关键字的上下文用法添加意义。

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

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

这只是为了让开发人员了解翻译,也就是说,你要给出一个关键字,从相应的字符串文件中获得相应的字符串。

注释参数使开发人员能够理解键表示什么..。

注释参数用于方便翻译。它与 NSLocalizedString 函数的输出无关。它只能帮助翻译者翻译别的东西。

根据 本地化应用程序文档,您可以为本地化团队导出本地化。您在 NSLocalizedString中输入的注释包含在导出的文件中。

导出本地化创建扩展名为 xliff的文件,其中包含如下代码所示的 XML。

<trans-unit id="Settings">
<source>Settings</source>
<target>설정</target>
<note>Label of the button to Settings screen</note>
</trans-unit>
<trans-unit id="Take Photo">
<source>Take Photo</source>
<target>사진 찍기</target>
<note>No comment provided by engineer.</note>
</trans-unit>

XLIFF文件可以使用像 XLIFTool这样的应用程序本地化工具进行编辑。