IOS多國語言Localize方法
摘要: 使用一系列的NSLocalizedString函數就是localize的本質。NSLocalizedString(NSString *key, NSString *comment)這裡的table取值為nil,是以就把預設的Localizable.strings檔案當作table對于這裡的comment是指當你使 ...
使用一系列的NSLocalizedString函數就是localize的本質。
NSLocalizedString(NSString *key, NSString *comment)
這裡的table取值為nil,是以就把預設的Localizable.strings檔案當作table
對于這裡的comment是指當你使用genstrings tool來生成檔案的時候,這一對key-value pair 前面的comment
檔案Localizable.strings
用來存儲需要local的string,如果沒有,你可以建立一個叫這個名字的stringFile,預設就是使用這個檔案的,以下就是這個檔案中的内容格式,
NSLocalizedStringFromTable(NSString* key, NSString* tableName, NSString* comment)
的本質就是Bundle中的一個函數
localizedStringForKey:(NSString*)key value:(NSString*)value table:(NSString*)tablename
其中的value是指,如果沒有找到翻譯的内容,或者key為空時,顯示什麼内容,tablename是指.strings檔案的名字
比如一個檔案名字為Buttons.strings
那麼使用時,采用
NSLocalizedStringFromTableInBundle
這個函數可以選擇不同的bundle
軟體的名字可以通過以下的方法國際化:
對于InfoPlist.strings
裡面可以存儲軟體的名字
CFBundleDisplayName = "山";
其他特殊用法:
對于要使用的string中間包含有變量的情況,可以使用
"windows at %d columns and %d rows."
"File %@ not found"
這樣的格式來存儲内容
使用的時候,用stringWithFormat:來建立包含變量的NSString,使用即可,比如
另外有時候不同語言翻譯的時候,變量的順序可能會發生改變,這個時候就需要在其中加上tag形如n$來指明位置關系,比如
"%2$@ blah, %1$@ blah"就表明兩個參數的順序變化了。
特殊字元
比如回車\r 換行\n
引号 \"
轉載自 51cto.comarticle-85565-1.html