iOS 国际化之常见问题分析



        对于国际化的开发流程这里不一一细说,网上有非常多写的很不错的文章。(这里列一个小编自己开发时查阅的文章 https://www.jianshu.com/p/2244cdebdda3 以供参考)

        本文主要谈论的是国际化开发过程中遇到的一些“莫名其妙”的错误,详情见下文

一、Read failed:The data couldn't be read because it isn't in the correct format.

        由于在国际化开发时,.strings文件中编写格式错误,如少了分号等情况,Xcode并不会像.h和.m那样提示报错(小编开发时使用的10.3版本,希望之后的版本会有优化),所以在编译的时候,如果粗心你就有可能会遇到这个报错。这个时候就需要你仔细查看每一行代码,看是否有“;”的缺失。格式为:

''Key'' = "Value";


二、在国际化完成,编译运行后,发现并有显示设置的Key对应的Value,而显示的就是设置的Key

        遇到这种情况,首先就是确认是否是Key写错了或者Key和Value对应代码写错了。如.string文件中写的是

"Personal Center" = "个人中心";

但是调用的时候却写成了

NSLocalizedString(@"Personal center", nil);

由于.strings是区分大小写的,这里写成center,肯定找不到对应的Value

或者写成

NSLocalizedString(@"Personal  center", nil);

中间多了一个空格,同样也是找不到对应的Value的

        如果上述两种情况都不是,则查看.strings文件中的Key是否有重复,虽然有重复的Key也是可以正常编译通过,但是不建议这种操作,因为如果同一个Key对应的Value不同,会出现预期之外的错误,因为不能控制系统是选择这个Key对应的哪一个Value

        最后,如果上述三种情况都不是,那就回过头再走一遍第一点的流程,小编就遇到过一个Key-Value语句有两个分号,另一个Key-Value语句没有分号,编译照样通过。

        所以,只要保证上面几点没问题,国际化显示基本就不会有问题,剩下的就只有UI上的适配了

你可能感兴趣的:(iOS 国际化之常见问题分析)