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

一. 前期工作;

二.修改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. 在国内使用cnpm代替npm

    npm是Node.js的模块依赖管理工具,由于使用npm安装包是从国外服务器下载,在国内很容易受到网络的影响,速度非常慢,因此可以选用cnpm.cnpm可以使用淘宝团队提供的淘宝npm镜像,你可以用此 ...

  2. Han Move(细节题)

    Problem 1609 - Han Move Time Limit: 1000MS   Memory Limit: 65536KB    Total Submit: 620  Accepted: 1 ...

  3. 分布式日志收集系统- Cloudera Flume 介绍

        Flume是Cloudera提供的日志收集系统,具有分布式.高可靠.高可用性等特点,对海量日志采集.聚合和传输, Flume支持在日志系统中定制各类数据发送方, 同时,Flume提供对数据进行 ...

  4. PHP学习笔记七【函数】

    <?php $a=13; function abc3($a) { unset($a);//[释放给定变量]表示不在abc3函数范围内,不在使用$a,后面需要全新定义 $a=45; } abc(3 ...

  5. PHP学习笔记五【方法】

    <?php $num1=34; $num2=90; $oper="+"; $res=0; switch($oper) { case "+": $res=$ ...

  6. 写sql语句注意事项

    做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等.因此在开发系统的时候,表结构设计是否合理,sql语句是否标准,写出的sql性能是否优化往往会成为 ...

  7. hbase性能调优之压缩测试

    文章概述: 1.顺序写 2.顺序读 3.随机写 4.随机读 5.SCAN数据 0 性能测试工具 hbase org.apache.hadoop.hbase.PerformanceEvaluation ...

  8. linux常用命令--diff

    diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前的文件> <变动后的文件> ...

  9. 不规则三角网 Delaunay——TIN

    http://blog.csdn.net/u010025211/article/details/25032209 知识点一:平面中判断一个点是否在三角形内部. #include <stdio.h ...

  10. javabean对象自动赋值给另一个javabean对象

    方法1:把JavaBean的from的值自动set给to,省略了自己从from中get然后再set给to import java.beans.BeanInfo;import java.beans.In ...