文件国际化
1. 新建名为Localizable.strings的空文件 (名字为固定的“Localizable”,千万不要搞错,否则不能被识别)
2. 点击项目 -> PROJECT -> Info -> Localizations 添加需要国际化的语言
3. 点击Localizable.strings文件,在右侧添加需要国际化的语言
4. 在需要国际化的地方使用 NSLocalizedString(@"key",@"comment") 国际化
5. 在对应的国际化文件里添加对应的"key" = "value"键值对,以分号结束
Info.plist国际化
1.新建一个名为“InfoPlist.strings”的空文件,注意:文件名字固定为“InfoPlist”,否则不能被识别
2.点击项目 -> PROJECT -> Info -> Localizations 添加需要国际化的语言
3. 点击InfoPlist.strings文件,在右侧添加需要国际化的语言
4.右键Info.plist文件,选择Open as Source Code,把需要国际化的key拷贝到对应的国际化文件里面,按照"key" = "value";的方式做国际化即可,Info.plist国际化的步骤和文件的国际化步骤是类似的。
启动页的国际化
1.首先把各个尺寸的图片拖入到工程里面,添加国际化语言。这里需要注意,不能把启动图片放到Assets.xcassets里面,不然识别不了,iOS11的的图片名字好像比较特别,自定义的就识别不了,最终查找了下官方的写法:Default-iOS11-812h@3x
2.在Info.plist中添加UILaunchImages字段,类型是数组,里面装的是各个尺寸的图片字典,官方文件里面说的是
UILaunchImageName和UILaunchImageMinimumOSVersion这两个字段是必填字段,但实际测试图片大小的字段UILaunchImageSize也是必须的.以下的图片名称和图片大小和拖进工程的图片对应上就可以了。
<key>UILaunchImages</key>
<array>
<dict>
<key>UILaunchImageName</key>
<string>LaunchImage_640x960</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
<dict>
<key>UILaunchImageName</key>
<string>LaunchImage_640x1136</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageName</key>
<string>LaunchImage_750x1334</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageSize</key>
<string>{375,667}</string>
</dict>
<dict>
<key>UILaunchImageName</key>
<string>LaunchImage_1242x2208</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageSize</key>
<string>{414,736}</string>
</dict>
<dict>
<key>UILaunchImageName</key>
<string>Default-iOS11-812h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>11.0</string>
<key>UILaunchImageSize</key>
<string></string>
</dict>
<dict>
<key>UILaunchImageName</key>
<string>LaunchImage_768x1024</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageSize</key>
<string>{768,1024}</string>
</dict>
<dict>
<key>UILaunchImageName</key>
<string>LaunchImage_1536x2048</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageSize</key>
<string>{768,1024}</string>
</dict>
</array>
3.把Launch Images Source选项设置成Use Asset Catalog,然后卸载掉app重新运行应该就可以了
普通图片的国际化
普通图片的国际化有两种方法,一种方法是自己写一个方法来判断当前语言,加载不同语言下的图片,还有一种就是以下的方法,和启动图片的方式差不多。
1.步骤和前面差不多,把图片拖进项目中,选中图片,添加需要国际化的语言
2.添加了对应的语言后,在图片下面会多出两个语言的文件夹
3.右键Show in Finder 把对应的图片替换掉就可以了,注意:图片名字需要保持一致
导出国际化字符串
如果每次加了一个本地化字符串,就得手动去Localizable.strings添加对应的key,那就太麻烦了,幸好苹果提供了快捷导出本地化key的命令。下面以en.lproj的生成为例:
1.首先,我们进入程序工程所在的目录,用命令建立en.lproj 文件,如果已经存在该文件则忽略此步骤。
mkdir en.lproj
2.然后我们遍历所有的子目录文件(以下命令只导出了.m文件),去生成Localizable.strings,命令如下:
find ./ -name *.m -print0 | xargs -0 genstrings -o en.lproj
Tips:使用Xcode查找项目中的中文字符串
打开”Find Navigator”,切换搜索模式到 “Find > Regular Expression”
输入@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?" (swift请去掉”@” 输入@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?" 就可以匹配中文了)