iOS 本地化(非IB篇)
阿新 • • 發佈:2018-11-23
級別:★★☆☆☆
標籤:「iOS本地化」「Localizable.strings」
作者: WYW
審校: QiShare團隊
上篇:iOS 本地化(IB篇),講述了iOS 本地化中與
Interface Builder
相關的內容。
本篇將給大家分享一下iOS本地化(非IB本地化文字)的內容。
iOS本地化(非IB本地化文字)
步驟如下:
- 步驟一:建立
Localizable.strings
,用於本地化文字。
示意圖如下:
- 步驟二:
Localizable.strings
新增中文簡體支援,如下圖:
- 步驟三:
Localizable.strings
建立完成,如下圖:
- 步驟四:新增本地化文字(預設叫
Localizable.strings
),如下圖:
本地化(英文環境部分):
本地化(簡體中文環境部分):
備註:可以使用“英文”作為key,也可以使用“中文”作為key。(可以根據開發者的語言習慣決定)
- 步驟五: 呼叫方法:就會根據裝置當前的語言環境 => 不同語種的字串。
[[NSBundle mainBundle] localizedStringForKey:@"QiPushViewController_localizationLabel.text" value:nil table:nil];
[[NSBundle mainBundle] localizedStringForKey:@"奇分享本地化文字" value:nil table:nil];
// 官方還提供了巨集來做這件事,也可以使用。
NSString *str1 = NSLocalizedString(@"QiPushViewController_localizationLabel.text", @"奇分享本地化文字");
NSString *str2 = NSLocalizedString(@"QiPushViewController_localizationLabel.text", nil);
NSString *str3 = NSLocalizedString(@"奇分享本地化文字", nil);
複製程式碼
其中這個方法:
- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName;
複製程式碼
有三個引數key
、value
、tableName
,並且返回一個字串。
引數 | 含義 |
---|---|
key | 鍵名 |
value | 值名 |
tableName | 檔名(預設是Localizable) |
key,value,和返回的字串之間的關係可由如下表格表示
key | value | return(string) |
---|---|---|
nil | nil | empty string |
nil | non-nil | value |
not found | nil or empty string | key |
not found | non-nil | value |
注:在日常開發中:直接使用
NSLocalizedString(key, comment)
這個巨集就可以啦~既方便又直觀快捷。
本地化補充:建立多個本地化檔案。
可以新增其他的本地化檔案,例如:supplementaryLocalizable.strings
,過程與建立Localizable.strings
的過程相同。 如下圖:
呼叫方法:
[[NSBundle mainBundle] localizedStringForKey:@"奇分享本地化文字補充" value:nil table:@"supplementaryLocalizable"];
// 或者使用巨集
NSLocalizedStringFromTable(@"奇分享本地化文字補充", @"supplementaryLocalizable", nil);
複製程式碼
工程原始碼:GitHub地址
關注我們的途徑有:
QiShare(簡書)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公眾號)
推薦文章:
iOS 檔案操作簡介
iOS 關鍵幀動畫
iOS 小遊戲專案——數字速算升級版
iOS 小遊戲專案——你話我猜升級版
奇舞週刊