- 浏览: 923002 次
- 性别:
- 来自: 上海
最新评论
-
liu149339750:
我勒个去,搜到你的博客了,关注!
Android make脚本简记 -
ihopethatwell:
楼主,这个修改时间有个问题,退出修改界面就不保存设置的时间了, ...
Android中如何修改系统时间(应用程序获得系统权限) -
flyar520:
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
Android横屏状态下返回到壁纸界面屏幕刷新问题 -
flyar520:
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
Android横屏状态下返回到壁纸界面屏幕刷新问题 -
taowayi:
推荐android一键反编译神器 apkdec
Android apk反编译
第一部分 多语言定制的机制
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++两个平台下的国际化应用。 ICU4J和ICU4C区别不大,但由于ICU4C是开源的,并且紧密跟进Unicode标准,ICU4C支持的Unicode标准总是最新的;同时,因为JAVA平台的ICU4J的发布需要和JDK绑定,ICU4C支持Unicode标准改变的速度要比ICU4J快的多。
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.
3、定制语言
定制语言在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)
4、默认语言
默认语言的选择实现是在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" 。
因此,要改变默认语言用下面两种方法中的一种就行了:
4.1、在PRODUCT_LOCALES字段里,将要选择的语言放在第一位,如: PRODUCT_LOCALES := en_US zh_CN 默认语言是英语;
4.2、在persist.sys.language 和persist.sys.country 里指定语言,如下: PRODUCT_PROPERTY_OVERRIDES :=
persist.sys.language=zh
persist.sys.country=CN build.prop文件的处理是在system/core/init/property_service.c。
第二部分 多语言定制的方法
1、多语言定制的实现步骤
1)进入build/target/product目录,在languages_full.mk或languages_small.mk文件中,修改PRODUCT_LOCALES的值,来定制语言,比如PRODUCT_LOCALES := en_US zh_CN zh_TW en_GB fr_FR it_IT de_DE es_ES;
2)相同目录下,修改full.mk文件的
$(call inherit-product, build/target/product/languages_small|full.mk)语句来切换所使用的文件;
3)重新编译即可。
2、设置默认语言的实现步骤
1)进入build/target/product目录,修改文件core.mk的PRODUCT_PROPERTY_OVERRIDES 值,例如,欲修改为默认中文,则增加
“ persist.sys.language=zh persist.sys.country=CN”,增加后的语句如PRODUCT_PROPERTY_OVERRIDES :=
ro.config.notification_sound=OnTheHunt.ogg
ro.config.alarm_alert=Alarm_Classic.ogg persist.sys.language=zh persist.sys.country=CN
2)重新编译即可。
3、与多语言定制相关的字段及其所在的文件
PREVIOUS_BUILD_CONFIG out/target/product/dream/previous_build_config.mk
NO_FALLBACK_FONT的定义 device/htc/dream-sapphire/BoardConfigCommon.mk
NO_FALLBACK_FONT的调用 frameworks/base/data/fonts/Android.mk
extra_locales CUSTOM_LOCALES nodpi mdpi hdpi build/core/product_config.mk
PRODUCT_PROPERTY_OVERRIDES build/target/product
build.prop out/target/product/generic/system
发表评论
-
Android systrace
2018-09-12 11:13 1032Understanding Systrace Caution: ... -
Android simpleperf
2018-09-12 11:02 1938Introduction of simpleperf What ... -
Android selinux安全策略
2016-06-21 17:16 4107基础知识 SEAndroid在架构和机制上与SELinux完 ... -
Android wifi captive portal 验证
2016-02-23 20:38 5190只要是国内的用户,基本上刷完5.0版本后如果没挂上V P N, ... -
Android CTS windows环境下测试
2015-09-08 11:36 6454Windows下CTS测试步骤 1.获 ... -
Android 之 日期时间 时区同步
2015-05-13 15:47 6366系统设置--日期和时间-- ... -
虚拟按键 振动效果
2015-05-12 11:50 2119[DESCRIPTION] Setting->情景模式- ... -
Android 签名信息读取
2014-08-22 17:32 1381public void getSingInfo() { ... -
Android UiAutomator 自动化测试
2014-07-04 17:39 9982一、一个BUG引发的问题 ... -
Android 多语言 多地区对应表
2014-05-13 17:09 2144Arabic, Egypt (ar_EG) Arabic, ... -
Android emulated sdcard
2013-08-12 21:46 6165如果要添加 emulated sdcard ,需要一下几个 ... -
#if、#ifdef、#if defined之间的区别
2013-05-17 15:19 58467#if的使用说明 #if的后面接的是表达式 #if ( ... -
Android 动态库死机调试方法
2013-03-05 13:54 4872android系统中调试Java非常容易,一般遇到错误都在 ... -
Android sqlite3 详解
2012-09-13 22:13 2403SQLite库包含一个名字叫做sqlite3的命令行,它可以让 ... -
Android 添加底层核心服务
2012-06-04 10:52 5806为 Android添加底层核 ... -
Android 之响应的系统设置的事件
2012-05-24 18:17 19701、Configuration类专门用于描述手机设备上的配置信 ... -
Android CRT Screen 电视效果
2012-05-17 11:12 2292Android 2.3 对关屏进行了优化,增加了一种类似于 ... -
android编译dex-preopt
2012-05-11 18:48 5435对于android2.3编译时候选择下面的情况,既可以对dex ... -
Android 移动终端camera 防偷*拍设置
2012-04-26 10:35 1891目前市面上的所有移动终端几乎都有camera应用,但andro ... -
Android 浏览器设置中的搜索引擎
2012-04-16 16:37 4676更改浏览器设置中的搜索引擎 1. 需求 将浏览器设 ...
相关推荐
总结起来,Android多语言切换主要涉及创建不同语言的values目录,定义字符串资源,更新用户偏好,以及在应用启动时动态调整系统语言。通过以上步骤,你的应用就能轻松实现多语言切换,满足全球用户的使用需求。在...
在Android应用开发中,实现多语言切换是一项基本且重要的功能,尤其对于面向全球用户的App来说。这个"Android 多语言切换demo"就是针对这一需求的一个示例项目,它可以帮助开发者理解并实现应用的语言本地化。下面...
在Android平台上进行多语言开发是为应用程序提供全球化支持的关键步骤,让应用能够适应不同地区用户的需求。本项目“安卓多语言开发demo”提供了一个实际的示例,帮助开发者理解和实践这一过程。它基于Android ...
以下是关于Android多语言切换的关键知识点及详细解释: 1. **资源文件夹结构**: 在Android应用中,资源文件按照语言和地区进行组织。例如,对于英文(美国),资源存放在`res/values/`目录下;对于法文(法国),...
在Android应用开发中,为了支持多种语言环境,...总之,通过结合`jxl.jar`库和适当的Java编程,我们可以创建一个自动化工具,从Excel文件生成Android应用的多语言`strings.xml`文件,从而简化多语言支持的维护工作。
在Android应用开发中,多语言支持、指纹登录和手势登录是提升用户体验和增强应用安全性的关键功能。下面将详细介绍这些知识点。 **一、多语言支持** 1. **资源文件夹结构**:Android支持多语言通过在`res`目录下...
在Android应用开发中,实现多语言切换是一项重要的功能,它能帮助应用覆盖更广泛的用户群体。本示例将深入探讨如何在Android应用中模仿微信,实现在apk内部进行多语言切换,无需重新安装应用。 首先,我们需要理解...
这个"Android多语言的demo"项目就是一个很好的起点,它展示了如何让应用程序能够显示英语、汉语和其它语言的"Hello, World!",以此来演示Android应用的国际化和本地化机制。 首先,我们要了解Android的国际化...
《Kotlin从零到精通Android开发》是一本专为Android开发者设计的教程,特别是针对那些对Kotlin编程语言感兴趣的初学者。Kotlin是Google在2017年正式推荐的Android开发首选语言,以其简洁、安全和易于学习的特性赢得...
参考http://download.csdn.net/detail/barryhappy/7176709这位大哥,将ActionBarActivity改成了Activity,减少某些童鞋可能不太会解决的报错。
在Android应用开发中,实现多语言切换是一项基本且重要的功能,尤其对于面向全球用户的App来说。这个"android app多语言切换demo"就是这样一个实例,它展示了如何在Android应用中轻松地实现在不同语言间的切换,并...
《Android应用程序开发(第三版)》是由王向辉、张国印、沈洁三位专家编著的教材,这本书深入浅出地介绍了Android平台上的应用开发技术。课件源程序是学习此书的重要辅助资料,提供了丰富的实例和练习,帮助读者更好...
6. **国际化和多语言支持**:如果输入法不仅仅支持拼音,还可能涉及到其他方言或语言的处理,需要对不同语言的输入规则有所了解。 7. **Android Studio和Gradle**:作为主要的开发工具和构建系统,开发者需要熟悉...
Android开发主要使用Java或Kotlin语言,通过Android Studio集成开发环境进行。 在Android开发中,你需要了解以下几个关键知识点: 1. **Android SDK**:软件开发工具包,包含了开发Android应用所需的各种工具、库...
在Android应用开发中,支持多语言是提升...借助Android Studio和第三方工具,我们可以更高效地进行多语言开发与维护。对于"LanguageTest"项目,其源码将提供一个实际操作的例子,帮助我们更好地理解和应用这些概念。
在Android开发中,为了使应用能够适应不同地区的用户,我们需要为应用添加多语言支持。本示例代码将向你展示如何在Android项目中实现这一功能。以下是对标题和描述中的知识点进行的详细解释: 1. **资源文件夹的...
Stage3_Lesson2Android的多线程与异步任务 Stage3_Lesson3高级商业界面开发 Stage3_Lesson4Android多媒体的世界 Stage3_Lesson5NDK初步 Stage3_Lesson6电话与短信应用 Stage4_Lesson1项目沟通的语言是UML Stage4_...
总结,实现Android多语言支持涉及多个层面,包括资源的组织、语言的切换机制以及处理配置变更。通过合理的设计和工具辅助,可以构建出适应全球用户的高质量应用。在实际开发中,应遵循最佳实践,提高用户体验,同时...
AndroidDemo是一个基于Java开发的Android项目,包含718个文件,其中包括379个XML文件、268个Java源文件、24...该项目为用户提供了一个全面、高效的Android开发解决方案,支持多平台浏览,具备良好的用户体验和实用性。