iOS 开发笔记--国际化
来源:互联网 发布:阿里巴巴排名优化工具 编辑:程序博客网 时间:2024/06/10 00:55
1. 在xcode中设置需要支持的语言
在 xcode 的设置 info -> Localizations 中添加需要支持的语言(下图我添加了 English 和 Chinese )
这里我们会看到有一个 Use Base Internationalization 选项,这个是为 xib/storyboard 提供一个 base 的布局模板,我们添加新的语言时,不需要对布局进行修改,只需要配置 .strings 文件。如果没有勾选 Use Base Internationalization 那么 Xcode 会为不同的语言产生不同的布局文件,我们需要对不同的语言进行布局。
已经勾选 Use Base Internationalization 选项
未勾选 Use Base Internationalization 选项
2. xib/storyboard 国际化
在第一步添加语言的时候会让我们选择需要国际化的 xib/storyboard 如下图:
如果 xib/storyboard 中已经有 UILabel、UIButton 等需要设置文本的控件,系统会自动产生对应的国际化配置,如下图我的 main.Storyboard 中有个文本为 ‘hello’ 的 UILabel
为了支持中文我们在 Mian.strings(Chiness(simplified)) 增加中文支持:
注意:Wok-dD-pEW.text 这个key是系统自动生成的,我们只需要设置value
3. 代码实现国际化
国际化主要借助下面三个宏:
1. NSLocalizedString:在mainBundle中,从Localizable.strings中加载key
2. NSLocalizedStringFromTable:在mainBundle中,从tableName指定的文件中加载key
3. NSLocalizedStringFromTableInBundle:在指定的bundle中,从tableName指定的文件中加载key
4. NSLocalizedStringWithDefaultValue:在指定的bundle中,从tableName指定的文件中加载key,但可以设置一个默认值,在key找不到时有效。
实现语言的动态切换:
1. NSLocalizedString,NSLocalizedStringFromTable个方法固定从mainBundle中加载资源,当我们切换系统语言时,我们的app只有重启语言才会切换。那怎么实现和微信一样的点击切换按钮就切换语言,不需要重启app呢?没错可以使用NSLocalizedStringFromTableInBundle,通过从不同的 bundle 中加载资源,实现动态切换语言。
2.当我们增加语言配置的时候,会自动生成 .lproj 的资源包,如下图(zh-Hans.lproj, en.lproj)
//这里我自己定义了一个宏define EnBundle [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]]//英文#define Zh_HansBundle [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"zh-Hans" ofType:@"lproj"]]//中文#define IDSLocal(key) NSLocalizedStringFromTableInBundle(key, nil, [ isChinese?Zh_HansBundle:EnBundle, nil)//这里我们可以从 NSUserDefault 中读取 isChinese 的值,语言切换开关修改 isChinese 值实现语言的动态切换
最后我们就可以愉快的使用 IDSLocal(key) 这个宏了
4. AppName的国际化
- 在 Info.plist 中增加配置 Application has localized display name 并设置为 YES
- 在工程中新增 InfoPlist.strings 文件并增加对应的语言
- 分别配置CFBundleDisplayName的值就OK了
“CFBundleDisplayName”=”xxxxx”;
- iOS 开发笔记--国际化
- IOS开发 IOS国际化
- 国际化 - iOS开发
- iOS开发 国际化Localizable
- iOS开发-app国际化
- IOS开发国际化详述
- iOS-开发国际化
- iOS开发之国际化
- iOS开发 - 应用国际化开发
- iOS开发 - 应用国际化开发
- iOS 开发之本地化 国际化
- iOS开发-APP语言国际化
- struts2框架开发国际化笔记
- iOS学习笔记——iOS国际化
- iOS开发,装腔的语言国际化
- [IOS]国际化开发,多语言支持
- iOS开发-Xcode6应用程序国际化本地化
- iOS开发之程序的国际化
- 虚机磁盘扩展-lvm分区
- mina socket问题 求救大神................
- Session基础学习
- vi 、vim 学习 第一章读书笔记
- Qt Creator的使用
- iOS 开发笔记--国际化
- office 2016显示“文件已损坏~~~~~~”
- SharePoint Framework 基于团队的开发(四)
- 数学笔记20——三角替换1(sin和cos)
- Mongodb将原有副本集数据迁移到分片存储
- sprintf使用
- 【线段树区间更新】hdu1698 Just a Hook
- Centos安装pip
- 分析函数用法及窗口子句 range/rows差别