ADROID 2.1 架构解析 1 语言定制

2024-01-02 18:58

本文主要是介绍ADROID 2.1 架构解析 1 语言定制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 语言定制

1.1 ICU4C

1.1.1 ICU4C简介

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

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

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

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

1.1.2 ANDROID语言包

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

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.languagepersist.sys.country 里指定语言,如下:

PRODUCT_PROPERTY_OVERRIDES := / 

persist.sys.language=zh /

persist.sys.country=CN

build.prop文件的处理是在system/core/init/property_service.c。

这篇关于ADROID 2.1 架构解析 1 语言定制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/563353

相关文章

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步