CN104021026A - 一种基于Android系统的语言添加方法 - Google Patents
一种基于Android系统的语言添加方法 Download PDFInfo
- Publication number
- CN104021026A CN104021026A CN201410271746.6A CN201410271746A CN104021026A CN 104021026 A CN104021026 A CN 104021026A CN 201410271746 A CN201410271746 A CN 201410271746A CN 104021026 A CN104021026 A CN 104021026A
- Authority
- CN
- China
- Prior art keywords
- language
- file
- android system
- language form
- icu4c
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明公开一种基于Android系统的语言添加方法,该方法简单,便捷,易于实现,使得Android平台可以很好地支持维语等其它小语种。如此一来,Android手机可以很好地在使用维语等小语种的用户人群中推广,使得Android手机真正实现支持所有语言的国际化,既增加了公司的客户群体,也很大程度上推动了Android平台的国际化。
Description
技术领域
本发明涉及语言添加技术领域,尤其涉及一种基于Android系统的语言添加方法。
背景技术
Android系统是一款支持多国语言的手机操作系统,支持多国语言的特性使得Android系统在各地区间传播没有了障碍。但是,目前使用颇广的Android4.2“果冻豆”系统并不支持维语等其它小语种的显示,致使使用维语的用户无法使用Android手机,造成了Android手机市场的地域范围无法扩展到维语区域,使得Android手机无法在使用维语的用户中推广,不利于Android系统在全球范围内各区域的推广。
发明内容
本发明的目的在于通过一种基于Android系统的语言添加方法,来解决以上背景技术部分提到的问题。
为达此目的,本发明采用以下技术方案:
一种基于Android系统的语言添加方法,包括如下步骤:
A、检查ICU4C资源是否支持待添加的语言类型,若不支持,则执行步骤B,若支持,则执行步骤C;
B、添加与所述待添加的语言类型对应的ICU4C资源;
C、编译资源,生成.bat文件;
D、获取支持所述待添加的语言类型并可用于Android系统的语言资源包;
E、添加所述待添加的语言类型的字库;
F、将所述语言类型的字库配置到Android系统中;
G、在Framework层和各应用中添加所述语言类型的翻译字串;
H、Android系统配置所述语言类型,编译工程获得支持该语言类型的Android软件。
特别地,所述步骤C具体包括:在external/ICU4C下建立临时目录icuBuild,进入icuBuild目录;执行icuConfigureRun Linux命令,生成make文件.././runConfigureICU Linux;执行make–j2命令,生成dat文件make–j2;复制external/ICU4C/icuBuild/data/out/tmp/icudt48l.dat文件到stubdata下,并改名icudt48l-all.dat,覆盖原有的同名文件;重新配置环境变量,为下一步执行脚本做准备;进入icu4c/stubdata,执行脚本,重新生成.dat文件,其中,生成的icudt48l-default.dat即为被Android系统使用的添加了所述语言类型资源的文件。
特别地,所述步骤G具体包括:对frameworks/base/core/res/res做翻译,在此文件夹中添加values-ug-rCN文件夹,并把翻译好的所述语言类型的字串放到此文件夹下;对每个app做翻译,在每个app对应的res目录下建立values-ug-rCN文件夹,并把翻译好的所述语言类型的字串放到此文件夹下。
特别地,所述步骤H具体包括:在make文件的PRODUCT_LOCALES字段里,添加所述待添加的语言类型,编译工程获得支持该语言类型的Android软件。
特别地,所述待添加的语言类型包括维语。
本发明提出的基于Android系统的语言添加方法简单,便捷,易于实现,使得Android平台可以很好地支持维语等其它小语种。如此一来,Android手机可以很好地在使用维语等小语种的用户人群中推广,使得Android手机真正实现支持所有语言的国际化,既增加了公司的客户群体,也很大程度上推动了Android平台的国际化。
附图说明
图1为本发明实施例提供的基于Android系统的语言添加方法流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
请参照图1所示,图1为本发明实施例提供的基于Android系统的语言添加方法流程图。
本实施例中基于Android系统的语言添加方法具体包括如下步骤:
步骤S101、检查ICU4C资源是否支持待添加的语言类型,若不支持,则执行步骤S102,若支持,则执行步骤S103。
ICU4C提供了C/C++平台强大的国际化开发能力,几乎可以使用帮助解决任何国际化的问题。可以根据各地的风俗和语言习惯,实现对数字、货币、时间、日期、和消息的格式化、解析,对字符串进行大小写转换、整理、搜索和排序等功能,必须一提的是,ICU4C使用了强大的BIDI算法,对阿拉伯语、维语等BIDI语言提供了完善的支持。Android平台就是使用ICU4C来实现多国语言中时间、日期等的显示问题的。
步骤S103、添加与所述待添加的语言类型对应的ICU4C资源。
以所述待添加的语言类型为维语为例。目前ICU4C中并不支持维语,所以首先要对ICU4C添加维语资源的,使得它支持维语显示。
Android系统中,ICU4C资源存放位置是external\ICU4C。ICU4C文件夹下data文件夹中存放多国语言的资源。参照阿拉伯语资源(ar.txt ar_AE.txt)添加维语资源(ug.txt ug_CN.txt)。在data\coll\resfiles.mk中配置维语,使得维语资源(ug.txt ug_CN.txt)可以被编译成res资源文件。lang、locales、region、zone文件夹下按照相同方法,添加维语资源。ICU4C\stubdata\icudt48l-default.txt中添加维语资源。填写内存根据data下对应的维语资源文件。完成以上操作后,ICU4C中维语资源的添加与配置工作已经完成。但这样的资源并不能被Android系统使用。Android系统使用的ICU4C资源需要编译进icudt48l-default.dat才可以被Android识别并使用。
步骤S104、编译资源,生成.bat文件。以所述待添加的语言类型为维语为例,具体步骤如下:
一、在external/ICU4C下建立临时目录icuBuild,进入icuBuild目录
mkdir external/icu4c/icuBuild
cd external/icu4c/icuBuild
二、执行icuConfigureRun Linux命令,生成make文件
.././runConfigureICU Linux
三、执行make–j2命令,生成dat文件
make–j2
四、复制external/ICU4C/icuBuild/data/out/tmp/icudt48l.dat文件到stubdata下,并改名icudt48l-all.dat,覆盖原有的同名文件。
五、重新配置环境变量,为下一步执行脚本做准备。
export
ANDROID_EABI_TOOLCHAIN=/XXXX/ProjectPath/prebuilts/gcc/linux-x86
/arm/arm-eabi-4.6/bin
export
LD_LIBRARY_PATH=/XXXX/ProjectPath/prebuilts/misc/linux-x86_64/ic
u-4.8
export ANDROID_BUILD_TOP=/XXXX/ProjectPath
六、进入icu4c/stubdata,执行脚本,重新生成.dat文件。
./icu_dat_generator.py
其中,生成的icudt48l-default.dat即为被Android系统使用的添加了维语资源的文件。另外,以上操作均在在linux环境下执行。
步骤S105、获取支持所述待添加的语言类型并可用于Android系统的语言资源包。
步骤S106、添加所述待添加的语言类型的字库。具体步骤如下:
1、复制维语字库文件到frameworks/base/data/fonts下,将ug.ttf复制到这个目录下。
2、在frameworks\base\data\font\fallback_fonts.xml中添加
3、在frameworks\base\data\font\fonts.mk中添加
PRODUCT_COPY_FILES+=\
frameworks/base/data/fonts/ug.ttf:$(TARGET_COPY_OUT_SYSTEM)/fonts/ug.ttf
步骤S107、将所述语言类型的字库配置到Android系统中。
步骤S108、在Framework层和各应用中添加所述语言类型的翻译字串。以所述待添加的语言类型为维语为例。
对frameworks/base/core/res/res做翻译,在此文件夹中添加values-ug-rCN文件夹,并把翻译好的维语字串放到此文件夹下;对每个app做翻译,在每个app对应的res目录下建立values-ug-rCN文件夹,并把翻译好的维语字串放到此文件夹下。
步骤S109、Android系统配置所述语言类型,编译工程获得支持该语言类型的Android软件。
在make文件的PRODUCT_LOCALES字段里,添加维语,如:PRODUCT_LOCALES:=ar_CN……。重新编译工程,新编译出的工程则可以正常显示维语。维语在Android手机端是以适量字体显示,这种显示方式后文中将做详细说明。
下面以所述待添加的语言类型为维语为例,对与本发明相关的几个点进行扼要阐述。
一、ICU4C支持维语的BIDI算法
维语同阿拉伯语等语言类似,是自右向左显示的语言。这与一般自左向右显示的语言不通,为使得两类语言都能正常显示,BIDI算法-双向字符集语言算法,是最合适的方法。
维语等语言的最大特点就是允许双向文本—也就是说,他们的本土语言书写顺序是从右往左,而其中的英文单词或商标符号从左向右显示。BiDi算法是为了在计算机世界里实现BiDi效果的而产生的。BiDi算法用于指定文本的文字方向。BiDi文本是指通常在一段文本中包含两种文字方向,水平LTR方向(从左到右)的文本中包含RTL方向(从右到左)的文本,或是RTL方向的文本中包含LTR方向的文本,主方向称为全局方向。逻辑顺序和视觉顺序是BiDi中两个重要的概念,逻辑顺序指的是人们阅读和从键盘上输入的文字顺序,文本在内存里也是以逻辑顺序存储的。视觉顺序则是文本在屏幕或是打印机中显示的顺序。在输入的时候采用逻辑顺序,由于全局方向是LTR,因此以LTR方向将English输入和显示之后,输入ARABIC时会以RTL方向对文本进行显示,即CIBARA,但是会以ARABIC的顺序进行存储。输入text时又会以LTR方式进行输入和显示。在显示或打印文本的时候,需要对文本进行重排序,将逻辑顺序转换为视觉顺序,某些文本以LTR方向显示,某些文本以RTL方向显示。Unicode标准规定了一种从逻辑顺序到视觉顺序的转换算法,通常以整个段落作为输入,屏幕的换行也会影响BiDi算法输出文本的实际显示位置。重排序算法的输出也用于光标的移动和选择。除了显示文本以外,Unicode对于计算机内部文本的处理,如拷贝,排序,查找等,都是以逻辑顺序处理的。这些操作依赖于字符匹配的顺序,因此必须以统一的顺序进行存储和处理。有的遗留系统为了避免在显示的时候对文本重排序,以视觉顺序对文本进行存储,在跟这些系统交换数据的时候,需要将数据从视觉顺序转换为逻辑顺序或是从逻辑顺序转换为视觉顺序。这种不是为了显示目的的转换称为存储布局转换(Storage Layout transformation)。
二、矢量字体维语显示
矢量字体(Vector font)中每一个字形是通过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,字体的渲染引擎通过读取这些数学矢量,然后进行一定的数学运算来进行渲染。这类字体的优点是字体实际尺寸可以任意缩放而不变形、变色。
维语采用的是TrueType,这与平台无关,具有很好地跨平台性。TrueType则使用二次贝塞尔曲线来描述字形,描述一个圆形时,二次贝塞尔曲线只需要8个关键点和7段二次曲线。TrueType的字体方程的相对简单,在屏幕上渲染的时候,花费的时间较少,使得渲染快,边缘光滑。
在矢量字库中,每个维文都是以128X128点阵制成矢量数据。每个维文的矢量数据都由一指针指向,指针区在每个维文字库文件的开头0xBB3E字节。每个维文矢量数据指针占6个字节,其格式为:前4个字节为维文的矢量数据在文件中的偏移,后2个字节为维文的矢量数据的长度。维文指针在指针区的偏移由公式计算:pos=((qu-16)*94+wei-1)*6。注:qu--区号。wei--位号。维文的矢量数据格式为:控制码+坐标值。共有十种控制码,以下是控制码的含义:(1)若控制码第7,6位为11,清除码,结束当前笔划,将第一个坐标与当前坐标连线;建立新笔划(X,Y)各占7位,由控制码的第5位开始。(2)若控制码小于等于0x40,之后控制码大小个字节为坐标值,每个坐标占一个字节,共有控制码大小个坐标,(X,Y)坐标各占4位,其自的最高位为符号位。(3)若控制码的高4位等于4,之后控制码的低4位大小个字节为坐标值,每个。坐标占一个字节,共有控制码大小个坐标,(X,Y)坐标各占4位,X为正,Y为正。(4)若控制码的高4位等于5,之后控制码的低4位大小个字节为坐标值,每个坐标占一个字节,共有控制码大小个坐标,(X,Y)坐标各占4位,X为负,Y为正。(5)若控制码的高4位等于6,之后控制码的低4位大小个字节为坐标值,每个坐标占一个字节,共有控制码大小个坐标,(X,Y)坐标各占4位,X为负,Y为负。(6)若控制码的高4位等于7,之后控制码的低4位大小个字节为坐标值,每个坐标占一个字节,共有控制码大小个坐标,(X,Y)坐标各占4位,X为正,Y为负。(7)若控制码等于0x80,其后1字节为Y坐标值,最高位为符号位,X坐标不变。(8)若控制码等于0x90,其后1字节为X坐标值,最高位为符号位,Y坐标不变。(9)若控制码的高4位等于8,其后1字节为Y坐标值,控制码的低4位值为X坐标值,X坐标各占4位,最高位为符号位,Y坐标各占8位,最高位为符号位。(10)若控制码的高4位等于9,其后1字节为X坐标值,控制码的低4位值为Y坐标值,Y坐标各占4位,最高位为符号位,X坐标各占8位,最高位为符号位。
本发明的技术方案简单,便捷,易于实现,使得Android平台可以很好地支持维语等其它小语种。如此一来,Android手机可以很好地在使用维语等小语种的用户人群中推广,使得Android手机真正实现支持所有语言的国际化,既增加了公司的客户群体,也很大程度上推动了Android平台的国际化。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (5)
1.一种基于Android系统的语言添加方法,其特征在于,包括如下步骤:
A、检查ICU4C资源是否支持待添加的语言类型,若不支持,则执行步骤B,若支持,则执行步骤C;
B、添加与所述待添加的语言类型对应的ICU4C资源;
C、编译资源,生成.bat文件;
D、获取支持所述待添加的语言类型并可用于Android系统的语言资源包;
E、添加所述待添加的语言类型的字库;
F、将所述语言类型的字库配置到Android系统中;
G、在Framework层和各应用中添加所述语言类型的翻译字串;
H、Android系统配置所述语言类型,编译工程获得支持该语言类型的Android软件。
2.根据权利要求1所述基于Android系统的语言添加方法,其特征在于,所述步骤C具体包括:在external/ICU4C下建立临时目录icuBuild,进入icuBuild目录;执行icuConfigureRun Linux命令,生成make文件.././runConfigureICU Linux;执行make–j2命令,生成dat文件make–j2;复制external/ICU4C/icuBuild/data/out/tmp/icudt48l.dat文件到stubdata下,并改名icudt48l-all.dat,覆盖原有的同名文件;重新配置环境变量,为下一步执行脚本做准备;进入icu4c/stubdata,执行脚本,重新生成.dat文件,其中,生成的icudt48l-default.dat即为被Android系统使用的添加了所述语言类型资源的文件。
3.根据权利要求2所述基于Android系统的语言添加方法,其特征在于,所述步骤G具体包括:对frameworks/base/core/res/res做翻译,在此文件夹中添加values-ug-rCN文件夹,并把翻译好的所述语言类型的字串放到此文件夹下;对每个app做翻译,在每个app对应的res目录下建立values-ug-rCN文件夹,并把翻译好的所述语言类型的字串放到此文件夹下。
4.根据权利要求3所述基于Android系统的语言添加方法,其特征在于,所述步骤H具体包括:在make文件的PRODUCT_LOCALES字段里,添加所述待添加的语言类型,编译工程获得支持该语言类型的Android软件。
5.根据权利要求1至4之一所述基于Android系统的语言添加方法,其特征在于,所述待添加的语言类型包括维语。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410271746.6A CN104021026A (zh) | 2014-06-17 | 2014-06-17 | 一种基于Android系统的语言添加方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410271746.6A CN104021026A (zh) | 2014-06-17 | 2014-06-17 | 一种基于Android系统的语言添加方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104021026A true CN104021026A (zh) | 2014-09-03 |
Family
ID=51437798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410271746.6A Pending CN104021026A (zh) | 2014-06-17 | 2014-06-17 | 一种基于Android系统的语言添加方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104021026A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005472A (zh) * | 2015-06-25 | 2015-10-28 | 中通服公众信息产业股份有限公司 | 一种web上显示维吾尔文字的方法及装置 |
CN107463386A (zh) * | 2017-08-31 | 2017-12-12 | 四川长虹电器股份有限公司 | 一种管理android应用多国语言的方法 |
CN108536398A (zh) * | 2018-01-18 | 2018-09-14 | 艾体威尔电子技术(北京)有限公司 | 一种实现中英文不同字体打印的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019736A (zh) * | 2012-12-26 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种语言文件生成方法及装置 |
CN103488748A (zh) * | 2013-09-23 | 2014-01-01 | 深圳Tcl新技术有限公司 | 一种Android系统的藏文字库配置方法和装置 |
-
2014
- 2014-06-17 CN CN201410271746.6A patent/CN104021026A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019736A (zh) * | 2012-12-26 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种语言文件生成方法及装置 |
CN103488748A (zh) * | 2013-09-23 | 2014-01-01 | 深圳Tcl新技术有限公司 | 一种Android系统的藏文字库配置方法和装置 |
Non-Patent Citations (3)
Title |
---|
CHAIHUASONG: "android新增语言的方法(墨西哥的西班牙语)", 《HTTP://WWW.LINUXIDC.COM/LINUX/2012-04/58964.HTM》 * |
WHZ586: "android+添加波斯语与新添加一种系统不带的语言方法", 《HTTP://WENKU.BAIDU.COM/LINK?URL=QYY6WNJVDXJ1BL8UHZGZTALOCPT_O3SBXSAHSTLCR7NRQA2EY_4IYGDFMUZ80VEAWORPEVKQFZV9EEJCMRN-LQENUCMOEQJVVBBK5FIUKO_》 * |
红黑联盟: "Android 如何编译ICU资源", 《HTTP://WWW.2CTO.COM/KF/201402/280580.HTML》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005472A (zh) * | 2015-06-25 | 2015-10-28 | 中通服公众信息产业股份有限公司 | 一种web上显示维吾尔文字的方法及装置 |
CN105005472B (zh) * | 2015-06-25 | 2018-07-20 | 中通服公众信息产业股份有限公司 | 一种web上显示维吾尔文字的方法及装置 |
CN107463386A (zh) * | 2017-08-31 | 2017-12-12 | 四川长虹电器股份有限公司 | 一种管理android应用多国语言的方法 |
CN108536398A (zh) * | 2018-01-18 | 2018-09-14 | 艾体威尔电子技术(北京)有限公司 | 一种实现中英文不同字体打印的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7982737B2 (en) | System and method for independent font substitution of string characters | |
US7188115B2 (en) | Processing fixed-format data in a unicode environment | |
CN100356372C (zh) | 计算机版式文件生成方法和打开方法 | |
JPH08509829A (ja) | テキスト入力訳字システム | |
JP2007004633A (ja) | 言語モデル作成装置およびそれにより作成された言語モデルを使用する言語処理装置 | |
JP2004005568A (ja) | レガシー・アプリケーションの高速gui体裁更新 | |
CN102662926B (zh) | 字库的存储与访问方法 | |
CN101694603A (zh) | 基于Unicode的跨平台蒙古文显示及智能输入方法 | |
WO2012141183A1 (ja) | 多様な端末機器に対応するコンテンツ提供装置 | |
CN101963954A (zh) | 一种文字显示的方法及装置 | |
JP2006236315A (ja) | 符号化が利用できないときに外国語テキスト表示を実現する方法および装置 | |
CN103677786A (zh) | 用于辅助图形化用户界面设计的方法和装置 | |
CN104021026A (zh) | 一种基于Android系统的语言添加方法 | |
US10235351B2 (en) | Electronic document editing apparatus capable of inserting memo into paragraph, and operating method thereof | |
US8943431B2 (en) | Text operations in a bitmap-based document | |
KR102531507B1 (ko) | 정보 출력 방법, 장치, 기기 및 저장 매체 | |
US7730388B2 (en) | Converting an enhanced metafile into a chronologically independent object property list for conversion into a PDF document | |
CN104503954A (zh) | 一种文字组合显示方法及显示系统 | |
CN111143749A (zh) | 一种网页展示方法、装置、设备及存储介质 | |
JP3788956B2 (ja) | 構造化文書表示方法、構造化文書表示装置及びプログラム | |
CN102509329B (zh) | 渲染字体的方法及系统 | |
KR101229164B1 (ko) | 네트워크를 통한 개인폰트 생성 방법 및 폰트 클라우드 서비스 시스템 | |
CN101957837B (zh) | 一种笔划矢量字库的存取方法 | |
TW561360B (en) | Method and system for case conversion | |
US20070033035A1 (en) | String display method and device compatible with the hindi language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140903 |
|
RJ01 | Rejection of invention patent application after publication |