怎么在android添加一种新语言,如何入手呢~~~

解决方案 »

  1.   

    先看setting多语言那块,它是怎么工作的,再对应找到framework中,照猫画虎吧。应该不麻烦的
      

  2.   

    请问,你们的头像图片,是怎么上传的?
    我怎么就没看到,CSDN有这功能?
      

  3.   

    http://www.eoeandroid.com/thread-46129-1-1.html
      

  4.   

    能上外网的朋友们帮忙把http://hi.baidu.com/gigatron/blog/item/9b059d458752dc056a63e548.html/cmtid/0603ec8ab20843bd0e24445d
    里面的文章给粘贴一下 谢谢啦
      

  5.   

    ADROID 2.1 架构解析 1 语言定制2010-04-17 21:041 语言定制
    1.1 ICU4C
    1.1.1 ICU4C简介
    ICU4C(ICU for C,http://site.icu-project.org/)是ICU在C/C++平台下的版本, ICU(International Component for Unicode)是基于"IBM公共许可证"的,与开源组织合作研究的, 用于支持软件国际化的开源项目。ICU4C提供了C/C++平台强大的国际化开发能力,软件开发者几乎可以使用ICU4C解决任何国际化的问题,根据各地的风俗和语言习惯,实现对数字、货币、时间、日期、和消息的格式 化、解析,对字符串进行大小写转换、整理、搜索和排序等功能,必须一提的是,ICU4C提供了强大的BIDI算法,对阿拉伯语等BIDI语言提供了完善的支持。  ICU首先是由Taligent公司开发的,Taligent公司现在被合并为IBM?公司全球化认证中心的Unicode研究组,然后ICU由IBM和开源组织合作继续开发,开源组织给与了ICU极大的帮助。  开始ICU只有Java平台的版本,后来这个平台下的ICU类被吸纳入SUN公司开发的JDK1.1,并在JDK以后的版本中不断改进。C++和C平台下的ICU是由JAVA平台下的ICU移植过来的,移植过的版本被称为ICU4C,来支持这C/C++两个平台下的国际化应用。ICU4C和ICU4C区别不大,但由于ICU4C是开源的,并且紧密跟进Unicode标准,ICU4C支持的Unicode标准总是最新的;同时,因为JAVA平台的ICU4J的发布需要和JDK绑定,ICU4C支持Unicode标准改变的速度要比ICU4J快的多。1.1.2 ANDROID语言包
    Android 使 用的语言包就是ICU4C,位置:external/icu4c。Android支持的语言有:Locale  CANADA                           Locale constant for en_CA.Locale    CANADA_FRENCH            Locale constant for fr_CA.Locale    CHINA                               Locale constant for zh_CN.Locale    CHINESE                           Locale constant for zh.Locale    ENGLISH                           Locale constant for en.Locale    FRANCE                            Locale constant for fr_FR.Locale    FRENCH                            Locale constant for fr.Locale    GERMAN                           Locale constant for de.Locale    GERMANY                         Locale constant for de_DE.Locale    ITALIAN                            Locale constant for it.Locale    ITALY                                Locale constant for it_IT.Locale    JAPAN                               Locale constant for ja_JP.Locale    JAPANESE                         Locale constant for ja.Locale    KOREA                             Locale constant for ko_KR.Locale    KOREAN                            Locale constant for ko.Locale    PRC                                   Locale constant for zh_CN.Locale    SIMPLIFIED_CHINESE      Locale constant for zh_CN.Locale    TAIWAN                            Locale constant for zh_TW.Locale    TRADITIONAL_CHINESE Locale constant for zh_TW.Locale    UK                                    Locale constant for en_GB.Locale    US                                    Locale constant for en_US.1.2 定制语言
    在PRODUCT_LOCALES字段里添加需要语言,如:PRODUCT_LOCALES := en_US zh_CN则系统里只有英语和汉语两种语 言。然后语言的选择处理是在external/icu4c/stubdata/Android.mk里进行的,如下:config := $(word 1, \            $(if $(findstring ar,$(PRODUCT_LOCALES)),large) \            $(if $(findstring da,$(PRODUCT_LOCALES)),large) \            $(if $(findstring el,$(PRODUCT_LOCALES)),large) \            $(if $(findstring fi,$(PRODUCT_LOCALES)),large) \            $(if $(findstring he,$(PRODUCT_LOCALES)),large) \            $(if $(findstring hr,$(PRODUCT_LOCALES)),large) \            $(if $(findstring hu,$(PRODUCT_LOCALES)),large) \            $(if $(findstring id,$(PRODUCT_LOCALES)),large) \            $(if $(findstring ko,$(PRODUCT_LOCALES)),large) \            $(if $(findstring nb,$(PRODUCT_LOCALES)),large) \            $(if $(findstring pt,$(PRODUCT_LOCALES)),large) \            $(if $(findstring ro,$(PRODUCT_LOCALES)),large) \            $(if $(findstring ru,$(PRODUCT_LOCALES)),large) \            $(if $(findstring sk,$(PRODUCT_LOCALES)),large) \            $(if $(findstring sr,$(PRODUCT_LOCALES)),large) \            $(if $(findstring sv,$(PRODUCT_LOCALES)),large) \            $(if $(findstring th,$(PRODUCT_LOCALES)),large) \            $(if $(findstring tr,$(PRODUCT_LOCALES)),large) \            $(if $(findstring uk,$(PRODUCT_LOCALES)),large) \            $(if $(findstring zh,$(PRODUCT_LOCALES)),large) \            $(if $(findstring ja,$(PRODUCT_LOCALES)),us-japan) \            $(if $(findstring it,$(PRODUCT_LOCALES)),us-euro) \            $(if $(findstring pl,$(PRODUCT_LOCALES)),us-euro) \            $(if $(findstring cs,$(PRODUCT_LOCALES)),default) \            $(if $(findstring de,$(PRODUCT_LOCALES)),default) \            $(if $(findstring fr,$(PRODUCT_LOCALES)),default) \            $(if $(findstring nl,$(PRODUCT_LOCALES)),default) \            us)1.3 默认语言
    默认语言的选择实现是在build/core/Makefile里,从PRODUCT_LOCALES里选择第一个语言作为默认语言,如下:define default-locale$(subst _, , $(firstword $(1)))endef # Selects the first locale in the list given as the argument# and returns the language (or the region)define default-locale-language$(word 2, 2, $(call default-locale, $(1)))endefdefine default-locale-region$(word 3, 3, $(call default-locale, $(1)))Endef ... PRODUCT_DEFAULT_LANGUAGE="$(call default-locale-language,$(PRODUCT_LOCALES))" \                     PRODUCT_DEFAULT_REGION="$(call default-locale-region,$(PRODUCT_LOCALES))" \ 然后通过build/tool/buildinfo.sh文件将如下段写到文件build.prop,如下:echo "ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"所以,要改变默认语言用下面两种 方法中的一种就行了:1 在PRODUCT_LOCALES字段里,将要选择的语言放在第一位,如:PRODUCT_LOCALES := en_US zh_CN默认语言是英语2 在persist.sys.language 和persist.sys.country 里指定语言,如下:PRODUCT_PROPERTY_OVERRIDES := \      persist.sys.language=zh \           persist.sys.country=CN build.prop文件的处理是在system/core/init/property_service.c。
     
      

  6.   

    修改系统语言有两种方式:
    一、修改主要的配置文件:
    \froyo\build\target\product\我们可以看到language_full.mk和language_small.mk(这时候你就会想这两个文件到底该修改哪一个呢)打开两个文件我可以看到 在language_full.mk里面有而在language_small.mk里面有因为这些信息最终会被build进system.img里面,所以为了节省系统空间,我们选择language_small.mk
    在这里面你就可以把你所要添加的语言放到里面~~~
    如:PRODUCT_LOCALES := en_US en_GB fr_FR it_IT de_DE es_ES zh_CN
    (en_US其中US指的是地区,而en指的是语言)
    然后在froyo/build/target/product/full.mk里面做修改:需要注意的是
    在这之前,我们需要把我们将要添加的这种语言的字体frameworks\base\data\fonts目录下添加,并修改了Fonts下的Android.mk文件,使得添加的字体库,能make进system.img.然后在froyo/external/icu4c/stubdata/Android.mk通过这样修改,
    通过这样修改,则这个系统支持中文简体(假设你要添加的就是中文简体的话)了,然后就是在你的各个应用里面就行添加资源文件,让它能随着系统语言的变化而变化。
    我们建好一个android 的项目后,默认的res下面 有layout、values、drawable等目录这些都是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对应的资源文件。首先我们点击添加Android Xml File按钮,会出现下面的界面:
    输入文件名:string.xml,选中Values单选框,并把下面左列表中的Region添加到左边的列表里面,并在Region输入框里输入cn,如下图点击Finish按钮,资源文件就会建好了,目录:res\values-zh-rCN(其实上面一大堆操作,就是为生成这个目录)默认生成的string.xml的代码:<?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string name="hello">Hello World, Test!</string>
    <string name="app_name">Test-Multilingual</string>
    </resources>修改刚刚生成的res\values-zh-rCN目录下的string.xml:<?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string name="app_name">测试多语言</string>
    <string name="hello">你好 多语言测试</string>
    </resources>
     
      

  7.   

    二、采用代码修改:
    Android里一个listview会对应一个数据数组,那我们只需在这个数组里按格式添加我们所需要的数据就行了,我们的目标是com.android.settings.LocalePicker.java,在该文件133行位置做如下修改:
            mLocales = new Loc[finalSize+1];
            for (int i = 0; i < finalSize ; i++) {
                mLocales = preprocess;
            }
            Locale temp = new Locale("vi", "VN");
            mLocales[finalSize] =new Loc(toTitleCase(temp.getDisplayLanguage(temp)), temp);
        这步做完后setting的语言列表里就有了越南语了,但点击越南语后,界面没发现有什么变化,那是因为android系统没有对越南语写响应的国际化资源文件,你可以自己写应用测试
      

  8.   

    相关的参考资料:
    一、android如何添加一门新语言?
    二、如何向android的setting语言列表中添加一门语言
    三、Android:多语言对应 
    四、关于2.1添加阿拉伯,希伯来 
    五、android 语言设置 
      

  9.   

    看来学习framework的童鞋比较少
      

  10.   


    准备学习中,不知改如何入手呀.....请赐教之,有相关资料的话,发我邮箱[email protected]  谢谢啦
      

  11.   

    这个跟framework没什么关系所有的语言字符都是由统一编码的.只需要字库支持即可.
      

  12.   

    这些就是在framework里面完成的啊
      

  13.   

    你说的这个是底层已经做好支持 在应用层string.xml中才能修改
      

  14.   

    还没研究到。。正在学MediaPlayer架构
      

  15.   

    为什么写framework的多国语言支持
      

  16.   

    我现在用的是日版的rom  我就想往里面添加中文··· 不想改太多·· 看了这文章好长· = = 好难懂啊··LZ能不能帮忙弄个视频教程什么的啊···  要不好心帮我直接把中文语言包弄进去行不?
      打个比方  我是2.2的ANDROID 系统 (日版)  里面没有带中文选项的   可以从国内的那些高手的ROM里面提取出中文语言包 然后再添加到我的ROM里面吗??