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)擊按鈕切換顯示效果如下: