Iphone NSLocalizedString“;localizedStringForKey:值:表:";

Iphone NSLocalizedString“;localizedStringForKey:值:表:";,iphone,objective-c,ios,localization,Iphone,Objective C,Ios,Localization,Doc将上述方法中的tableName参数表示为:要搜索的接收方字符串表。如果tableName为nil或为空字符串,则该方法将尝试在Localizable.strings中使用表… 我的问题是,如果我们创建一个Localizable.strings,它将单独创建一个字符串文件。在我们的项目中没有创建表。桌子在哪里?可以手动创建这样的字符串表吗?我需要在我的项目中做到这一点 我的最后一个问题是-我传递了什么值作为tableName参数的参数 谢谢…按表-它只是指一对键值 更多细节请参见 因此,是

Doc将上述方法中的tableName参数表示为:要搜索的接收方字符串表。如果tableName为nil或为空字符串,则该方法将尝试在Localizable.strings中使用表…

我的问题是,如果我们创建一个Localizable.strings,它将单独创建一个字符串文件。在我们的项目中没有创建表。桌子在哪里?可以手动创建这样的字符串表吗?我需要在我的项目中做到这一点

我的最后一个问题是-我传递了什么值作为tableName参数的参数


谢谢…

按表-它只是指一对键值

更多细节请参见

因此,是的-您必须手动创建这些-因为您使用的是本地化字符串的NSBundle帮助程序方法-您可以使用
-(NSString*)localizedStringForKey:(NSString*)键值:(NSString*)值表:(NSString*)表名
,然后运行
genstrings
生成.strings文件和表

编辑以使其更清晰 字符串表只是键值对的列表。如果生成包含以下内容的Localizable.strings文件:

- (NSString *)localizedStringForKey:(NSString *)key 
                              value:(NSString *)value 
                              table:(NSString *)tableName
现在,您可以将此文件复制到另一个本地化的.lproj文件,并将其更改为特定语言的值:

/* Text for saying hello */
"HelloText" = "Hello!";

这就是他们所说的表格。在这种情况下,“表格”指的是翻译文件。因此,对于Localizable.strings,您可以使用NSLocalizedStringFromTable(@“foo”,“Localizable”,“comment”)从中获取翻译。但是,Localizable.strings是默认值,因此您通常只需使用NSLocalizedString(@“foo”,“comment”)。如果添加一个新的翻译文件(比如Settings.strings),则必须使用表名来引用它。

@Abizern:谢谢。我还有一个问题。在哪里可以找到默认“Localizable.strings”的字符串表?没有“default”版本。默认情况下,它表示如果您未指定将使用的文件。-在源文件上运行
genstrings
以生成字符串表,并查看其外观。@Abizern:我在项目的根目录上运行了命令
genstrings./Classes/*.m
。它在目录中创建了“Localizable.strings”文件。它不创建任何表。我做错了什么?@Simon-那么你在
可本地化的.strings
文件中看到了什么?@Abizern:我在类文件中定义的所有字符串都在那里。但是没有表或类似的东西。@jdelStrother不理解这个特性。如果我需要使用几个视图控制器,那么我需要创建几个*.string,每个控制器一个?@loldop你可以,但你不必。我们以前每个xib有1.string文件,但它产生了很多小文件,每个文件都有一些翻译。我们已经将它们合并到一些文件中。@jdelStrother谢谢!我也这样做,将它们合并到类似的类别中
"HelloText" = "Namaste!";