2010-06-15 62 views
1

在我的源代碼中,我有一些行,如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文件?爲什麼genstrings不會將NSLocalizedStringFromTable條目轉換爲table.strings?

+0

我不滿意NSLocalizedString的行爲,所以我有我自己的宏從其他表字符串加載,並在python的genstrings! http://samwize.com/2012/11/06/my-custom-localization-and-genstrings/ – samwize 2012-11-06 14:04:18

回答

7

娟,

確保你不使用的表名的#define或者常量。請記住,起始字符不會查看已編譯的代碼,它只是解析源文件。此外,所有的NSLocalizedStrings方法實際上只是在宏定義NSBundle.h:

#define NSLocalizedStringFromTable(key, tbl, comment) \ 
     [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)] 

確保您不會做這樣的事情:

#define ENSTRINGS @"en" 
... 
NSString *info = NSLocalizedStringFromTable(@"Info", ENSTRINGS, @"Title of this view"); 

相反,您必須指定表名:

NSString *info = NSLocalizedStringFromTable(@"Info", @"en", @"Title of this view"); 
相關問題