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

一. 前期工作;

二.修改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. SQL 通配符

    在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符.SQL 通配符必须与 LIKE 运算符一起使用,必须放在引号内. 在 SQL 中,可使用以下通配符: %:替代一个或多个字符. _:仅替代 ...

  2. 了解SQL注入攻击

    SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义. 随着B/S模式被广泛的应用,用这种模式编写应用程序的程序员也越来越多,但由于开发人员的水 ...

  3. CTSC1999补丁VS错误题解

    题目描写叙述 Description 错误就是人们所说的Bug.用户在使用软件时总是希望其错误越少越好.最好是没有错误的.可是推出一个没有错误的软件差点儿不可能,所以非常多软件公司都在疯狂地发放补丁( ...

  4. 【git学习二】git基础之git管理本地项目

    1.背景        git基础打算分两部分来说,一部分是对于本地项目的管理,第二部分是对于远程代码仓库的操作. git运行本地项目管理包含对于相关文件的追踪,暂存区的比較分析,提交,撤销等功能. ...

  5. 苹果试图做?XCode6 放弃prefix.pch档

    当我们升级到XCode6后, 新建project发现默认是没有pch文件的.非常多人開始不习惯了,苹果到底为什么要取消这一个pch文件. 苹果觉得,因为组件单一模块的原因.你不应该在你的prefix代 ...

  6. win7 绿色版MySQL安装与配置

    操作步骤: 一.安装MySQL数据库 1.下载MySQL-5.6.17-winx64.zip文件.2.解压到指定目录,本例为D:\mysql-5.6.17-winx64.3.修改配置文件,my-def ...

  7. Carmack在QUAKE3中使用的计算平方根的函数

    // // Carmack在QUAKE3中使用的计算平方根的函数 // float CarmSqrt(float x){ union{ int intPart; float floatPart; } ...

  8. WPF学习记录1:ListView的一个模板

    在网上找的一个模板,放在这里,作为笔记,收集 <ListView Grid.Column=" Name="ListmuLu" > <ListView.I ...

  9. 纯CSS3技术 加载中

    你能相信吗?这些都是由一个DIV元素实现的动画,纯CSS3技术 html  <div class="loader">加载中...</div> css: 图( ...

  10. CSS混合模式

    前面的话   层叠上下文z-index只是解决两个元素覆盖,谁离用户更近的问题.而CSS混合模式,则是处理两个元素覆盖部分如何混合的问题.如果了解photoshop的话,对这种现象应该不陌生.CSS3 ...