`
isiqi
  • 浏览: 16490457 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ADROID 架构解析 语言定制

阅读更多

1 语言定制

1.1 ICU4C

1.1.1 ICU4C简介

ICU4C(ICU for Chttp://site.icu-project.org/)ICUC/C++平台下的版本, ICU(International Component for Unicode)是基于"IBM公共许可证"的,与开源组织合作研究的, 用于支持软件国际化的开源项目。ICU4C提供了C/C++平台强大的国际化开发能力,软件开发者几乎可以使用ICU4C解决任何国际化的问题,根据各地的风俗和语言习惯,实现对数字、货币、时间、日期、和消息的格式化、解析,对字符串进行大小写转换、整理、搜索和排序等功能,必须一提的是,ICU4C提供了强大的BIDI算法,对阿拉伯语等BIDI语言提供了完善的支持。

  ICU首先是由Taligent公司开发的,Taligent公司现在被合并为IBM?公司全球化认证中心的Unicode研究组,然后ICUIBM和开源组织合作继续开发,开源组织给与了ICU极大的帮助。

  开始ICU只有Java平台的版本,后来这个平台下的ICU类被吸纳入SUN公司开发的JDK1.1,并在JDK以后的版本中不断改进。C++C平台下的ICU是由JAVA平台下的ICU移植过来的,移植过的版本被称为ICU4C,来支持这C/C++两个平台下的国际化应用。

ICU4CICU4C区别不大,但由于ICU4C是开源的,并且紧密跟进Unicode标准,ICU4C支持的Unicode标准总是最新的;同时,因为JAVA平台的ICU4J的发布需要和JDK绑定,ICU4C支持Unicode标准改变的速度要比ICU4J快的多。

1.1.2 ANDROID语言包

Android 使用的语言包就是ICU4C,位置:external/icu4cAndroid支持的语言有:

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.

Locale ITALIAN Locale constant for it.

Locale ITALY Locale constant for it_IT.

Locale JAPAN Locale constant for ja_JP.

Locale JAPANESE Locale constant for ja.

Locale KOREA Locale constant for ko_KR.

Locale KOREAN Locale constant for ko.

Locale PRC Locale constant for zh_CN.

Locale SIMPLIFIED_CHINESE Locale constant for zh_CN.

Locale TAIWAN Locale constant for zh_TW.

Locale TRADITIONAL_CHINESE Locale constant for zh_TW.

Locale UK Locale constant for en_GB.

Locale US Locale constant for en_US.

1.2 定制语言

PRODUCT_LOCALES字段里添加需要语言,如:

PRODUCT_LOCALES := en_US zh_CN

则系统里只有英语和汉语两种语言。

然后语言的选择处理是在external/icu4c/stubdata/Android.mk里进行的,如下:

config := $(word 1, \

$(if $(findstring ar,$(PRODUCT_LOCALES)),large) \

$(if $(findstring da,$(PRODUCT_LOCALES)),large) \

$(if $(findstring el,$(PRODUCT_LOCALES)),large) \

$(if $(findstring fi,$(PRODUCT_LOCALES)),large) \

$(if $(findstring he,$(PRODUCT_LOCALES)),large) \

$(if $(findstring hr,$(PRODUCT_LOCALES)),large) \

$(if $(findstring hu,$(PRODUCT_LOCALES)),large) \

$(if $(findstring id,$(PRODUCT_LOCALES)),large) \

$(if $(findstring ko,$(PRODUCT_LOCALES)),large) \

$(if $(findstring nb,$(PRODUCT_LOCALES)),large) \

$(if $(findstring pt,$(PRODUCT_LOCALES)),large) \

$(if $(findstring ro,$(PRODUCT_LOCALES)),large) \

$(if $(findstring ru,$(PRODUCT_LOCALES)),large) \

$(if $(findstring sk,$(PRODUCT_LOCALES)),large) \

$(if $(findstring sr,$(PRODUCT_LOCALES)),large) \

$(if $(findstring sv,$(PRODUCT_LOCALES)),large) \

$(if $(findstring th,$(PRODUCT_LOCALES)),large) \

$(if $(findstring tr,$(PRODUCT_LOCALES)),large) \

$(if $(findstring uk,$(PRODUCT_LOCALES)),large) \

$(if $(findstring zh,$(PRODUCT_LOCALES)),large) \

$(if $(findstring ja,$(PRODUCT_LOCALES)),us-japan) \

$(if $(findstring it,$(PRODUCT_LOCALES)),us-euro) \

$(if $(findstring pl,$(PRODUCT_LOCALES)),us-euro) \

$(if $(findstring cs,$(PRODUCT_LOCALES)),default) \

$(if $(findstring de,$(PRODUCT_LOCALES)),default) \

$(if $(findstring fr,$(PRODUCT_LOCALES)),default) \

$(if $(findstring nl,$(PRODUCT_LOCALES)),default) \

us)

1.3 默认语言

默认语言的选择实现是在build/core/Makefile里,从PRODUCT_LOCALES里选择第一个语言作为默认语言,如下:

define default-locale

$(subst _, , $(firstword $(1)))

endef

# Selects the first locale in the list given as the argument

# and returns the language (or the region)

define default-locale-language

$(word 2, 2, $(call default-locale, $(1)))

endef

define default-locale-region

$(word 3, 3, $(call default-locale, $(1)))

Endef

...

PRODUCT_DEFAULT_LANGUAGE="$(call default-locale-language,$(PRODUCT_LOCALES))" \

PRODUCT_DEFAULT_REGION="$(call default-locale-region,$(PRODUCT_LOCALES))" \

然后通过build/tool/buildinfo.sh文件将如下段写到文件build.prop,如下:

echo "ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"

echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"

所以,要改变默认语言用下面两种方法中的一种就行了:

1 PRODUCT_LOCALES字段里,将要选择的语言放在第一位,如:

PRODUCT_LOCALES := en_US zh_CN

默认语言是英语

2

persist.sys.language persist.sys.country 里指定语言,如下:

PRODUCT_PROPERTY_OVERRIDES := \

persist.sys.language=zh \

persist.sys.country=CN

分享到:
评论

相关推荐

    android架构解析

    Android架构解析是对Android系统核心设计和工作原理的深入探讨,主要关注的是Android 2.1版本。这个压缩包包含了一系列由sK_坤在CSDN博客上发表的文章,涵盖了Android架构的不同方面,如键盘、触摸屏、电池管理、...

    Android架构解析

    **Android架构解析** Android作为全球最广泛使用的移动操作系统,其架构设计对于开发者来说至关重要。本文将深入探讨Android的架构,帮助初学者理解其发展历程、主要组成部分以及如何进行系统级的开发。 1. **...

    android架构层次了解及涉及技术归纳

    在深入探讨Android架构层次之前,我们先要明白Android作为一个开源操作系统,其核心设计理念是模块化和层次化,这使得开发者能够更方便地理解和定制系统。以下是对Android系统架构的详细解析: 1. **Linux内核层**...

    ADROID2.1_架构解析

    此外,系统服务如电源管理、网络通信、媒体播放等都是Android架构不可或缺的部分。 总的来说,Android 2.1的架构设计强调了可扩展性和国际化,通过ICU4C库实现了对多种语言的支持,同时允许开发者根据需求定制系统...

    Android系统架构图及简单的系统架构介绍

    通过上述层次结构的解析可以看出,Android系统架构的设计既考虑了用户体验,又兼顾了开发者的需求。应用程序层面向最终用户,提供丰富的功能和服务;应用程序框架层则为开发者提供了灵活的开发环境;系统运行库层...

    图解Android系统架构.pdf

    Android系统架构是一个复杂而精细的设计,它...以上就是Android系统架构的详细解析,涵盖了从硬件交互到应用运行的整个流程。了解这些知识有助于开发者更好地理解和利用Android平台,构建高效、功能丰富的移动应用。

    安卓Android源码——android-times-square 安卓Android日历部件.zip

    "安卓"和"android"表明这与Google的Android操作系统有关,而"源码"则意味着我们可以访问到这个组件的原始编程代码,可以进行学习、修改或定制以满足特定需求。 【知识点详解】 1. **Android开发环境**:在Android...

    Android在中国的发展及就业前景解析

    他们需要掌握 Java 语言,理解 Android 系统架构的五个组成部分——Linux Kernel(内核)、Android Runtime(运行时)、Libraries(库)、Application Framework(应用框架)和 Applications(应用程序)。...

    王家林android

    7. **Android UI & View Subsystem 架构与设计解析** (AF107) 课程关注Android UI的设计原则和实现方式,帮助开发者创建高效的用户界面。 8. **Android ActivityManager 架构与设计解析** (AF108) 学习...

    Android-AndroidChromium谷歌浏览器安卓版源码项目

    【Android Chromium 谷歌浏览器安卓版源码项目】是一个开放源码的移动浏览器项目,基于Google的Chromium工程,为Android平台量身定制。这个项目不仅提供了Android设备上谷歌浏览器的基础架构,还展示了世界级的...

    基于Android教务信息管理系统.doc

    Android 平台的特点是开放、自由、灵活,可以让开发者自由地开发和定制应用程序。 Android 系统编程语言 Android 应用程序主要使用 Java 语言开发,但是也可以使用 C++ 语言开发。 Android 使用 Java 语言的优点...

    AndroidA8 资料

    Android A8在Material Design设计语言上进行了改进,提供了更多定制化选项,使界面更加美观且统一。开发者可以利用ConstraintLayout、RecyclerView等组件,实现动态、响应式的界面布局,提高用户体验。 五、性能...

    移动通信技术Android手机开发

    以下是对Android开发的详细解析: **第一章:ANDROID概述** 1.1 Android系统概述 Android是由Google领导的开放手机联盟开发的开源操作系统,基于Linux内核,主要设计用于移动设备,如智能手机和平板电脑。其开源...

    android平台概述 android开发教程 android开发ppt

    #### 二、Android平台架构解析 - **应用程序层(Applications)**: 包括一系列预装的核心应用程序,如联系人、日历、地图等。 - **应用程序框架(Application Framework)**: - **视图(Views)**: 提供了一系列用于...

    aarch64-linux-android-gdb.zip

    《深入解析aarch64架构下的Android GDB调试技术》 在移动设备和嵌入式系统领域,aarch64架构已经成为主流,特别是在Android平台上,它为开发者提供了强大的64位计算能力。与此同时,为了更好地调试和优化软件,理解...

    Android_system2.zip_andriod_android

    本文将深入探讨Android系统开发的各个方面,包括Android系统的整体概述、源代码开发环境的搭建以及系统架构的详细解析。 一、Android系统开发综述 Android系统是一个基于Linux内核的开源操作系统,主要用于移动...

Global site tag (gtag.js) - Google Analytics