最近开发程序的国际版本,遇到一些问题在此记录一下:
中文问题
刚开始在使用字符串的时候,直接选择硬编码到代码中
label.text = @"你好,世界";
但是之后 如果有国际化的需求的话,必须改成这样
label.text = NSLocalizedString(@"hello", @"你好,世界");
不过随着代码越来越多 不免有疏漏 所以有时我们要去搜索一些漏网之鱼 这里分享一个快捷的方法
打开
“Find Navigator”
切换搜索模式到
“Find > Regular Expression”
输入
@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?"
xib文件产生的问题
问题描述:程序中部分控制器带有xib
文件,对xib
文件也进行了国际化,程序运行时,中文环境没问题,切换到英文环境崩溃,crash
不是必现,接下来运行就没有问题,只有再切换分支的时候,第一次运行才会出现。crash
文本
NSScanner: nil string argument
NSScanner: nil string argument
libc++abi.dylib: terminate_handler unexpectedly threw an exception
仔细检查了代码及xib
中的连线,没有问题,查了很多资料也没有解释。我把xib
给删除了,重新做的国际化就没有问题。
然后在版本控制中发现更改xib
文件时,svn
文件也会变动,猜想为svn
导致国际化出错,修改了xib
中的文本。