- (NSString *)localizedStringForKey:(NSString *)key
value:(NSString *)value
table:(NSString *)tableName
Doc将上述方法中的 tableName 参数说成:接收者要搜索的字符串表。如果tableName为nil或为空字符串,则该方法尝试使用 Localizable.strings中的表...
我的问题是,如果我们创建 Localizable.strings ,它会单独创建一个字符串文件。我们的项目中没有创建表格。桌子实际上在哪里?是否可以手动创建此类字符串表?我需要在我的项目中这样做......
我的最后一个问题是 - 我作为 tableName 参数的参数传递了什么值?
谢谢...
答案 0 :(得分:18)
在该上下文中,“表格”指的是翻译文件。因此对于Localizable.strings,您可以使用NSLocalizedStringFromTable(@“foo”,@“Localizable”,@“comment”)从中获取翻译。但是,Localizable.strings是默认值,因此您通常只使用NSLocalizedString(@“foo”,@“comment”)。如果您添加一个新的翻译文件(例如,Settings.strings),那么您可以使用表名来引用它。
答案 1 :(得分:3)
通过表格 - 它只是一个键值对。
中有更详细的内容所以是 - 您必须手动创建 - 因为您使用NSBundle辅助方法来处理本地化字符串 - 您可以使用- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName
然后运行genstrings
来生成.strings文件和表
编辑以使此更清晰 字符串表只是键值对的列表。如果生成包含以下内容的Localizable.strings文件:
/* Text for saying hello */
"HelloText" = "Hello!";
现在您可以将此文件复制到另一个本地化的.lproj文件,并将其更改为特定语言的值:
"HelloText" = "Namaste!";
这就是桌子的意思。