MTK 6.0
之前做一款桌面广告机项目时,有一个修改默认语言的需求,查找FAQ发现MTK有介绍怎么修改,如下:
默认开机语言设置
如果想把某种语言设置为开机默认语言,只需把这个语言的代码放到(Android L PRODUCT_LOCALES后面第一个即可),(Android KK MTK_PRODUCT_LOCALES的第一个即可)。在源码里搜索PRODUCT_LOCALES,如:
PRODUCT_LOCALES := en_US zh_CN fr_FR it_IT es_ES de_DE nl_NL cs_CZ pl_PL
但是会发现好多个.mk文件下都有PRODUCT_LOCALES,那么我们修改那个文件才会有效呢?
FAQ04326 如何打开语言支持计划中的语言中有提到怎么添加支持的语言,如下:
ANDROID L
MTK_PRODUCT_LOCALED这个宏已经没用了,使用的是alps\device\公司名字\项目名称\项目名字.mk中的PRODUCT_LOCALES请添加语言的时候在PRODUCT_LOCALES中添加。
例如我司自己内部的项目代号aubest52那么添加语言路径是(device\mediatek\aubest52\full_aubest52.mk中的PRODUCT_LOCALES后面添加语言)
但是我并没有在device\mediatek目录下找到,例如我修改的deivce\testdd\testdd6737m_35g_m0\full_testdd6737m_35g_m0.mk下的PRODUCT_LOCALES,为什么是这个full_testdd6737m_35g_m0.mk下的呢?因为我编译的时候选择的是这个,就是lunch命令之后选中的。
问题又来了,PRODUCT_LOCALES后面一连串的语言,系统又是怎么选择第一个作为默认开机语言的呢?
其实在out目录下的system/build.prop文件中可以看到ro.product.locale=en-US,这个属性又在buildinfo.sh文件中定义
echo "ro.product.locale=$PRODUCT_DEFAULT_LOCALE"
关于这个PRODUCT_DEFAULT_LOCALE又在build/core/Makefile下找到
PRODUCT_DEFAULT_LOCALE="$(call get-default-product-locale,$(PRODUCT_LOCALES))" \
继续查找get-default-product-locale
#Accepts a whitespace separated list of product locales such as#(en_US en_AU en_GB...) and returns the first locale in the list with#underscores replaced with hyphens. In the example above, this will#return "en-US".define get-default-product-locale$(strip $(subst _,-, $(firstword $(1))))endef
在这里,可以看到是选择第一个。
系统默认语言是英语,如果你要修改为中文,只需把PRODUCT_LOCALES := en_US zh_CN fr_FR it_IT es_ES de_DE nl_NL cs_CZ pl_PL
中zh_CN移到最前就可以了
或者你直接将build.sh中echo "ro.product.locale=zh-CN"
改为你需要的语言。