最近几个项目需要添加缅甸语,借助网络资源,同时结合自身实践,成功添加缅甸语,现分享经验如下。

一. 前期工作;

二.修改icu模块

 a.跟踪源码可知,ICS系统已经做了缅甸语的一些支持,现只需处理下external/icu4c/stubdata/icudt46l-default.txt即可。修改如下:
  • 添加行coll/my.res
  • 添加行 coll/my_MM.res
  • 添加行curr/my.res
  • 添加行lang/my.res
  • 添加行region/my.res
  • 添加行zone/my.res
  • 添加行my.res
  • 添加行my_MM.res
 b. 执行脚本文件external/icu4c/stubdata/icu_dat_generator.py ,重新生成icudt46l-default.dat文件。
    如果没有可执行权限,则需给其加上可执行权限,命令如下:
     $cd external/icu4c/stubdata/
     $chmod +x icu_dat_generator.py 
     然后运行脚本文件,命令为: $ ./icu_dat_generator.py ,正常情况下,重新生成icudt46l-default.dat文件,如出现报错信息,可能需要修改该脚本,修改内容如下:
    将
ICU_PREBUILT_DIR = os.path.join(os.environ.get("ANDROID_EABI_TOOLCHAIN"),
"..", "..", "..", "icu-%s.%s" % (icu_version[0], icu_version[1]))
修改成:
ICU_PREBUILT_DIR = os.path.join(os.environ.get("ANDROID_BUILD_TOP"),
"prebuilt", "linux-x86","icu-%s.%s" % (icu_version[0], icu_version[1]))
这里指定icu预编译时使用的icu工具,而icu工具是放在$(ANDROID_ROOT)/prebuilt/linux-x86/目录下。所以需要重新指定其路径。
至此,icu模块修改完毕,就只要修改这么多。

三. 添加缅甸语字库文件到系统

添加文件到系统有多种方法,此处为了方便是否内置缅甸语进行控制,使用如下方法进行修改(参照MTK的做法):

1.添加文件夹,openfont,目录树如下:

frameworks/base/data/fonts/openfont/

├── Android.mk

├── CleanSpec.mk

├── fonts.mk

├── NOTICE

└── padauk-ttf

    ├── COPYRIGHT

    ├── OFL.txt

    └── Padauk.ttf

2 directories, 10 files

其中,Android.mk文件内容如下:

LOCAL_PATH := $(call my-dir)

ifneq ($(SMALLER_FONT_FOOTPRINT),true)

ifneq (,$(filter my_MM,$(PRODUCT_LOCALES)))
include $(CLEAR_VARS)
LOCAL_MODULE := Padauk.ttf
LOCAL_SRC_FILES := padauk-ttf/$(LOCAL_MODULE)
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts
include $(BUILD_PREBUILT)
endif endif

fonts.mk内容如下:

PRODUCT_PACKAGES := \
Padauk.ttf

CleanSpea.mk内容如下:

$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/ETC/Mondulkiri.ttf_intermediates)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/fonts/Mondulkiri.ttf )

2. 修改frameworks/base/data/fonts/Android.mk,增加如下行:

# Use the following to include the added fonts.
include $(call all-makefiles-under,$(LOCAL_PATH))

使得可以编译到openfont文件夹。

3.修改frameworks/base/data/fonts/fallback_fonts.xml,增加如下内容:

<family>
<fileset>
<file>Padauk.ttf</file>
</fileset>
</family>

4. 修改build/target/product/common.mk,增加如下内容:

ifneq (,$(filter my_MM,$(MTK_PRODUCT_LOCALES)))
PRODUCT_PACKAGES += Padauk.ttf
endif

5. 修改mediatek/config/ztesz75_cu_ics/ProjectConfig.mk,添加缅甸语的国家码my_MM到MTK_PRODUCT_LOCALES中,如下所示:

MTK_PRODUCT_LOCALES = en_US hi_IN in_ID es_ES ru_RU pt_BR fa_IR fr_FR de_DE tr_TR it_IT ms_MY vi_VN ar_EG  th_TH  pt_PT my_MM nl_NL zh_CN zh_TW mdpi hdpi

另, MTK_PRODUCT_LOCALES的第一个字段是系统的默认语言,也就是出厂语言,如果要把缅甸语设置成默认语言,只需将my_MM放在第一个位置即可。

经过以上五个步骤,重新编译系统时,系统就可以支持缅甸语了。

四. 添加缅甸语字串

将步骤一中下载的缅甸字串解压到packages文件夹下,编译Settings模块,安装到系统,切换语言为缅甸语,Settings模块就可以显示成缅甸语了。如图所示:



从网络上了解到另外一种添加语言的方法,有参考的价值,但是没有验证过,有兴趣的朋友可以参考下,链接如下:http://androidandsandu.blogspot.com/2011/12/how-to-add-indian-languages-to-android.html
可能有些朋友访问不了外网,现贴原文如下:

How to add Indian Languages to Android ICS (4.0.3)

 
Google is officially supporting the Indian languages rendering from 4.0.3 onwards.

The AOSP code supports rendering of three Indian languages in Web-kit. (Devanagari, Tamil, and Bengali).

I just added support for the other Indian languages as well. Tested it on my Nexus-S device

Prerequisites :

Follow these instructions:

1) Download the "Binary" file of the Indian language from 
this link.

         
Ex: lohit-kananda-ttf-2.5.0.tar.gz

2) Untar the downloaded file and Copy the extracted folder into  

    external/lohit-fonts directory

        
Ex: lohit-kannada-ttf-2.5.0

3) Rename the folder name to lohit-kannada-ttf

4) Modify the Android.mk file which is present in external\lohit-fonts directory

ifneq ($(SMALLER_FONT_FOOTPRINT),true)
            extra_lohit_fonts := Lohit-Bengali.ttf Lohit-Tamil.ttf Lohit-Kannada.ttf 
        endif

include $(CLEAR_VARS)


        LOCAL_MODULE := Lohit-Kannada.ttf


        LOCAL_SRC_FILES := lohit-kannada-ttf/$(LOCAL_MODULE)


        LOCAL_MODULE_CLASS := ETC


        LOCAL_MODULE_TAGS := optional


        LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts


        include $(BUILD_PREBUILT)

5) Modify the FontAndroid.cpp file (external/webkit/source/webcore/platform/graphics/android)

a) Add an language entry to CustomScript enum

            
 enum CustomScript {


               Bengali,
               Devanagari,


               Kannada,


               .......


              };

b) Add the ttf file path to the TextRunWalker Paths

const char* TextRunWalker::paths[] = {
              "/system/fonts/Lohit-Bengali.ttf",
             "/system/fonts/Lohit-Devanagari.ttf",


             "/system/fonts/Lohit-Kannada.ttf",


             ........


          };

c) Now setup the Font for Script Run

         
TextRunWalker::setupFontForScriptRun()


          {


            case HB_Script_Kannada:
              complexPlatformData = setupComplexFont(Kannada, platformData);
            break;


          }


 

6) Add the *.ttf file in Fallback_fonts.xml 
(frameworks\base\data\fonts)



MTK Android4.0.3 ICS 添加缅甸语Myanmar的更多相关文章

  1. 关于解决android4.0系统中菜单无法添加Icon的问题

    在Android4.0系统中,创建菜单Menu,然后通过setIcon方法给菜单添加图标是无效的,图标不会显出来,而之前的系统中是可以显示出来的.这个问题的根本原因在于4.0系统中,涉及到菜单的源码类 ...

  2. 解决android4.0系统中菜单(Menu)添加Icon无效问题

    本文转载自: http://blog.csdn.net/stevenhu_223/article/details/9705173 在Android4.0系统中,创建菜单Menu,通过setIcon方法 ...

  3. Android4.0.4-在build.prop中添加属性的方法【转】

    本文转载自:http://blog.csdn.net/imyfriend/article/details/8939964 1.在*.rc文件中用setprop添加,例如在源码android4.0\sy ...

  4. android4.0 4.1 4.2 4.3 4.4新特性

    http://blog.csdn.net/kaiyang45/article/details/7179349 4.0 http://digi.tech.qq.com/a/20120628/000827 ...

  5. [转载]jquery版小型婚礼(可动态添加祝福语)

    原文链接:http://www.cnblogs.com/tattoo/p/3788019.html 前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我 的百度生涯,一直 ...

  6. QT210 android2.3 和android4.0 烧写编译日记

    QT210下载烧录编译android2.3过程 工作环境:ubuntu12.04.5 | QT210开发板光盘 | QT210开发板 android2.3编译环境:gcc version 4.4.7  ...

  7. jquery版小型婚礼(可动态添加祝福语)

    前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我的百度生涯,一直寻觅许愿墙背景图片和便利贴图片,觅了好久……一直没找到满意的……无意间看到祝福语和一些卡通婚礼图片.最 ...

  8. 一个Activity掌握Android4.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380 谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常 ...

  9. [转]使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)

    在android4.0以后的sdk里那个脚本就失效了,主要是因为 apkbuilder这个程序不见了: 人家sdk升级,我们的脚本也要跟上趟,修改一下喽. 上网一查,大家的文章还停留在我去年的脚本程度 ...

随机推荐

  1. IEEE发布2016年度编程语言排行榜

    C 语言占据榜首,但大数据类是最大赢家. IEEE Spectrum 的第三次"最受欢迎编程语言"交互式排行榜新鲜出炉.因为不可能顾及到每一个程序员的想法,Spectrum 使用多 ...

  2. Unity 调用android插件

    1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调 ...

  3. Ajax跨域访问解决办法

    方法1. jsonp实现ajax跨域访问示例 jsp代码: <body> <input type="button" onclick="testJsonp ...

  4. 在Android中建立Android project没有R.java文件

    最近在搞一下安卓,在新建Android工程,既然发现在gen目录下没有R.java这个文件.我当时感到很郁闷,上次建Android工程才好好的,怎么这次既然报错没有R.java.后来我用以下才解决了. ...

  5. 【极客学院出品】Cocos2d-X系列课程之九-BOX2D物理引擎

    Cocos2d-x 是时下最热门的手游引擎,在国内和国外手机游戏开发使用的份额各自是70%和25%,在App Store的top10中,有7个是用它开发的. 本节课程为Cocos2d-x系列课程之九, ...

  6. andorid 控件 Bootstrap3.0风格的控件 精美UI控件库

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstra ...

  7. sharepreference实现记住password功能

        SharePreference是用于保存数据用的.主要调用Context.getSharePreferences(String name, int mode)方法来得到SharePrefere ...

  8. JSP 基础之 JSTL <c:forEach>用法

    在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JST ...

  9. UVALive 6959 - Judging Troubles

    给两组字符串,最多有多少对相同. map做映射判断一下. #include <iostream> #include <cstdio> #include <map> ...

  10. 层次节点——NODE节点

    1.html <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...