在我的源代码中,我有一些像NSLocalizedStringFromTable(@"Info", @"en", @"Title of this view").当我随后调用时,genstrings -o en.lproj ./Classes/*.m我不会得到预期的文件,en.strings但是Localized.strings,尽管我在genstrings-manpage中读到它会从NSLocalizedStringFromTable(a,table,c)函数生成一个table.strings文件.我错了吗?我如何创建table.strings文件呢?
胡安,
确保您没有使用#define或常量作为表名.请记住,genstrings不会查看已编译的代码,它只会解析源文件.此外,所有NSLocalizedStrings方法实际上只是在NSBundle.h中定义的宏:
#define NSLocalizedStringFromTable(key, tbl, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)]
Run Code Online (Sandbox Code Playgroud)
确保你没有做类似的事情:
#define ENSTRINGS @"en"
...
NSString *info = NSLocalizedStringFromTable( @"Info", ENSTRINGS, @"Title of this view" );
Run Code Online (Sandbox Code Playgroud)
相反,您必须指定表名:
NSString *info = NSLocalizedStringFromTable( @"Info", @"en", @"Title of this view" );
Run Code Online (Sandbox Code Playgroud)