Android 国际化。.
2. 汉化机制
在各个应用程序中,存在一个res目录,在该目录中默认有drawable, layout,menu,values几个目录,这些都属于java中的resource资源,在java代码中通过R.resource_type.resource_name使用。
在res目录中value打头的就是用于本地化的属性目录,他们的resource_type为string,则在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