iOS App国际化

文件国际化

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]*?" 就可以匹配中文了)




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值