原文网址:http://www.jianshu.com/p/2b7743ae9c90

讨论的iOS应用中的多语言设置,Ok 一般是两种情况:

1.根据当前设备语言自动切换显示

2.在应用中可进行语言设定

至今,我个人做过的项目中有6个是涉及到多语言的,其中全部都是需要在应用中可进行设置。 其实也没多大关系,我们这里会首先说说根据当前设备语言进行切换界面的显示(这些都是网上能搜到的,我整理下给自己清晰点的步骤以便后续查看罢了)。而关于在应用在进行语言设定,其实就是获取当前的语言环境并通过代码进行更改,其他的操作是一致的。


先来说说几个涉及到多语言本地化设置的:

1.本地化应用名称

2.本地化字符串(文字)

3.本地化图片、素材

4.本地化StoryBoard(Xib)


!!重点重点,以上都是废话:

这里才是配置根据当前设备语言自动切换显示的步骤,不贴图,不说明原因:

1.配置工程支持多语言

选中项目—>PROJECT(默认是选中TARGETS,切换下)—>Info—>Localizations—>设置多语言环境

2.国际化应用名称

(1)创建InfoPlist.string,并进行Localization配置:

在项目中点击New File-->Resource-->Strings File -->更名为InfoPlist-->点击创建。

选中InfoPlist.strings —>在Xcode右边栏找到Localization—>在Localization中点“+”进行配置。(如没有则点击 XCode—>View—>Utilities—>File Inspector)

(2)添加属性:

在对应InfoPlist.string文件中输入以下代码:

CFBundleDisplayName ="多语言测试";

注意:CFBundleDisplayName加不加双引号都行,"多语言测试"便是对应的应用名。

(3)编辑Info.plist:

打开Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES即可

3.国际化文字

(1)创建Localizable.strings文件(一定是这个名字,是否使用的方法不一样)并进行进行Localization配置。

(2)在对应语言的Localizable.strings中添加key=value;字串(各个语言文件中key要相同)

(3)在代码中使用NSLocalizedString(<#key#>, <#comment#>)来读取本地化字符串。

注意:如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable(key, @"wang", nil)来读取本地化字符串,中间那个是@"wang"文件名。

*多语言文本中也可包含可变内容:通过以下代码获取:

NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"密码错误%ld次,还可以输入%ld次",nil), 2, 1];

4.国际化图片

有两种方式:

(1)在不同语言的Localizable.strings中指定不同的图片名称,通过NSLocalizedString()获取不同的图片名称后进行显示不同的图片(这个就是通过国际化文字那个)

(2)参照国际化应用名和文字的方式给图片标记两种不同的语言显示 (但将图片放Images.xcassets中时时似乎没有地方可以选择国际化语言的)

5.国际化StoryBoard:(不建议)

在第1步配置工程多语言的时候就会提示包含的更改的文件,其中就有StoryBoard,选中即可。这样便会出现一个Base文件和语言文件。

但有一个问题是更改了SB中的控件之后,语言包中的内容不会对应改变,所以我们的操作是暂时不支持国际化SB。

以上部分参考:http://blog.csdn.net/wangqiuyun/article/details/7875442

文/cocoawmm(简书作者)
原文链接:http://www.jianshu.com/p/2b7743ae9c90
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
 

【转】iOS多语言本地化(国际化)设置的更多相关文章

  1. iOS - 实现语言本地化/国际化

      实现iOS语言本地化/国际化(图文详解) 前言 语言本地化,又叫做语言国际化.是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言.往往一些应用程序需要提供给多个 ...

  2. 3分钟实现iOS语言本地化/国际化(图文详解)

    前言 语言本地化,又叫做语言国际化. 是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言. 往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这 ...

  3. iOS语言本地化,中文显示

    尽管一直相信xcode肯定提供有语言本地化的设置地方,可是一直也没凑着去改.非常多的汉化,还是使用代码去控制:比方navagition的return使用代码改动为"返回"! 近期在 ...

  4. iOS 多语言的实现(本地化和国际化)

    配置需要国际化的语言 配置需要国际化的语言,这也是国际化之前的准备工作,无论我们是国际化App名称.代码中的字符串.图片.还是storyboard和xib,都需要进行这一步的准备工作(一个项目中需要且 ...

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

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

  6. [置顶] iOS 应用程序内部国际化,不跟随系统语言

    前言:网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 – 今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案. 一.总则: 应用内部语言 ...

  7. iOS 应用程序内部国际化,不跟随系统语言

    前言:网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 – 今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案. 一.总则: 应用内部语言 ...

  8. IOS应用程序多语言本地化解决方案

    最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会:二.根据当前用户当前移动设备 ...

  9. [转]IOS应用程序多语言本地化解决方案

    最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会:二.根据当前用户当前移动设备 ...

随机推荐

  1. 文档控件NTKO OFFICE 详细使用说明之预览PDF文件(禁止打印、下载、另存为、防抓包下载)

    1.在线预览PDF文件(禁止打印.下载.复制.另存为) (1) 运行环境 ① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox) ② IE工具栏-Internet 选项:将ww ...

  2. P3808 【模版】AC自动机(简单版)

    题目背景 这是一道简单的AC自动机模版题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据,请不要恶意提交. 题目描述 给定n个模式串和1个文本串,求有多少个模式串在文本 ...

  3. 使用jQuery对图片进行居中设置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. VM虚拟机NAT模式主机与虚拟机ping不通解决方案

    VM虚拟机与真机通信三种模式, 桥接模式,NAT 模式 ,HOST-ONLY 模式. NAT模式 使用虚拟机的一个虚拟网卡做NAT网关,在nat网关上配dhcp ,或者直接用静态地址.就相当于形成了一 ...

  5. j2ee学习笔记

    Servlet: ①字符集问题:②身份验证:③统一的输入输出:类似母版,重写ServletResponeceWraper的getWriter,使用缓存流. 然后输出时,分析stringWriter , ...

  6. Java中数组的定义方式

    数组定义方式一 动态方式(指定数组的长度) 格式: 数组存储的数据类型[]数组名字 = new 数组存储的数据类型[长度]; [] : 表示数组. 数组名字:为定义的数组起个变量名,满足标识符规范,可 ...

  7. PHP 常用 数组函数

    1:array_push($arr,'添加的值') 往数组里面添加元素2:array_unique($arr) 去重函数3:array_reverse($arr) 倒叙排列

  8. win7/win10 未分配磁盘怎样创建扩展分区 也就是逻辑分区(转截)

    我们有时候用windows7的磁盘管理工具对windows7系统分区管理的时候,我们可能会不小心把我们的电脑硬盘扩展分区都删除了,扩展分区变为了未分配的空间,这时候如果我们新建分区的话,建立的都是主分 ...

  9. BZOJ 2959 长跑 (LCT+并查集)

    题面:BZOJ传送门 当成有向边做的发现过不去样例,改成无向边就忘了原来的思路.. 因为成环的点一定都能取到,我们把它们压成一个新点,权值为环上所有点的权值和 这样保证了图是一颗森林 每次询问转化为, ...

  10. Web项目部署(Flask Angular2 Nginx)

    独立弄了一个项目,也是锻炼自己的工程能力,使用了比较常用的框架,后端Flask,前端Angular2,采用前后端完全分离的方式,通过接口传输json,但是在具体部署过程中,查找资料较为零散,故整理如下 ...