android的国际化及本地化

来源:互联网 发布:sql数据库表修复 编辑:程序博客网 时间:2024/05/10 06:51

         1.               Abstract

Android 国际化。.

2.               汉化机制

      

在各个应用程序中,存在一个res目录,在该目录中默认有drawable layoutmenuvalues几个目录,这些都属于java中的resource资源,在java代码中通过R.resource_type.resource_name使用。

res目录中value打头的就是用于本地化的属性目录,他们的resource_typestring,则在java中引用方式为:

R.string.resource_name

manifest中的引用方式为:

@string/app_name

中文翻译有两种设置:

values-zh-rCN:中文简体

values-zh-rTW:中文繁体

..

3.               汉化实现

3.1           确定哪些内容需要汉化:

      在校准程序中有以下几个名字需要汉化:

1、         菜单显示的应用程序名,即,AndroidManifest.xml中的label属性

2、         校准失败提示(java代码中)

3、         校准成功提示(java代码中)

3.2           默认显示语言设置(当前使用英文)

修改values/strings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="app_name">Screen Calibrate</string>

    <string name="CalibrateFail">Screen Calibrate fail, please try again!</string>

    <string name="CalibrateDone">Screen Calibrate Success!</string>

</resources>

 

3.3           制作中文汉化文件

复制values目录为values-zh-rCN即可,然后修改values-zh-rCN/strings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="app_name">屏幕校准</string>

    <string name="CalibrateFail">校准失败,请重新校准!</string>

    <string name="CalibrateDone">校准成功</string>

</resources>

 

其余语言的翻译也是一样,只要注意values-zh-rCN目录名即可。

 

3.4           引用汉化后的字符串

汉化文件会在代码和Manifest中引用:

代码中引用方法:

Toast.makeText(getBaseContext(), R.string.CalibrateDone, Toast.LENGTH_SHORT).show();

Toast.makeText(getBaseContext(), R.string.CalibrateFail, Toast.LENGTH_SHORT).show();

setTitle(getString(R.string.delete_alarm))

根据具体情况而定

Manifest中引用:

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".AndroidCalibrate"

                  android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

</application>

 

3.5           遗留问题

在其他应用的string.xml中还有一个msgid字段,不知含义,未查到结果。

 

 

 

4.               References

[1] http://xxw8393.blog.163.com/blog/static/3725683420098113187900/

[2] http://blog.csdn.net/lijiecong/archive/2009/11/03/4764947.aspx

 

 

原创粉丝点击