iOS - Localizable 国际化
1、国际化
- 开发的移动应用更希望获取更多用户,走向世界,这就需要应用国际化,国际化其实就是多语言,系统会根据当前设备的语言环境来识别 App 中使用中文还是英文。
2、应用内容国际化
1、新建一个名为 Localizable.strings 的资源文件。


2、点击 Localizable.strings 文件,在右侧属性选择器中可以看到有个按钮 Localize...。

3、点击 Localize... 按钮,如果没做过国际化处理,选项只有 Base 和 English,选择 English 点击 Localize 按钮。


4、点击工程根目录,并选择 PROJECT,然后选择 Info 选项卡,底部我们就看到了Localizations,点击 “+” 号选择一门语言(比如 Chinese(Simplified))。这时看 Localizable.strings 文件下有两个文件 Localizable.strings(English) 和 Localizable.strings(Chinese(Simplified))。



2.1 代码国际化
在国际化文件中以键值的方式定义需要国际化的字符串。
"代码中使用的字符串" = "想要显示的字符串";
5、在 Localizable.strings(English) 文件中添加需要国际化的字符串的英文名称。
"language" = "english";
"button" = "button";

6、在 Localizable.strings(Chinese(Simplified)) 文件中添加需要国际化的字符串的中文名称。
"language" = "中文";
"button" = "按钮";

7、在需要使用国际化的地方使用 NSLocalizedString(key, comment) 调用名为 Localizable.strings 的文件中定义的 Key 值。系统会根据当前设备的语言环境来识别使用中文还是英文。
NSLog(@"%@\n\n", NSLocalizedString(@"language", nil));
NSLog(@"%@", NSLocalizedString(@"button", nil));



如果你的 strings 文件名字不是 Localizable 而是自定义的话,如 qian.strings,那么你就得使用 NSLocalizedStringFromTable() 来读取本地化字符串。
NSLocalizedStringFromTable(@"language", @"qian", nil)
2.2 Storyboard/Xib 国际化 1
5、在 Storyboard 文件的 Localization 选项中选择 English 和 Chinese(Simplified),并选择 Interface Builder Storyboard 模式,去掉 Base。此时可看到 Main.storyboard 下有两个文件 Main.storyboard(Chinese(Simplified)) 和 Main.storyboard(English)。

6、在 Main.storyboard(Chinese(Simplified)) 文件中设置 Storyboard 上控件的中文名称。

7、在 Main.storyboard(English) 文件中设置 Storyboard 上控件的英文名称。

8、运行程序,系统会根据当前设备的语言环境来识别使用中文还是英文。注意使用这种方式设置完国际化后,在 Storyboard 新添加的控件不会出现在国际化文件中,建议最后进行国际化设置。
2.3 Storyboard/Xib 国际化 2
5、在 Storyboard 文件的 Localization 选项中添加 English 和 Chinese(Simplified),并选择 Localizable Strings 模式。此时可看到 Main.storyboard 下有三个文件 Main.storyboard(Base)、Main.strings(Chinese(Simplified)) 和 Main.strings(English)。

6、在 Main.strings(Chinese(Simplified)) 文件中设置 Storyboard 上控件的中文名称。

7、在 Main.strings(English) 文件中设置 Storyboard 上控件的英文名称。

8、运行程序,系统会根据当前设备的语言环境来识别使用中文还是英文。注意使用这种方式设置完国际化后,在 Storyboard 新添加的控件不会出现在国际化文件中,建议最后进行国际化设置。
3、应用名国际化
1、新建一个名为 InfoPlist.strings 的资源文件。


2、点击 InfoPlist.strings 文件,在右侧属性选择器中可以看到有个按钮 Localize...。

3、点击 Localize... 按钮,如果没做过国际化处理,选项只有 Base 和 English,选择 English 点击 Localize 按钮,再像上面一样添加上其他语言。如果做过国际化,再选中 Chinese(Simplified) 语言。


4、在 InfoPlist.strings(English) 文件中添加应用的英文名称。
CFBundleDisplayName = "App Name";

5、在 InfoPlist.strings(Chinese(Simplified)) 文件中添加应用的中文名称。
CFBundleDisplayName = "App 名称";

6、运行程序,系统会根据当前设备的语言环境来识别使用中文还是英文。
4、图片国际化
这里又分两种方法,第一种和国际化字符串方法类似,把中英文图片的名字分别存到中英文对应的 strings 文件,然后通过 NSLocalizedString 来获取图片名称。
1、Localizable.strings(english) 文件中加入:
"BtnCancel" = "BtnCancelEn.png";
2、Localizable.strings(chinese) 文件中加入:
"BtnCancel" = "BtnCancelCn.png";
3、然后在代码中使用 NSLocalizedString 来获取图片名称:
UIImage *images = [UIImage imageNamed:NSLocalizedString(@"BtnCancel", nil)]
第二种就比较正规化了。
1、将图片文件拖到项目中(不要放到 Assets.xcassets 中),点中你要国际化的图片,如 “icon.png”,在右侧属性选择器中可以看到有个按钮 Localize...。

2、点击 Localize... 按钮,如果没做过国际化处理,选项只有 Base 和 English,选择 English 点击 Localize 按钮,再像上面一样添加上其他语言。如果做过国际化,再选中 Chinese(Simplified) 语言。

3、在图片左边就会出现一个倒三角,点开就会出现(english)和(chinese)的 2 张图,并且在项目文件夹中会出现 en.lproj 文件和 zh-Hans.lproj 文件;en.lproj 文件存放的是英文版图片,zh-Hans.lproj 存放的是中文版图片,中英文图片名字一样,我们在文件夹中直接替换图片就可以了,最后使用时直接使用正常名字就行了,如:“icon.png”。

5、其他文件国际化
- 国际化其他文件和国际化图片第二种方法类似,先在 Localization 中添加语言,然后把对应版本拷贝到 en.lproj 和 zh-Hans.lproj 文件夹中,最后引用就行了。
iOS - Localizable 国际化的更多相关文章
- IOS软件国际化(本地化Localizable)
IOS软件国际化(本地化Localizable) iPhone是支持语言最多的手机,它支持各国语言及中国少数名族如蒙古等语言,这也是好多少数名族都用苹果的原因.在这一点上我们自主品牌还是要多学习学习. ...
- iOS APP 国际化
pp Store 中很多流行的应用程序有多种语言版本.虽然这些应用程序可能因为很多因素而变得流行,但是具有多种本地化版本,肯定是其中一个因素.越多的人可以理解并使用您的应用程序,潜在的买家也就越多. ...
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
上篇 IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源 介绍了纯代码刷新 实现程序内切换语言. 但效率底下,也存在一些问题.暂放弃. ...
- (转) iOS程序国际化
IOS程序国际化 本文转自http://www.cnblogs.com/zhidao-chen/archive/2012/07/08/2581977.html 1.1 新建一个Single View ...
- iOS开发——国际化支持Localizable.strings
这篇写的不多,但是绝对诚意满满.不会像别人一样,要不不详细,要不罗里吧嗦一堆. 1.创建Localizable.strings文件 Command+N—>iOS—>Resource—> ...
- iOS - 国际化语言切换
iOS国际化:如何切换语言 1.国际化就是将标签.提示信息等信息放到资源文件中,随着程序需要的语言提供对应的资源文件.以key/value对存储,每个资源的key值不变,value随着需求改变. ...
- iOS应用国际化教程(2014版)
本文转载至 http://www.cocoachina.com/industry/20140526/8554.html 这篇教程将通过一款名为iLikeIt的应用带你了解最基础的国际化概念,并为你的应 ...
- iOS 语言国际化配置
所谓的iOS 国际化,就是根据系统不同的语言自动切换. 首先,如图: 创建一个.strings文件,以“Localizable.strings”为文件名: 创建完之后,在XCode的右边勾选自 ...
- iOS应用国际化教程
开发一款伟大的iOS应用程序是件了不起的事情,但是还有比优秀的代码.华丽的设计以及直观化交互更多的事要做.跻身在App Store排行榜前列还需要正合时宜的产品营销.扩大用户群的能力.实用的工具以及尽 ...
随机推荐
- Windows Phone 四、控件模版
控件模版的概念 Windows Phone中每一个控件都有一个默认的模版,用于描述控件的内部组成结构和外观样式 相对于原本的样式外观操作,自定义模版的可自定义性更强 最基本的重写控件模版 <Gr ...
- Cef 架构
cef支持各种语言和多种操作系统.在设计的时候充分考虑了性能和易用性.cef核心功能提供了c和c++的接口.cef提供了和主程序之间的通信能力(利用 custom plugins, protocols ...
- .NET组件控件实例编程系列——5.DataGridView数值列和日期列
在使用DataGridView编辑数据的时候,编辑的单元格一般会显示为文本框,逻辑值和图片会自动显示对应类型的列.当然我们自己可以手工选择列的类型,例如ComboBox列.Button列.Link列. ...
- 【转】Delphi+Halcon实战一:两行代码识别QR二维码
Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...
- myeclipse2014新建maven项目
1,首先安装maven,并配置. 2,新建maven project. 3,选择maven-archetype-webapp. 4,填写afrifact ID即为项目名称. 5,finish后 bui ...
- 无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法
无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问.)” (Microsoft SQL Server,错误: 5120)的解决方法 问题描述: 在附加数据库到sql server时,附 ...
- 初学Objective-C语言需要了解的星星点点
其实大多数开发初学者都有一些相同的特点,可以说是一种“职业病”.Most有其他平台开发基础的初学者,看到Xcode就想摩拳擦掌:看到Interface Builder就想跃跃欲试:而 ...
- 给linode 替换操作系统核心
1.Make sure your package repositories and installed packages are up to date by issuing the following ...
- MySQL字符集转换(latin1到utf8)
http://blog.chinaunix.net/uid-25266990-id-3344584.html
- github开发
从0开始学习 GitHub 系列之「初识 GitHub」 从0开始学习 GitHub 系列之「加入 GitHub」 从0开始学习 GitHub 系列之「Git 速成」 从0开始学习 GitHub 系列 ...