iOS APP语言国际化之应用内切换语言环境
最近接了一个项目,需求是要做一款应用的英文版本,客户并不清楚,以为要另做一个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]];
这时切换系统语言环境,就可以对应显示应用内容了。
但是这种必须要重启应用才可以,如果不重启应用
需要重新设置 窗口的 根视图:
效果如下:

iOS APP语言国际化之应用内切换语言环境的更多相关文章
- iOS开发--应用国际化,应用内切换语言
1.前言 自己负责的项目需要做国际化,并且要求应用内部切换语言.这个是可以做到的,也并不难,可以直接戳Github看一下 https://github.com/leo90821/Localiztion ...
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
上篇 IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源 介绍了纯代码刷新 实现程序内切换语言. 但效率底下,也存在一些问题.暂放弃. ...
- App内切换语言
前几天客户提需求,对App增加一个功能,这个功能目前市面上已经很常见,那就是应用内切换语言.啥意思,就是 英.中.法.德.日...语言随意切换. (本案例采用Data-Bingding模式,麻麻再也不 ...
- 解决Android 7.0 App内切换语言不生效的问题
Android7.0及以前版本,Configuration中的语言相当于是App的全局设置: public static void changeAppLanguage(Context context, ...
- Android 应用内切换语言
extends :http://bbs.51cto.com/thread-1075165-1.html,http://www.cnblogs.com/loulijun/p/3164746.html 1 ...
- android 多语言(在APP里面内切换语言)
创建SharedPreferences的管理类 public class PreferenceUtil { private static SharedPreferences mSharedPrefer ...
- iOS多语言(国际化)开发(尾随系统 + APP内手动设置)
一:尾随系统切换语言 1>创建好项目project后, 新建一个多语言文件: 2>加入要设置的语言类型: 3>加入成功 细心的朋友可能会发如今English后面写的是3 Files ...
- iOS语言国际化
参考网站:http://blog.sina.com.cn/s/blog_7b9d64af0101jncz.html 语言国际化:根据系统不同的语言自动切换 Xcode6.2 一.在不同语言下工 ...
- Swift - iOS应用的国际化与本地化
在Xcode中我们可以很方便的将APP适配各种本地化语言.苹果的框架已经帮我们把不同语言的数据分离开,包括图片,声音,视频,文档,用户界面文字(甚至代码中编写的用户界面文字),它们会被建立在同一个bu ...
随机推荐
- 虚拟机安装的ubuntu不能联网解决
安装双系统从没遇到的问题,再虚拟机上遇到了不能联网的问题: 下面给出我的解决方法(win10系统.ubuntu 16.04) 我的电脑-管理-设备管理器 看是否虚拟机的虚拟网卡在: 在去设置-控制面板 ...
- yii2 components
components顾名思义就是组件的意思,yii默认会根据 components 数组里面的键值去 vendor\yiisoft\yii2\web 里面查找这个键值得类,如果没有找到,再根据这个键值 ...
- IQueryable、IEnumberable 、IList与List区别
IEnumerable:使用的是LINQ to Object方式,它会将AsEnumerable()时对应的所有记录都先加载到内存,然后在此基础上再执行后来的Query IQeurable(IQuer ...
- php和redis怎么实现消息队列
把瞬间服务器的请求处理换成异步处理,缓解服务器的压力,实现数据顺序排列获取.本文主要和大家分享php和redis如何实现消息队列,希望能帮助到大家. redis实现消息队列步骤如下: 1).redis ...
- CSS - div中的文字不换行,超出宽度就用省略号表示
问题 过多的文字会把盒子撑开,造成布局错乱. 解决 .card-title { white-space: nowrap; text-overflow: ellipsis; overflow: hidd ...
- CRT中国剩余定理 & Lucas卢卡斯定理
数论_CRT(中国剩余定理)& Lucas (卢卡斯定理) 前言 又是一脸懵逼的一天. 正文 按照道理来说,我们应该先做一个介绍. 中国剩余定理 中国剩余定理,Chinese Remainde ...
- STM32CUBEMX使用操作记录
1.New Project 2.选择芯片型号 3.配置相关外设 4.例如选择了GPIO_Output 5.配置时钟树 灰色框点不了,这和你上一步相关外设配置有关,鼠标靠近灰色框,系统会给出提示 6.工 ...
- 高级命令之awk
1.提取文件内容 2.提取ip
- Linux内核5.6亮点
导读 当我们还在体验 Linux 5.5 稳定发行版带来更好的硬件支持时,Linux 5.6 已经来了.我将在本文中重点介绍 Linux 5.6 发布版中值得期待的关键更改和功能. 说实话,Linux ...
- 【C语言】输入5个整数并按输入顺序逆序输出
#include <stdio.h> int main() { ],i; printf("请输入5个整数:\n"); ;i<;i++) scanf("% ...