天天看點

IOS多國語言Localize方法

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