iOS 国际化问题

最近开发程序的国际版本,遇到一些问题在此记录一下:

中文问题

刚开始在使用字符串的时候,直接选择硬编码到代码中

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中的文本。