第一次进入应用获取本机语言.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;

}

以本地化方式获取国际化信息的显示名称

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 应用多语言自由切换实现的更多相关文章

  1. ios开发应用内实现多语言自由切换

    需求描述:应用内部有一按钮,点击切换语言(如中英文切换).说起来这个是好久以前做的一个功能点了,刚开始也是没有头绪,后来解决了发现很简单,把方法分享一下.1.原理.查看NSLocalizedStrin ...

  2. iOS 多语言的切换

    一.添加应用程序需要支持的国际语言 二.新建一个Localizable.strings文件,作为多语言对应的词典,存储多种语言 三.在Localizable.strings的对应文件以键值对的形式配置 ...

  3. iOS应用内语言切换功能

    当我们的应用仅仅面向国内用户群,一般仅支持一种语言--中文就可以了.当面向国外用户时就需要进行国际化了,不仅仅是语言的转变,也可能包括设计风格,页面布局.交互效果的转变,如微信,微博,QQ这类应用都有 ...

  4. 如何做到在虚拟数据库和真实数据库之间自由切换?【低调赠送:QQ高仿版GG 4.4 最新源码】

    记得以前在公司上班时,有时候白天的活没干完,我就会把工作带回家晚上加班继续做.但是,我们开发用的数据库是部署在公司局网内部的一台服务器上的,在家里是肯定连不上这台机器的.在家里没有数据库,服务端就跑不 ...

  5. IOS关于UIViewController之间的切换

    IOS关于UIViewController之间的切换 1.NavigationController切换UIViewController的两种方式 方法一右侧进入 1 SecondViewControl ...

  6. lvs主备可以自由切换,vip落在主上的时候,端口无法telnet,业务连接不了

    lvs主备可以自由切换,vip落在主上的时候,端口无法telnet,业务连接不了 解决:将主上的keepalived重启,故障解除 原因:不可知 lvs常见故障原因: real server上的脚步没 ...

  7. iOS 国际化多语言设置 xcode7

    iOS 国际化多语言设置 方式一: 1. 在storyboard中创建好UI,然后在 project 里面  Localizables 栏目里面,添加你需要的语言:默认是Englist; 比如这里我添 ...

  8. 李洪强漫谈iOS开发[C语言-043]-判断较早日期

    李洪强漫谈iOS开发[C语言-043]-判断较早日期

  9. 李洪强漫谈iOS开发[C语言-043]-练习

    李洪强漫谈iOS开发[C语言-043]-行李重量计算价格

随机推荐

  1. Linux下使用xargs将多行文本转换成一行并用tr实现逗号隔开

    准备: cat test.txt 示例: cat test.txt | xargs 可以看出得到的字符串为空格隔开的. 再把上面的字符串用逗号隔开,可以使用tr命令进行空格的替换 cat test.t ...

  2. Python开发网络爬虫抓取某同城房价信息

    前言: 苦逼的我从某某城市换到另一个稍微大点的某某城市,面临的第一个问题就是买房,奋斗10多年,又回到起点,废话就不多说了,看看如何设计程序把某同城上的房价数据抓取过来. 方案:方案思路很简单,先把网 ...

  3. 【转】谈基于SOA的应用系统设计和开发

    注:在网上看到这篇文档,觉得写得很好,清晰实用.该博客其它文章也写得不错     地址:http://blog.sina.com.cn/s/blog_493a84550101gswn.html 现在对 ...

  4. Android Studio打包:“APP_NAME" IS NOT TRANSLATED IN ZH, ZH_CN……..解决办法

    开始用Android Studio更新到2.0稳定版,调试的时候没啥问题,在打包的时候出现了"app_name" is not translated in zh, zh_CN….. ...

  5. easyUI中datagrid控制获取指定行数的数据

    直接上代码: var rows=$('#detail').datagrid('getRows');//获取所有当前加载的数据行 var row=rows[0];// 行数从 0 开始 项目中代码: v ...

  6. SQL Server在存储过程中编写事务处理代码的三种方法

    SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所 ...

  7. The method Inflate() in android

    Inflate() method can find out a layout defined by xml,as like the findViewById() method,but there ha ...

  8. Hive中日期函数总结

    --Hive中日期函数总结: --1.时间戳函数 --日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数 select unix_timestamp(); --获得当前时区 ...

  9. ubuntu i3 xterm中文输入显示问题解决

    i3config 配置 !启动fcitx输入法管理 exec fcitx -d Xresource配置 !设置输入法管理器为fcitx xterm*inputMethod: fcitx !设置英文字体 ...

  10. VScode格式化vue文件

    使用vscode编写vue文件的时候, 发现不能格式化,手动格式化代码,太费劲, 还有可能会出错, 不格式化,有的时候代码编写的时候, 没有很好的管理格式,不美观. 但是我们是可以修改让VScode可 ...