1. 程式人生 > >iOS 本地化(非IB篇)

iOS 本地化(非IB篇)

級別:★★☆☆☆
標籤:「iOS本地化」「Localizable.strings」
作者: WYW
審校: QiShare團隊

上篇:iOS 本地化(IB篇),講述了iOS 本地化中與Interface Builder相關的內容。
本篇將給大家分享一下iOS本地化(非IB本地化文字)的內容。

iOS本地化(非IB本地化文字)

步驟如下:

  • 步驟一:建立Localizable.strings,用於本地化文字。

示意圖如下:

  • 步驟二: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; 
複製程式碼

有三個引數keyvaluetableName,並且返回一個字串。

引數 含義
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的過程相同。 如下圖:

簡體中文的supplementaryLocalizable.strings

英文的supplementaryLocalizable.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 小遊戲專案——你話我猜升級版
奇舞週刊