iOS應(yīng)用內(nèi)語(yǔ)言切換&程序?qū)崿F(xiàn)國(guó)際化localizable.strings

1、demo代碼和iOS應(yīng)用內(nèi)語(yǔ)言切換后期補(bǔ)上(2016.12.15)

2、demo代碼已加上,因重新寫的demo所以會(huì)跟截圖不一樣(2016.12.19)

程序?qū)崿F(xiàn)國(guó)際化

根據(jù)手機(jī)使用語(yǔ)言加載對(duì)應(yīng)的語(yǔ)言:

1、創(chuàng)建.strings文件,系統(tǒng)默認(rèn)加載Localizable.strings:

2、設(shè)置多語(yǔ)言,這邊設(shè)置了中文、英文:

3、.strings文件添加語(yǔ)言,點(diǎn)擊Localizable.strings右側(cè)勾選:


4、在各自的響應(yīng)文件中,按照"key" = "value"的格式配置:

Localizable.strings( Chinese(Simplified) )中,對(duì)中文進(jìn)行適配

"登錄"="登錄";

Localizable.strings( English )中,對(duì)英文進(jìn)行適配

"登錄"="Login";

5、使用:

系統(tǒng)提供的調(diào)用方法,一般只使用到前面2個(gè)下面進(jìn)行說(shuō)明

#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)]

//默認(rèn)調(diào)用Localizable.strings

self.title = NSLocalizedString(@"登錄",@“這是注釋無(wú)影響可填寫nil”);

//調(diào)用自定義myName.strings

self.title = NSLocalizedStringFromTable(@"登錄",@"myName",@“這是注釋無(wú)影響可填寫nil”);

設(shè)置模擬器語(yǔ)言,Product->Scheme->Edit Scheme...

圖片、xib、storyboard同理設(shè)置(不同語(yǔ)言圖片切換可使用NSBundle)

改變手機(jī)語(yǔ)言效果展示:


iOS應(yīng)用內(nèi)語(yǔ)言切換

重點(diǎn):通過(guò)刷新界面或者重新設(shè)置rootViewController

通過(guò)更改bundle來(lái)獲取不同語(yǔ)言,下面是主要代碼

NSString *tmp = [[NSUserDefaults standardUserDefaults]objectForKey:languageKey];

if (tmp.length == 0 || tmp == nil) {

tmp = @"zh-Hans";//默認(rèn)中文

}

NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:tmp ofType:@"lproj"]];

if (bundle)

{

return NSLocalizedStringFromTableInBundle(key, table, bundle, @"");

}

點(diǎn)擊按鈕切換顯示效果如下:


demo下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容