Android产品定制多语言
16lz
2021-12-15
Android产品定制多语言
android产品支持的多语言非常丰富,在很多市场上销售的android产品的语言列表很长很长。在国内,一般都默认中文,还有许多其他语言,有事列表太长了,一旦客户在前面点错了,要再选回来,要翻啊翻的,下翻很久才到。中文一般都在最下面,这样很不方面。虽然有很多方法去绕这个问题,比如把中文放到最上面,这样也需要修改android默认的语言列表排序方法,几十种语言那样去改太累了,有时还得考虑国内外软件版本的差异,会很辛苦。那我们怎么把这个列表缩短呢,怎么定制呢?
要缩短这个列表,不就是少加几种语言嘛!没什么技术含量的,只是要找到合适的地方加。笔者使用的android4.0平台。在build\target\product\locales_full.mk文件中,有:
PRODUCT_LOCALES := cs_CZ da_DK de_AT de_CH de_DE de_LI el_GR en_AU en_CA en_GB en_NZ en_SG en_US es_ES fr_CA fr_CH fr_BE fr_FR it_CH it_IT ja_JP ko_KR nb_NO nl_BE nl_NL pl_PL pt_PT ru_RU sv_SE tr_TR zh_CN zh_HK zh_TW am_ET hi_IN$(call inherit-product, build/target/product/languages_full.mk)
玄机就在这里,我们把加以对PRODUCT_LOCALES值的控制就能控制到列表的程度。在这里把我们需要支持的语言加进去,当然这里加的语言关键字都是有约定的。如下:
Locale CANADA Locale constant for en_CA.Locale CANADA_FRENCH Locale constant for fr_CA.Locale CHINA Locale constant for zh_CN.Locale CHINESE Locale constant for zh.Locale ENGLISH Locale constant for en.Locale FRANCE Locale constant for fr_FR.Locale FRENCH Locale constant for fr.Locale GERMAN Locale constant for de.Locale GERMANY Locale constant for de_DE.………………………………..
在这里可以很方便的做产品的差异化,利用$(TARGET_PRODUCT)环境变量,用ifeq就可以,示例如下:
ifeq ($(TARGET_PRODUCT), crane_ed1021tsd)PRODUCT_LOCALES := en_US en_GB zh_CN zh_HK zh_TW else ifeq ($(TARGET_PRODUCT), crane_ed1021)PRODUCT_LOCALES := en_US en_GB zh_CN zh_HK zh_TWelse PRODUCT_LOCALES := cs_CZ da_DK de_AT de_CH de_DE de_LI el_GR en_AU en_CA en_GB en_NZ en_SG en_US es_ES fr_CA fr_CH fr_BE fr_FR it_CH it_IT ja_JP ko_KR nb_NO nl_BE nl_NL pl_PL pt_PT ru_RU sv_SE tr_TR zh_CN zh_HK zh_TW am_ET hi_IN$(call inherit-product, build/target/product/languages_full.mk) Endif
更多相关文章
- Android(安卓)SDK 1.5中文版 (Application基础—1)
- 打造Android的中文Siri语音助手(一)——小I机器人的接口
- Android、js&html5的基础资料&书籍
- Android(安卓)设计指南简体中文版
- 面对Android的衰落,路在何方?
- Android(安卓)UI 之TextView控件中可选择的属性列表,开发中经常用
- 一看就会Android之分组列表组件ExpandableListView的使用
- Android中文API(119)——TableRow
- Android(安卓)UI 之TextView控件中可选择的属性列表,开发中经常用