在mediatek/config/${Project}/ProjectConfig.mk文件中找到宏 MTK_PRODUCT_LOCALES,添加要新加的语言代码,例如缅甸语是my_MM;
由于my_MM的ICU资源在4.4.1版本中没有,但是在Android4.0的4.6版本中是有的,所以可以从Android4.0上复制对应的txt文件到对应的目录下;
例如coll目录,添加my.txt和my_MM.txt文件后如下图:
这几个目录都复制过来后,在data目录下搜索my,应该会有以下这样的结果:
这就表示已经都复制过来了
GB上ICU资源编译到最终的工程中的是icudt44l-large.dat,所以配置文件在icudt44l-large.txt文件里,找到这个文件,往里面添加缅甸语的内容。
icudt44l-large.txt文件位置
打开这个文件,然后根据复制到data目录下的对应文件,往里面添加对应内容,就是my.res和my_MM.res这样的内容,可以参考下面几个截图:
修改ICU配置文件
这也是修改ICU资源的编译配置,往里面加入my的内容到large.
在GB上编译ICU资源的过程比较繁琐,具体流程请参考另一份文档“GB编译ICU流程”。
需要注意的是,需要按照那份文档中完整执行全部步骤,否则new和remake工程的时候ICU资源仍然没有修改;
这部分的详细流程可以参考另一份文档,“如何添加新的字库”,这里给出简要步骤
如下图所示,直接将ttf文件放到这个目录下面。
复制ttf文件
修改frameworks/base/data/fonts/Android.mk文件:
copy_from := \
DroidSansMono.ttf \
my.ttf \
……
如下图,把my.ttf添加到gFBNames中:
在frameworks/base/core/res/res/下新增加一个values-my-rMM的文件夹,新建一个strings.xml文件,把frameworks翻译内容放在这个文件内:
对每个app做翻译,在每个app对应的res目录下面建立values-my-rMM文件夹,并将翻译好的strings.xml放在里面;
使用new或者remake命令重新Build,如果以上步骤都成功了,那么应该会看到语言选择中多了一个缅甸语选项.
1)、ICU资源添加完成且编译成功,字库也添加了,setting语言列表中找不到新增语言选项。
原因可能是下面2种:
(A) 在MTK_PRODUCT_LOCALES(mediatek/config/${Project}/ProjectConfig.mk)处没添加新语言的代码。语言代码格式为xx_YY其中xx是语言代码(ISO_639-1),YY是使用该语言的国家或者地区代码(ISO_3166-1)。比如缅甸语my_MM。
(B) Frameworks/base/core/res/res下没有新增语言字串的翻译,应新增对应语言的翻译,如values-my,values-my-rMM.测试时可以把其他语言的字串文件拷贝过来验证。
2)、 添加新语言后,setting语言列表中新增语言选项显示□ □ 。
原因:没有添加对应的字库或者字库没有添加成功。添加步骤可参考:FAQ04513
3)、添加新语言后,在语言列表中选定该语言后,界面显示却是英文。
原因:app的res下没有添加该语言的字串。
4)、 其他需要注意的问题。
(1) 如果所添加的语言在ICU的各个版本里都没有,那就需要按照既定的格式自行添加这些资源(可以找到与要添加的语言和地区最相近的,复制后进行修改,比如添加粤语,粤语与zh_CN就是很相近的),有关icu资源可参考FAQ04553
(2) 如果在对应的目录中(一般是external\icu4c\data\的coll、curr等)添加了txt资源,那么就需要修改对应的mk文件,否则执行编译过程是不会将新加的资源编译到dat文件中的.
(3) 修改该文件(external/skia/src/ports/SKFontHost-android.app)的时候,字体添加是对顺序敏感的,也就是放在前面的字体在系统加载的时候会优先进行判断.如果出现添加了改字体文件,但是Settings菜单中显示出空行的情况,请在此处把对应的字库文件的位置放到前面.
(4) 新增平台不支持的语言时,虽说可以按照步骤添加成功,但并不保证此语言可以正常使用。首先需要翻译所有framework和app下的字串资源,其次看该语言的字符是否完全正确的显示(一般是字库的问题,需要向第三方购买),对于复杂语言还存在字符变形的问题(如蒙古语,藏语,维语等)。再次需要考虑是平台是否支持这种语言的输入法,如果不支持,还需自己添加等。
(5) 需要添加或者打开一种语言时只需要在MTK_PRODUCT_LOCALES处添加该语言的代码以及使用国家代码就行,添加规则是XX_YY(参考常见问题1->A),如中文简体语正确的是zh_CN,不应添加zh或者CN。