Android系统原版默认的语言为英文,而我们定制系统可能需要用户一开机就是简体中文。
我们可以通过修改系统属性来达到默认语言的作用。
这里有两种方法,需要的可以借鉴下:
1、在init.rc或者在其他的开机初始化文件如:default.prop中加入如下设置系统属性的代码:
[persist.sys.language]: [zh]
[persist.sys.country]: [CN]
[persist.sys.localevar]: []
[persist.sys.timezone]: [Asia/Shanghai]
[ro.product.locale.language]: [zh]
[ro.product.locale.region]: [CN]
2、编译的时候,通过指明编译参数为简体中文,这样编译传统就会编译出来的系统属性文件,在
系统初始化的时候将会把上面的属性给进行正确的初始化,例如:
make PRODUCT-machineID-eng-zh_CN
其他相关资料:
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
PRODUCT_LOCALES
环境变量在什么地方,最后在
build/target/product/sdk.mk
里面找到了这个变量,然后修改里面的
PRODUCT_LOCALES
变量
PRODUCT_LOCALES := \
en_US \
zh_CN \
zh_TW
编译,并烧录文件,
发现系统语言版本还是没变化。再认真查看里面的文件,还是找不到
最后在build/target/product/core.mk
把如下
PRODUCT_LOCALES
:= \
en_US \
zh_CN \
zh_TW
添加到这里,重新编译,烧录发现成功了~!不知道为什么,哎!!!
分享到:
相关推荐
在`res`目录下,你需要为每种语言创建一个对应的`values`文件夹,例如,对于英文(美国):`values-en-rUS`,对于简体中文:`values-zh-rCN`。在这些文件夹内,你需要创建一个名为`strings.xml`的文件,用于存储...
在Android平台上,开发人员经常需要处理简体中文与繁体中文之间的转换问题,特别是在本地化应用或者处理用户输入时。"Android 简繁体互转库"就是为了满足这一需求而设计的,它提供了一个方便的API接口,使得开发者...
若要更改其他语言,只需将`Locale`对象替换为你需要的语言代码,如`Locale.CHINESE`(简体中文)或`Locale.FRANCE`(法语)。 四、合成语音 调用`speak()`方法来合成并播放语音。例如,读出字符串"Hello, world!":...
4. **初始化语言** 应用启动时,我们需要根据用户的偏好加载相应的语言。这可以在`onCreate()`方法中完成: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate...
不过,这种方法较为复杂,需要初始化TextToSpeech对象,设置语言,然后调用`speak()`方法,通过监听`onTextToSpeech()`回调获取拼音。 在实际应用中,中文转拼音可能会遇到的问题包括: - **多音字处理**:一个...
为了使应用程序在启动时根据用户设备的语言设置加载正确的语言,我们需要在`Application`类或者`BaseActivity`中进行初始化操作,读取系统的默认语言并加载相应的资源。 此外,考虑到Android系统可能需要一段时间...
// 识别语言,中文简体 // 开始录音 recognizer.startListening(new RecognizerListener() { @Override public void onResult(RecognizerResult result) { String text = result.getResultStr(); // 获取识别...
throw new RuntimeException("无法初始化转换器", e); } } public static String convertToSimplifiedChinese(String traditionalChinese) { // 调用转换方法,这里假设有一个名为convert的静态方法 return ...
这里,我们指定了训练数据文件所在的目录(`context.getFilesDir().getAbsolutePath() + "/tessdata"`)以及我们要识别的语言("chi_sim"代表简体中文)。 有了初始化好的OCR引擎,我们可以加载身份证图片并进行...
这些信息通常在`system/core/init`目录下的`init.cpp`文件中初始化,通过读取设备的配置文件来确定。中国地区的设置可能会包含简体中文和繁体中文,并且可能关联到相应的拼音和字体资源。 3. **国家代码和语言包**...
Android PDFView库本身是用Java编写的,与Android兼容性良好,因此它可以支持所有Android支持的语言环境,包括简体中文、繁体中文等。 9. **版本更新** `Android-Pdf-Viewer-Library-master`可能指的是GitHub上的...
10. 继续设置系统语言为中文(简体),滚动列表选择相应选项。 11. 一旦设置完毕,模拟器的界面就会变成中文,你可以开始在模拟器上进行各种操作和测试。 总之,安装Android SDK和配置模拟器是一个相对复杂的过程,...
2. 初始化:创建Tesseract实例,并设置识别的语言,例如`tesseract.init(context, "chi_sim");`(用于识别简体中文)。 3. 扫描图像:捕获图像后,使用Tesseract的`setPageSegMode`方法选择合适的文字布局分析模式,...
例如,设置为简体中文: ```java tts.setLanguage(Locale.CHINA); ``` 3. **合成文本**:使用`speak(String text, int queueMode, Bundle params, String utteranceId)`方法将文本转化为语音。`text`是待读出的文本...
3. 设置语言:可以设置TTS引擎的语言,如简体中文、英文等,以适应不同用户的需求。 4. 朗读文本:调用`speak()`方法,传入需要朗读的文本和一些参数,如发音速度、语调等。 5. 管理TTS:在不使用TTS时,记得释放...
下面将详细阐述Android国际化语言的基本概念、实现方法以及相关知识点。 1. **基本概念**: - **资源文件**:Android应用的字符串、图片、布局等资源通常存储在res目录下,针对不同语言,我们需要创建对应的资源...
可以使用`setLanguage()`方法设定引擎的发音语言,如` Locale.US`代表美式英语,` Locale.CHINA`代表简体中文等。 4. **合成并播放文本**:使用`speak()`方法将文本转化为语音并播放。该方法接受三个参数:要合成的...
例如,`eng.traineddata`代表英文识别数据,`chi_sim.traineddata`则对应简体中文。这些文件包含字形、词汇和语言特定的统计信息,使Tesseract能够准确地识别图像中的文字。 集成Tesseract到Android应用中,首先...
7. **多语言支持**:为了实现兼容性多语言设计,你需要创建res/values/strings.xml文件的多个版本,如res/values-zh-rCN/strings.xml(中文简体),res/values-en/strings.xml(英文)。在这些文件中,为应用的所有...
考虑到全球用户的使用习惯,`android-times-square`支持多语言环境,包括但不限于英语、简体中文、繁体中文等。只需调整应用的语言设置,日历控件就能自动适配。 ### 5. 事件监听与回调 为了实现与应用逻辑的交互...