Android平台的维哈柯文本地化技术

时间:2022-09-27 09:52:10

【前言】Android平台的维哈柯文本地化技术由文秘帮小编整理而成,但愿对你的学习工作带来帮助。(Xinjiang Public Information Industry Co., Ltd.Introductions of Company, Urumqi 830000, China) Abstract: Describe the android platform localization support problem on the Uighur,Kazakh,Kirghiz and through the Uighur shows the Uighur display,selecti...

Android平台的维哈柯文本地化技术

摘要:阐述android平台对维哈柯文本地化支持的现状及存在的问题并以维吾尔文为例提供维吾尔文显示、选型、显示方向以及多语言混排、系统资源的本地化等问题的解决方案及输入法应用开发方案。

关键词:Android平台;国际化;本地化;选型;输入法;维吾尔文

中图分类号:TP391文献标识码:A文章编号:1009-3044(2012)06-1393-04

Android Platform Localization Technology with Uighur, Kazakh, Kirghiz

SHU Hong-xin, Askhar

(Xinjiang Public Information Industry Co., Ltd.Introductions of Company, Urumqi 830000, China)

Abstract: Describe the android platform localization support problem on the Uighur,Kazakh,Kirghiz and through the Uighur shows the Uighur display,selection,display orientation,multi-language mixed,system resource localization technologies and input method developing technologies.

Key words: Android platform; internationalization; localization; selection; input method; Uighur

Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。2011年11月,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。对Android如此大的市场占有率,针对其面对全球的语言差异,Android平台的本地化无疑是一个需要解决的问题。

新疆作为一个多民族地区,主要有维、哈、柯等13个少数民族,其中不少语言具有相似的语言特征,解决其中一个语言在An? droid平台的本地化问题,其它和其相似的语言的本地化问题也就得到了解决。本地化问题的解决为发展少数民族地区的通信和经济,提升社会信息化水平有重要的意义。本文首先介绍了Android概况,本地化思路以及以维吾尔文为例,介绍了如何在Android平台上进行本地化的技术

1 Android概况

Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l’Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L’ève fu? ture)中。他将外表像人的机器起名为Android。

Android使用Java作为主要编程语言,但可以通过NDK(Native Development Kit)支持C/C++,也可使用SL4A来支持其他各种脚本语言(python、lua、tcl、php等等),Qt(qt for android)、Mono(mono for android)等一些著名编程框架也开始支持Android编程,另外,在网页编程语言方面,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。

2 Android平台结构

Android架构图如图1。

Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。蓝色的代表Java程序,黄色的代码为运行Java程序而实现的虚拟机,绿色部分为C/C++语言编写的程序库,红色的代码内核(Linux内核+drvier)。

2.1应用程序

Android会同一系列核心应用程序包一起,该应用程序包包括Email客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是使用Java语言编写的。2.2应用程序框架

开发人员也可以完全访问核心应用程序所使用的API框架。任何一个应用程序都可以它的功能块并且任何其它的应用程序都可以使用其所的功能块。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

3系统运行库

Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。

Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由Java编译器编译,然后通过SDK中的"dx"工具转化成.dex格式由虚拟机执行。

4 Linux内核

Android的核心系统服务依赖于Linux 2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。

5 Android国际化、本地化思路

在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现多语言支持。比如我们的程序兼容简体中文、英文,在values文件夹中建立默认strings.xml,再建立values-zh-rCN(zh表示中文rCN表示简体,类似还有美式英语,奥式英语)、values文件夹。

在每个文件夹里放置一个strings.xml,strings.xml里是各种语言字符串。如果涉及到参数配置类xml文件夹也要改成xml-zh、xml。这样在Android的系统中进行语言切换,所开发的程序也会跟着切换语言。

在代码中切换语言:

Resources resources = getResources();//获得res资源对象

Configuration config = resources.getConfiguration();//获得设置对象

DisplayMetrics dm = resources .getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。

config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文

resources.updateConfiguration(config, dm);

上述多语言支持方式只适用于中文、英文等为数不多的几种主流语言,而维吾尔文这样的书写形式、显示方式上与中文、英文等主流语言有很大差别的语言而言是存在很多问题的。

6 Android平台的维吾尔文本地化的必要性

从目前Android市场占有率来看,市面上流行的Android版本都没有提供对维吾尔文的支持。下图所示的是谷歌在2011年11月3号给出的Android不同版本的使用比例:图2 Android不同版本的使用比例图

虽然,Android平台3.0至3.2版本中(占Android平台市场占有率的1.9%),已经开始支持双向字符集语言(BiDi的英文全称是bi-directional language),也就是部分支持维哈柯文右向输入等一些文字特性,但是在文字显示、选型等方面仍存在问题。 所以Android平台维吾尔文本地化工作还是很有必要的。

7 Android平台的维吾尔文本地化方法

Android系统的维吾尔文字特性支持技术方案有两种:

一种方案是在库文件(Libraries)层进行维吾尔文字特性支持工作,但是这样做需要替换整个框架所以在系统部署或版本升级时会遇到刷机等系列问题。

另外一种方案是在应用框架(Application Framework)层进行,具体解决方法是,将视图(View)类扩展成支持Bidi算法和维吾尔文选型规则的基类。

要实现Android平台的维吾尔文本地化,首先我们需要了解维吾尔文的文字特征。现在中国维吾尔族使用的维吾尔文是在晚期察合台文基础上形成的以阿拉伯字母为基础的拼音文字。现行维吾尔文有32个字母,自右至左横书。图3维吾尔文字母表

图3维吾尔文字母表所示,每个字母按出现在词首、词中、词末的位置有不同的形式。字母表中的独立式除代表该字母的独立形式外,一般出现在词末不可连字母之后;前连式出现在可连字母之前;前后连式出现在词中两个可连字母中间;后连式出现在词末可连字母之后。有些字母只有独立式和后连式。有些字母所带的符号除作独立式和词首形式的标志外,还起隔音的作用。因此维吾尔文字母表中的32个字母总共有124种书写形式。

根据Android平台的结构、对本地化的支持情况以及维吾尔文的文字特征来说,Android平台的维吾尔文本地化需要解决维吾尔文显示、选型、显示方向、对语言混排、输入法以及系统资源本地化等几个方面的问题。7.1维吾尔文显示

显示问题最简单的解决方案是扩充系统自带的基本字体文件。也就是扩充,Android SDK安装目录下\platforms\android-(版本号)\data\fonts下面的DroidSansFallback.ttf字体文件。维吾尔文字符编码范围:0600~06FF是基本代码区,维吾尔文名义字母位于这个区域,信息交换、传输以及保存时,使用这个区域的代码。FB50~FDFF和FE70~FEFF是扩展区,维吾尔文显示字母位于这个区域,这个区域代码用于系统上的字母显示中,不参与信息交换、传输以及保存上。扩充DroidSansFallback.ttf字体文件时,把所有的维吾尔文字符和标点符号按其编码添加在指定的区域中。

7.2选型、显示方向以及多语言混排

维吾尔文字是以阿拉伯字母为基础的字幕拼接文字,它在书写形式上与西方文字和汉字有很大的差别。维吾尔文自右至左横书并且每个字母按出现在词首、词中、词尾的位置有不同的书写形式。与此相对应,部分标点符号方向也是与西方文字跟汉字使用的标点符号相反的。

选型就是将某一名义字母的代码(字符编码)根据该字母在词首、词中、词尾出现的位置,按维吾尔文书写规则替换为对应的扩展区代码(字符编码)的过程。

因为在信息交换、传输以及保存时,我们使用基本区的代码所以选型算法最好是在显示(视图)模块中去实现。

大多数平台默认的文字显示方向是从左向右的,Android平台也不例外。对于维吾尔文从右向左的显示问题,可以通过判断字符串中第一个字符的编码来确定文本显示方向。若字符串第一个字符的编码处于维吾尔文编码区间,字符串从右向左显示;反之则从左向右显示。

在进行文本输入的时候,可能出现多种文字混合输入的情况。针对这种情况,根据手机设置的区域语言进行分别处理:1)如果语言设置为维文。让光标的初始位置再屏幕右上方。维文从第一行的最右字符位置向左显示。当显示汉字和英文字符时,先输入 的字符自光标处向左推进。最后呈现出汉字和英文仍是从左向右书写格式。2)如果语言设置为中文或英文,光标初始位置在屏幕左上方,光标从左向右移动。汉字和英文字符从左向右显示。显示维文字符时,则从左向右推进,即先输入的维文字符自光标处向右推进,最后在屏幕上仍呈现出维文从右向左的书写格式。7.3输入法

解决了显示问题,我们需要再解决输入的问题。一般常用的输入方式有软键盘输入和系统键盘输入。我们通过键盘映射来解决输入问题。实现方式参见下面的几段代码。

首先,在\res\xml\qwerty_uy.xml配置文件中配置键盘键码。

最后,继承android.inputmethodservice.InputMethodService类(文字输入基类)并实现键盘事件监听器接口(响应键盘操作并转换键码)android.inputmethodservice.KeyboardView.OnKeyboardActionListener以及重载public abstract void onKey(int arg0, int[] arg1)方法并在该方法中调用编码转换方法。

7.4系统资源的本地化

系统资源的维吾尔文本地化包括大量的翻译工作,需要对系统中字符串资源文件进行翻译。Android系统中的字符串资源位于\system\app\目录下的每个apk文件内的res文件夹内value文件夹下的XML文件内。提取这些资源后将其翻译成维吾尔文。最后把翻译文件放置value文件夹下,重新编译生成新的apk文件即可。

参考文献:

[1]百度.百科[DB/OL]..

[3]郭凯敏,吾守尔.斯拉木,李少雪.基于Android平台的本地化技术[DB/OL]..

上一篇:多点触摸概述与手势实现 下一篇:Two-way Video Synthesis Hardware System Bas...