2009-09-18 69 views
107

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

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"; 

英国人不是多余的吗?

回答

60

注释字符串由应用程序忽略。它用于翻译者的好处,为应用程序中找到的关键字的上下文使用添加含义。

例如,Hello_World_Key密钥在给定语言中可能会采用不同的值,具体取决于该语言需要使用该语言的正式或非正式形式(“What's up World”,“Yo World”,“Good Day World “等)。

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

244

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

该评论对您的本地化者很有用。例如:

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"; 
+6

请问为什么这不是正确的答案? –

+0

@JuandelaTorre:这个问题已经有几年了,也许是4thSpace(问这个问题的人)在接受其中一个答案之后没有看到他的问题。 – Manni

+0

为我节省了一堆时间!谢谢! – jonstaff

0

这仅仅是开发人员对翻译的理解,也就是你给出了一个关键字来从相应的字符串文件中获取相应的字符串。

comment参数使开发人员能够理解密钥代表什么...

相关问题