最近接了一个项目,需求是要做一款应用的英文版本,客户并不清楚,以为要另做一个APP。沟通后告诉他们在之前应用基础上加个国际化功能就好,把之前的语言国际化重新梳理记录一下。

  一般设置更改本地语言环境后,需要重启应用才可以生效,客户那边是要求不能重启应用,必须是切换后立即生效。

  首先新建个工程:

  

  接下来要配置你想添加的国际化语言类型:

  

  对应有 XIB 或 Storyboard 文件也对应国际化:

  

  新建 String File,命名为 "InfoPlist" (必须是这个字符串,后缀.strings为默认自带的),用于配置应用名称等信息。

  

  

  选中 InfoPlist.strings 文件,点击 Xcode 右侧的 Localize 按钮,选择要国际化的语言。

  

  

  在里面可以对应用名称国际化:

  在 English 对应文件中添加:

CFBundleDisplayName = "Internationalization";

  在 Chinese (Simplifierd) 添加:

// Localizable App Name是App在中文环境环境下显示的名称
CFBundleDisplayName = "国际化";

  这时切换系统语言环境,APP 名称就会对应更改。

  接下来是应用内容的国际化:

  新建 Localizable.strings,方法同上

  在对应的中文和英文文件中添加 需要国际化的内容

"home" = "HomePage";
"service" = "ServicePage";
"account" = "AccountPage";
"home" = "首页";
"service" = "服务";
"account" = "账户";

  在应用中使用 NSLocalizedString(@"home", nil)

HomeViewController *homeVC = [[HomeViewController alloc] init];
UINavigationController *homeNC = [[UINavigationController alloc] initWithRootViewController:homeVC];
homeNC.tabBarItem.title = NSLocalizedString(@"home", nil); ServiceViewController *serviceVC = [[ServiceViewController alloc] init];
UINavigationController *serviceNC = [[UINavigationController alloc] initWithRootViewController:serviceVC];
serviceNC.tabBarItem.title = NSLocalizedString(@"service", nil); AccountViewController *accountVC = [[AccountViewController alloc] init];
UINavigationController *accountNC = [[UINavigationController alloc] initWithRootViewController:accountVC];
accountNC.tabBarItem.title = NSLocalizedString(@"account", nil); [self setViewControllers:@[homeNC, serviceNC, accountNC]];

  这时切换系统语言环境,就可以对应显示应用内容了。

  但是这种必须要重启应用才可以,如果不重启应用

  需要重新设置 窗口的 根视图:

  详细代码及效果参见 GitHub

  效果如下: 

  

 

  

iOS APP语言国际化之应用内切换语言环境的更多相关文章

  1. iOS开发--应用国际化,应用内切换语言

    1.前言 自己负责的项目需要做国际化,并且要求应用内部切换语言.这个是可以做到的,也并不难,可以直接戳Github看一下 https://github.com/leo90821/Localiztion ...

  2. IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)

    上篇 IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源 介绍了纯代码刷新 实现程序内切换语言. 但效率底下,也存在一些问题.暂放弃. ...

  3. App内切换语言

    前几天客户提需求,对App增加一个功能,这个功能目前市面上已经很常见,那就是应用内切换语言.啥意思,就是 英.中.法.德.日...语言随意切换. (本案例采用Data-Bingding模式,麻麻再也不 ...

  4. 解决Android 7.0 App内切换语言不生效的问题

    Android7.0及以前版本,Configuration中的语言相当于是App的全局设置: public static void changeAppLanguage(Context context, ...

  5. Android 应用内切换语言

    extends :http://bbs.51cto.com/thread-1075165-1.html,http://www.cnblogs.com/loulijun/p/3164746.html 1 ...

  6. android 多语言(在APP里面内切换语言)

    创建SharedPreferences的管理类 public class PreferenceUtil { private static SharedPreferences mSharedPrefer ...

  7. iOS多语言(国际化)开发(尾随系统 + APP内手动设置)

    一:尾随系统切换语言 1>创建好项目project后, 新建一个多语言文件: 2>加入要设置的语言类型: 3>加入成功 细心的朋友可能会发如今English后面写的是3 Files ...

  8. iOS语言国际化

    参考网站:http://blog.sina.com.cn/s/blog_7b9d64af0101jncz.html   语言国际化:根据系统不同的语言自动切换 Xcode6.2   一.在不同语言下工 ...

  9. Swift - iOS应用的国际化与本地化

    在Xcode中我们可以很方便的将APP适配各种本地化语言.苹果的框架已经帮我们把不同语言的数据分离开,包括图片,声音,视频,文档,用户界面文字(甚至代码中编写的用户界面文字),它们会被建立在同一个bu ...

随机推荐

  1. POJ 3177 Redundant Paths (tarjan边双连通分量)

    题目连接:http://poj.org/problem?id=3177 题目大意是给定一些牧场,牧场和牧场之间可能存在道路相连,要求从一个牧场到另一个牧场要有至少两条以上不同的路径,且路径的每条pat ...

  2. JS字符串的不可变性

    js中的字符串特性->不可变性,字符串的值是不可变的 1.改变字符串中的字符 var str = "hello"; str[1] = "W"; conso ...

  3. ThinkPHP中的时间自动填充 无法获取时间

    protected $_auto = array(       array('addTime','time','1','function'),    ); addTime在数据库里的的类型必须为int ...

  4. 有源汇有上下界最大流 (ZQU1591)

    题意:现在的网络有一个源点s和汇点t,求出一个流使得源点的总流出量等于汇点的总流入量,其他的点满足流量守恒,而且每条边的流量满足上界和下界限制. 思路:要满足每一个点的流量守恒,我们可以尝试像无源汇上 ...

  5. springboot笔记-2-.核心的上下文以及配置扫描解析(上)

    前言 上一节中说明了springboot是如何做到自动发现配置的,那么本节看下spring如何创建上下文并解析这些配置,加载我们注册到容器管理中的类.上节已经成功的创建了SpringApplicati ...

  6. 大小端(MSB & LSB)

    谈到字节序的问题,必然牵涉到两大CPU派系.那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU.PowerPC系列采用big endian方式存储数据,而x86系列则采用l ...

  7. HGsoft-downloader

    [NEW]HGsoft-downloader上线了! 给你提供一个简洁无广告的电脑软件下载平台,换个角度下载电脑软件. 网站地址:Go

  8. P & R 9

    Floorplan: 要做好floorplan需要掌握哪些知识跟技能? 明确Floorplan 处理的对象:对于数字设计的 Floorplan 来说,它是一个很依赖前后步骤的一个过程,这个可以看作是后 ...

  9. python 处理form/data文件上传

    处理multipart/form-data 的java serverlet请求接口通过python实现 记住不要在头加:"Content-Type":"multipart ...

  10. 算法刷题--回溯算法与N皇后

    所谓回溯算法,在笔者看来就是一种直接地思想----假设需要很多步操作才能求得最终的解,每一步操作又有很多种选择,那么我们就直接选择其中一种并依次深入下去.直到求得最终的结果,或是遇到明细的错误,回溯到 ...