平台添加新语种
大致分为以下几个步骤:
1,字库问题
首先需要客户提供对应语言的字库,也就是一些.ttf文件,
比如,添加字库,
AmbikaUniN.ttf,
(1)在HAS_FONTS_SUPPORT=no 的情况下,需要到frameworks/base/data/fonts/fallback_fonts.xml修改
<familyset>
<family>
<fileset>
<file>AmbikaUniN.ttf</file>
</fileset>
</family>
</familyset>
(2)在HAS_FONTS_SUPPORT=yes的情况下,需要到frameworks/base/data/fonts/fallback_lovelyfonts.xml修改
<familyset>
<family>
<fileset>
<file>ArchanaUniN.ttf</file>
</fileset>
</family>
</familyset>
****需要注意的一点是添加相应的第三方字库,尽量写到最前边,防止有些字库将其覆盖掉。如果想快速验证是否将该字库内置到手机可以查看手机对应目录system/fonts下边是否有对应字库资源。
2,语言包问题
这些语言包也就是对应的字符串翻译,各个模块对应的都要有对应的String.xml翻译,这个需要将平台随便一种语言(尽量是默认的英语,因为这个语言的字串是比较全面的)导出来,得到
output.xls字串表格,提供给第三方去翻译,等翻译好之后平台导入即可。至于如何让将平台字串导出导入方法见下:
****
平台导入导出字串方法:
①确保vtrunk 平台级代码修改_详表里关于语言部分的修改已经完成。
②确保overlay_trans 下已经放入各种语言。dailybuild misc2\custom\lang_other.tgz 可以用于这个目的。
③确保要处理的语言已经规整化。现象就是strings.xml里没有msgid之类的关键字。可以在overlay_trans 下运行:
~/git/vanzo_team/songlixin/python_scripts/multilang/p1_translate_excel.py values-xx
然后提交vendor/translate_for_commit,然后先对overlay_trans 运行:git clean -fd;git co . ;再删除overlay_trans 下所有目标语言的文件,
再将translate_for_commit复制到overlay_trans
④输出excel: 到一个刚刚取出的项目的 overlay_trans 下运行:
~/git/vanzo_team/songlixin/python_scripts/multilang/p1_translate_excel.py values-xx
得到output.xls即为要给客户翻译的内容。
⑤导入 excel, 将翻译完的内容作为:input.xls 放到一个刚刚取出的项目的 overlay_trans 下,运行:
~/git/vanzo_team/songlixin/python_scripts/multilang/p1_translate_excel.py values-xx
即得到vendor/translate_from_commit, 供提交。
3,ICU资源
(1)
添加ICU资源
把对应的txt文件放到(android L 的路径是external\icu\icu4c\source\data),(android KK 路径是 external/icu4c/data)目 录
下coll、curr、lang、locales、region,zone这些子文件夹中。如
斯瓦希里语(坦桑尼亚)资源为sw.txt,s w_TZ.txt。
并修改这些目录下的resfiles.mk文件,coll目录下的是colfiles.mk。
如果这些目录下没有这些txt文件,可以在更高android版本或者在http://site.icu-project.org/ 网站下载。
(2)
修改编译配置文件
把上一步添加的
txt文件目录添加到下面文件中。
JB: external\icu4c\stubdata\icudt48l-default.txt
KK: external\icu4c\stubdata\icu-data-default.
例如:
coll/sw.res
curr/sw.res;
lang/sw.res、
region/sw.res
zone/sw.res
sw.res
(3)
编译ICU资源
1.
在
external/icu4c下新建临时目录icubuild,进入icubuild目录
$mkdir external/icu4c/icuBuild
$cd external/icu4c/icuBuild
2.
执行
icuConfigureRun Linux命令,生成make文件
$.././runConfigureICU Linux
3.
执行
make -j2命令,
$make -j2
$adb remount
$adb push external/icu4c/icuBuild/data/out/tmp/ icuxxl.dat system/usr/icu/
$adb reboot
*****需要注意的是一般语言的ICU资源都有,只要进去对应的文件下边确认一下即可,如果没有才经过上边的步骤增加ICU资源。
4,设置下边显示问题
如果想要在设置下边语言列表显示出该语言,则需要到framework/base/core/res/res目录下边添加相应的资源:
比如:values-gu-rIN 在这个目录下边添加两个文件donottranslate-cldr.xml donottranslate-maps.xml 这两个文件可以从别的语言下边对应目录下边找到。
*****请注意,添加的语言目录一定是values-gu-rIN,只添加values-gu是没有用的,此目录只是对一些相应模块的字串的翻译,所以必须要添加上values-gu-rIN。
5,配置相应语言
到这一步,所有的都已经准备好了。只需要在文件mediatek/config/vanzo82_cwet_kk/ProjectConfig.mk.lang 配置 MTK_PRODUCT_LOCALES= = gu_IN即可,这步完成之后,那就是整体编译一次项目,烧写验证。