如何编译ICU资源
如果只是测试修改后效果,执行步骤A即可;如果需要build后生效,则需要执行全部步骤
下面是KK的icu资源的路径为例子,如果是Android L请改为external/icu/icu4c/source/
A. (KK,L)需要建立临时目录,并且在临时目录中编译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
4. 将生成的external/icu4c/icuBuild/data/out/tmp/icudtxxl.dat push到手机测试
adb remount
adb push external/icu4c/icuBuild/data/out/tmp/ icuxxl.dat system/usr/icu/
adb reboot
KK:icudt51l.dat
Android L:icudt53l.dat
(M)无需建立临时目录
1.进入到$AOSP/external/icu/icu4c/source/目录下的
2.在该目录下执行 ./runConfigureICU Linux命令生成MAKE文件
3.执行make INCLUDE_UNI_CORE_DATA=1
B. COPY所需文件
(KK ,L)将第一步生成的external\icu4c\icubuild\data\out\tmp\icudtxxl.dat复制到external\icu4c\stubdata下并改名为icudtxxl-all.dat,覆盖原来的同名文件。
KK版本是icudt5l.dat和icudt5l-all.dat
注意:Android L是没有icudt53l-all.dat文件的,直接把icudt53l.dat拷贝过来替换原来的文件即可。
(M)将生成的icudt55l.dat 文件拷贝到对应目录下名利如下
cp external/icu/icu4c/source/data/out/tmp/icudt55l.dat $AOSP/external/icu/icu4c/source/stubdata
C. 重新编译工程
[QUESTION]
如何修改多语显示当地日期、月份、时间格式、语言名称、地区名称翻译?
[ANSWER]
这些字符串资源可能存在的位置为:
A)问题模块内部 res/中
B) framework/base/core/res/res/
C) external/icu4c/data
可按照顺序一步步查找。
对于上述A) B)类翻译的问题 ,直接修改资源即可;
C)类翻译问题,修改icu4c/data/下资源后,
需要按照对应版本 icu4c编译方法编译,生成新的.dat 文件后修改才可生效。
可参考《MocorDroid多国语言概述》文档,该文档可通过TAM获取。文档中有详细介绍android 各版本icu4c编译方法。
PS:对于 external/icu4c/data/目录下各文件存放的翻译内容目前总结如下,
(注:每个文件中的内容包括但不限于如下所示内容)
icu4c/data/lang:语言名称翻译
icu4c/data/locales:日期、月份、am、pm 名称翻译
icu4c/data/zone:时区名称翻译
icu4c/data/region:国家名称翻译
icu4c/data/misc/numberingSystems.txt:各国 0-9 数字翻译
icu4c/data/misc/ zoneinfo64.txt:时区信息,此内容需要与 bionic/libc/zoneinfo/tzdata 版本相同
icu4c/data/misc/ supplementalData.txt:星期开始周期