ios 應用多語言自由切換實現

來源:互聯網
上載者:User

ios 應用多語言自由切換實現

第一次進入應用擷取母語.1.如果母語在軟體實現語言列表裡.則預設選中母語,但是使用者還是可以選擇其它語言.2.如果母語不在軟體實現語言列表裡,則預設選中英語.使用者還是可以選擇其它語言.

所有要更換語言的controller裡註冊通知.當使用者選擇了一個語言後發送語言修改的通知.控制器收到語言修改通知後,對需要修改語言的控制進行重新設定.

/** 初始化語言 */

- (void)initLanguage{

//1. 擷取系統支援的語言

_languages = [NSMutableArrayarrayWithCapacity:5];

NSURL *url = [[NSBundlemainBundle]URLForResource:kLanguagePlistwithExtension:kTypePlist];

NSDictionary *dic = [NSDictionarydictionaryWithContentsOfURL:url];


//2 產生語言對象

[dicenumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop) {

DYCXLanguage *language = [DYCXLanguagelanguageWithKey:keyAndValue:obj];

[_languagesaddObject:language];

}];

//3. 擷取使用者儲存的語言[0] = 簡體中文, [1] = zh-Hans;

NSString *userLanguageValue = [selfgetUserLanguage];

if (!userLanguageValue) {

userLanguageValue =kDefaultUserLanguage;

//3.1 擷取系統語言

NSString * localLanguage = [selfgetLocalLanguageValue];

//3.2. 確定預設語言

for (DYCXLanguage *languagein_languages) {

//3.3.如果軟體語言套件涵系統語言預設為系統語言,如果不包涵預設設定為英語

if ([localLanguageisEqualToString:language.languageValue]) {

userLanguageValue = localLanguage;

}

}

}

//4. 設定當前語言

for (DYCXLanguage *languagein_languages) {

if ([userLanguageValueisEqualToString:language.languageValue]) {

language.used =YES;

_userLanguage = language;

break;

}

}

}


- (NSString *)getLocalLanguageValue{

NSUserDefaults *defaults = [NSUserDefaultsstandardUserDefaults];

NSArray *languages = [defaultsobjectForKey:@"AppleLanguages"];

return [languagesobjectAtIndex:0];

}



#pragma mark - 語言更改,重新載入

- (void)reloadStringWithLanguage{

[_confirmsetTitle:[NSStringlocalizedWithString:@"dialog_positive_key"]forState:UIControlStateNormal];

_selectLanguage.text = [NSStringlocalizedWithString:@"select_language_key"];

if ([self.delegaterespondsToSelector:@selector(onLanguageChange)]) {

[self.delegateonLanguageChange];

}

}


#pragma mark -NSString 的分類,載入對應目錄裡的string

+ (NSString *)localizedWithString:(NSString *)key{

NSString *area = [DYCXConfigsharedDYCXConfig].userLanguage.languageValue;

if (!area) {

area = kDefaultUserLanguage;

}

NSString *table = [NSStringstringWithFormat:@"%@.lproj/Localizable", area];

NSString *localizedString = [[NSBundlemainBundle] localizedStringForKey:(key)value:nil table:(table)];

NSAssert(localizedString,@"localized error, table = %@, key = %@", table, key);

return localizedString;

}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.