標籤:ace turn 列表 rda mod font tin play localeid
第一次進入應用擷取母語.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:niltable:(table)];
NSAssert(localizedString,@"localized error, table = %@, key = %@", table, key);
return localizedString;
}
以本地化方式擷取國際化資訊的顯示名稱
NSLocale *curLocal = [[NSLocale alloc]initWithLocaleIdentifier:@"zh-Hans"] ;NSLog(@"%@",[curLocal displayNameForKey:NSLocaleIdentifier value:@"fr_FR"] );// 法文(法國)curLocal = [[NSLocale alloc]initWithLocaleIdentifier:@"zh-Hant"] ;NSLog(@"%@",[curLocal displayNameForKey:NSLocaleIdentifier value:@"fr_FR"] );//法文(法國)
ios 應用多語言自由切換實現