iOS本地化學習小結 – iPhone手機開發 iPhone軟體開發教學課程

國際化學習

國際化也稱作本地化,為瞭使不同國傢和地區的用戶能夠有良好的體驗,需要對自己所開發的應用進行不同語言的適配。

iOS中的NSBundle.h中提供瞭本地化的實現方法:

/* Method for retrieving localized strings. */
- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName NS_FORMAT_ARGUMENT(1);

key 查找的字符串的唯一標識 value 查找的字符串的默認值 tableName 查找的文件名,傳入的文件名參數不應包含後綴名 strings,若為nil或空,則默認查找文件Localizable.strings

key value return
nil nil 空串
nil 非 nil value
未找到 nil 或 空串 key
未找到 非 nil 且 非空串 value

一般可以直接使用NSBundle.h中定義的宏

#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
#define NSLocalizedStringFromTable(key, tbl, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) [bundle localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) [bundle localizedStringForKey:(key) value:(val) table:(tbl)]

NSLocalizedString(key, comment)

NSLocalizedStringFromTable(key, tbl, comment)

使用這兩個宏時,都是使用與系統語言相同的語言資源包,但前者是使用默認的字符串文件Localizable.strings,而後者使用傳入的文件進行查找。

NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment)

NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment)
使用這兩個宏,可以指定資源包,即可以加載自己想要顯示的語言的資源,從而實現應用內語言的切換。
在實現應用內語言切換,需要監聽用戶切換語言的動作,當用戶切換語言時,發送通知,加載相應語言的資源包,再去刷新界面,顯示正確的語言。

發佈留言