NSLocalizedString“ localizedStringForKey:value:table:”

问题描述

||
- (Nsstring *)localizedStringForKey:(Nsstring *)key 
                              value:(Nsstring *)value 
                              table:(Nsstring *)tableName
Doc对上述方法中的tableName参数表示为:要搜索的收件人的字符串表。如果tableName为nil或为空字符串,则该方法尝试使用Localizable.strings中的表... 我的问题是,如果我们创建一个Localizable.strings,它将单独创建一个字符串文件。在我们的项目中没有创建表。桌子到底在哪里?是否可以手动创建此类字符串表?我需要在我的项目中这样做... 我的最后一个问题是-我将哪个值作为参数传递给tableName参数? 谢谢...     

解决方法

在这种情况下,“表”是指翻译文件。因此,对于Localizable.strings,可以使用NSLocalizedStringFromTable(@ \“ foo \”,@ \“ Localizable \”,@ \“ comment \”)从中获取翻译。但是,Localizable.strings是默认设置,因此通常只使用NSLocalizedString(@ \“ foo \”,@ \“ comment \”)。如果添加新的翻译文件(例如Settings.strings),那么您将使用表名来引用它。     ,按表格-它仅表示一个键值对。 文档中有更多详细信息 所以是的-您必须手动创建这些文件-因为您正在使用NSBundle帮助程序方法来本地化字符串-您可以使用
- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName
,然后运行
genstrings
来生成.strings文件和表。 编辑以使其更清晰 字符串表只是键值对的列表。如果您生成一个包含以下内容的Localizable.strings文件:
/* Text for saying hello */
\"HelloText\" = \"Hello!\";
现在,您可以将此文件复制到另一个本地化的.lproj文件,并将其更改为特定语言的值:
\"HelloText\" = \"Namaste!\";
这就是一张桌子的意思。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...