【国际化】app中的国际化

本文详细介绍iOS应用中的国际化实现方法,包括文本、图片等资源的国际化处理,以及如何实现在应用内的语言切换。此外还介绍了自动化工具如AutoGenStrings.py和genstrings的使用,以及调试方法。

###iOS中的国际化

相关链接

国际化流程

是为每种语言定义一种资源,然后通过NSLocalizedString方法将相应语言的字符串加载进来即可。

如果要求,在应用内进行语言切换?怎么办

每种语言都有自己的 **语言代码.lproj**文件夹,加载资源时只需要加载相应语言文件夹下的资源就OK, 这步可以系统为我们完成,也可以手动去做。

###国际化哪些

首先点击项目->Project->Info->Localizations中添加要支持的语言。

启动国际化

注意:如果不添加国际化的语言,那么在图片和文本资源国际化的时候会没有选项

1.文本国际化

2.图片资源国际化

3.xib storyboard国际化

4.货币值国际化

5.app icon 名字国际化

    5.1 然后添加一个StringFile,命名为InfoPlist.strings。并且在文件属性里将所需要的多国语言勾上。
    5.2 添加一条新的多语言记录,CFBundleDisplayName,并对其做多语言处理。
    5.3 在targets->info里面添加一条新的记录,Application has localized display name, 并将值设为YES。
    5.4 info.plist 中添加一行 Localization native development region = china 默认 en

  《Info.plist中Bundle display name 对应值 ${PROJECT_NAME}》, ${}//Settings中的值 project name

###应用内语言切换

应用启动时,首先会读取NSUserDefaults中的key为AppleLanguages的内容,该key返回一个String数组,存储着APP支持的语言列表,
数组的第一项为APP当前默认的语言。
swift 可以这样取 (NSUserDefaults.standardUserDefaults().valueForKey(kUserLanguage) as! Array<String>)[0]

oc 这样取

NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
NSString *currentLanguage = languages.firstObject;
NSLog(@"模拟器当前语言:%@",currentLanguage);

###自动化的工具

AutoGenStrings.py 可以由python自动编译

###genstrings使用

genstrings是一个命令行工具,可以自动检测国际化相关的宏,从而生成对应的Localizable.strings文件,对应的命令很简单

find . -name *.m | xargs genstrings -o en.lproj// 1.在相对目录下建en.lproj文件夹 2.在当前目录的.m文件中写入宏

NSLocalizedString(@"KEY", nil)的后一个参数实际上就是服务于genstrings的,它的意义就是备注,使用genstrings工具可以按照第一个参数为KEY和VALUE,第二个参数为Comment来生成对应的键值对

比如NSLocalizedString(@"Hello",@"This is a comment")就能生成

/ This is a comment /

"Hello" = "Hello";

//只支持Localizable.strings 这个文件,其他名字不能国际化

###国际化调试方法

参考

点击快捷键option + shift键 点击相应的Storyboard

打开storyboard实时预览

添加实时预览

不同机型选择

选择不同机型

使用快捷键 option+shift + (storyboard的左边小按钮)

###高级使用twine

https://github.com/knight2010/twine

gem install twine

###crowdin

https://my.oschina.net/kshopping/blog/734050

crowdin 云端合作工具

转载于:https://my.oschina.net/kshopping/blog/725590

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值