最近接了一个项目,需求是要做一款应用的英文版本,客户并不清楚,以为要另做一个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. 从ICG cell 在 library 中的定义说起

    如Coding 时需要考虑什么样的代码风格会使gating 的效率更高:综合时需要特别设置要插入的gating 类型,每个gating 的fanout 范围,是否可以跨层次,是否需要做physical ...

  2. JavaScript对象之对象标签和对象序列化

    对象标签有三种:proto.class和extensible. 一.proto标签 例如我新建了一个person对象,那么其__proto__则指向Person.prototype,然后Person. ...

  3. JS使用正则表达式获取小括号、中括号及花括号内容的方法示例

    本文实例讲述了JS使用正则表达式获取小括号.中括号及花括号内容的方法.分享给大家供大家参考,具体如下: JS 正则表达式 获取小括号 中括号 花括号内的内容 <!DOCTYPE html> ...

  4. IntelliJ IDEA 2017.3尚硅谷-----修改类头的文档注释信息

    /** @author shkstart @create ${YEAR}-${MONTH}-${DAY} ${TIME} */ ${PACKAGE_NAME} - the name of the ta ...

  5. kali中网卡、ssh、apache的配置与开启

    在Kali-linux中修改网卡文件,启动ssh和apache服务的方法 1.su root           //取得root权限 2.shift+字母      //大小写字母切换 3.修改网卡 ...

  6. 1.java-谈谈接口

    1.面向接口给程序带来的便利和灵活性 List li = new ArrayLIst(); 为什么不写成 ArrayList li = new ArrayLIst(); 2.接口就相当于一些类的规范, ...

  7. 左偏树 (bzoj 2809)

    Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个上级. ...

  8. Spring bean继承

    Bean 定义继承 bean 定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等. 子 bean 的定义继承父定义的配置数据.子定义可以根据需要 ...

  9. 关于AutoCompleteTextView的用法:根据输入的自动匹配关键词

  10. 在linux里面ps -ef | grep tomcat 什么意思

    linux中的查看和tomcat有关系的进程的命令 例如 [root@localhost bin]# ps -eaf | grep tomcat root 5091 1 0 23:04 pts/0 0 ...