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;
}
以本地化方式获取国际化信息的显示名称
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 应用多语言自由切换实现的更多相关文章
- ios开发应用内实现多语言自由切换
需求描述:应用内部有一按钮,点击切换语言(如中英文切换).说起来这个是好久以前做的一个功能点了,刚开始也是没有头绪,后来解决了发现很简单,把方法分享一下.1.原理.查看NSLocalizedStrin ...
- iOS 多语言的切换
一.添加应用程序需要支持的国际语言 二.新建一个Localizable.strings文件,作为多语言对应的词典,存储多种语言 三.在Localizable.strings的对应文件以键值对的形式配置 ...
- iOS应用内语言切换功能
当我们的应用仅仅面向国内用户群,一般仅支持一种语言--中文就可以了.当面向国外用户时就需要进行国际化了,不仅仅是语言的转变,也可能包括设计风格,页面布局.交互效果的转变,如微信,微博,QQ这类应用都有 ...
- 如何做到在虚拟数据库和真实数据库之间自由切换?【低调赠送:QQ高仿版GG 4.4 最新源码】
记得以前在公司上班时,有时候白天的活没干完,我就会把工作带回家晚上加班继续做.但是,我们开发用的数据库是部署在公司局网内部的一台服务器上的,在家里是肯定连不上这台机器的.在家里没有数据库,服务端就跑不 ...
- IOS关于UIViewController之间的切换
IOS关于UIViewController之间的切换 1.NavigationController切换UIViewController的两种方式 方法一右侧进入 1 SecondViewControl ...
- lvs主备可以自由切换,vip落在主上的时候,端口无法telnet,业务连接不了
lvs主备可以自由切换,vip落在主上的时候,端口无法telnet,业务连接不了 解决:将主上的keepalived重启,故障解除 原因:不可知 lvs常见故障原因: real server上的脚步没 ...
- iOS 国际化多语言设置 xcode7
iOS 国际化多语言设置 方式一: 1. 在storyboard中创建好UI,然后在 project 里面 Localizables 栏目里面,添加你需要的语言:默认是Englist; 比如这里我添 ...
- 李洪强漫谈iOS开发[C语言-043]-判断较早日期
李洪强漫谈iOS开发[C语言-043]-判断较早日期
- 李洪强漫谈iOS开发[C语言-043]-练习
李洪强漫谈iOS开发[C语言-043]-行李重量计算价格
随机推荐
- tomcat官网
http://tomcat.jaxmao.org/appdev/index.html 配置 http://www.cnblogs.com/starhu/p/5599773.html
- 分析器错误 未能加载类型“XX.WebApiApplication”
解决方案,删除bin目录下内容(有单独使用dll的删除前请先备份) 清理解决方案并重新生成
- 用Qemu模拟vexpress-a9 (二) --- 搭建u-boot调试环境
参考: http://blog.csdn.net/caspiansea/article/details/12986565 环境介绍 Win7 64 + Vmware 11 + ubuntu14.04 ...
- Install FileZilla in Ubuntu16.04
一.安装fileZilla $ sudo add-apt-repository ppa:n-muench/programs-ppa $ sudo apt-get update $ sudo apt-g ...
- 【AS3 Coder】任务六:人物换装(纸娃娃)系统的制作
使用框架:AS3(Flash Professional CS5.0及更高版本 + Flash Buider)任务描述:了解人物换装系统的制作原理难度系数:2 本章源码下载:http://www.iam ...
- python 下载小说
以下载官场风月小说为例: 具体代码: # coding=utf-8 import os import re from selenium import webdriver from selenium.c ...
- Druid对比Cassandra
不是Cassandra专家, 如果描绘有错误, 请通过邮件列表或者其他方式告知, 我们会修正. Druid对扫描和聚合做了很大程度的优化, 不用提前计算就支持任意的向下钻取, 还可以实时摄入流式数据并 ...
- 为Linux上FireFox安装Flash插件
废话少说,步骤如下: 1.点击网页上插件缺失处,根据提示下载tar.gz版本的插件,我下载的版本是install_flash_player_11_linux.i386.tar.gz,这个文件被下载到了 ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何查询某个变量的ADS地址
鼠标放到任意一个参数上停留一段时间,会自动弹出关于该条参数的ADS信息 TC3也是一样(如果不是轴的某个参数而是PLC程序绑定的某个变量也是一样,定位到这个变量既可以看到ADS信息) ...
- linux下统计程序/函数运行时间(转)
一. 使用time 命令 例如编译一个hello.c文件 #gcc hello.c -o hello 生成了hello可执行文件,此时统计该程序的运行时间便可以使用如下命令 #time ./hello ...