iOS 国际化(多语言)
来源:互联网 发布:卖韩国女装的淘宝店 编辑:程序博客网 时间:2024/06/05 11:31
1.首先添加需要适配的语言
选择要添加的语言:
选择要国际化的storyboard:
2.xib国际化
如果照上图已勾选需要国际化的storyboard,那么就已经出现简体中文的国际化文件,勾选english就会出现英文的国际化文件,如图
如果添加语言的时候没有勾选storyboard,或者有新添加的storyboard或xib,则需要手动开启国际化,如图
图片、应用名称等需要国际化的都是如此开启;
3.图片
图片开启国际化之后会有两张相同的图片存放在不同的位置,只需要将对应的图片替换掉就可以了。
Assets.xcassets还不支持国际化功能。
4.应用名称
新建文件,文件名必须为InfoPlist
然后在文件里添加
CFBundleDisplayName = "国际化";
然后开启国际化,修改新生成的对应语言的文件中的应用名称,例如
CFBundleDisplayName = "language";
5.字符串
1.替换代码中的字符串
接下来就该工程中的字符串了,字符串的国际化需要用到
NSLocalizedString(@"", @"")参数为两个字符串,第一个字符串是查找对应语言的key值,第二个字符串是注释(可有可无),
还有几个其他方法,可用于指定文件
好多应用是即将完工或已经完工之后才进行国际化适配,所以需要从工程中找到自己想要的字符串。
例如中文:
[button setTitle:@"语言切换" forState:UIControlStateNormal];需要替换为
[button setTitle:NSLocalizedString(@"语言切换", nil) forState:UIControlStateNormal];
当然如果项目一开始的时候就考虑到国际化的问题,使用了NSLocalizedString那就不用了。
这就需要使用正则表达式查找替换了,选择这个,
中文的正则表达式为:(@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?")
替换时使用$1代替()内正则表达式匹配到的内容,如果有两个()时第二个用$2代替。。。
如图
选择需要替换的内容替换即可。
2.生成字符串的国际化文件
使用genstrings工具生成.string文件
打开终端,进入到工程目录下执行命令:
find ./ -name *.m | xargs genstrings -o en.lproj*.m就是工程里的所有.m文件,如果.h文件有需要也可以写*.h
en.lproj是生成文件存放的地址,可以自己指定
生成的文件如下:
如果工程一开始就做国际化,代码中还没有NSLocalizedString,就不能生成此文件,要自行创建此文件名的文件。
将此文件加入到工程内,然后开启国际化,找专业人士翻译即可。
如果没有相应语言的Localizable.string文件,或相对key值的value值,则会显示key值。
未完待续
阅读全文
0 0
- iOS国际化 (多语言)
- iOS 国际化(多语言)
- iOS - 国际化(多语言):
- ios多语言、国际化
- iOS的国际化(多语言)
- iOS -- 应用程序国际化(多语言)
- iOS APP多语言开发(国际化)
- iOS App多语言国际化
- App语言国际化(iOS)
- iOS语言国际化(切换语言)
- IOS 多语言支持,应用程序国际化
- [IOS]国际化开发,多语言支持
- iOS本地化国际化多语言支持
- iOS多语言本地化(国际化)设置
- iOS开发-国际化-配置App多语言
- iOS国际化-多语言适配
- iOS多语言本地化(国际化)设置
- iOS开发-国际化-配置App多语言
- springboot配置 java servlet的Filter过滤器
- 解决mysql查询,in条件参数为带逗号的字符串,查询结果错误
- 微信开发__入门
- Java中4种安全沙箱机制之class文件检验器
- 多线程并发请求检测url是否可用,有一个可用停掉所有的线程实现Callable接受线程返回值
- iOS 国际化(多语言)
- 关于机器访问自己内网IP的问题讨论
- 请不要做浮躁的人
- CIFAR10_input学习笔记
- 创建PDF模板,java添加内容、导出下载PDF
- 看完离编写高性能的JavaScript又近了一步
- C++中的STL中map用法详解
- Git和GitHub资料汇总
- 顺序查找和折半查找