2013/5/11
48_实现软件国际化
-----------------------
1.国际化的意思是:当软件运行在不同的语言环境的时候,会自动的显示对应的语言。
-------------------------------------
2.下面的例子用来适配,中文和英文两种文字。
-----------------------------------------
3.这里新建android项目:i18n
a.新建下面的文件夹用于实现国际化:
/i18n/res/drawable-en
/i18n/res/drawable-zh
以上两个用来实现图片国际化
---------------------------
b./i18n/res/values-en
/i18n/res/values-en/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">i18n</string>
<string name="name">name</string>
<string name="button">add</string>
</resources>
----------------------------------
/i18n/res/values-en-rUS
/i18n/res/values-en-rUS/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">i18n(us)</string>
<string name="name">name(us)</string>
<string name="button">add(us)</string>
</resources>
----------------------------------------
/i18n/res/values-zh
/i18n/res/values-zh/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">国际化</string>
<string name="name">姓名</string>
<string name="button">添加</string>
</resources>
这三个用来实现文字国际化
----------------------------
c./i18n/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/name"
/>
<!-- android:text="@string/name"这个表达式会自动的在values下的string.xml文件中取得
然后系统会根据当前的语言环境,自动的调用values-en文件夹下string.xml文件中对应的key值对应的内容
或者是values-zh文件夹string.xml文件中对应的key值对应的内容,注意这里创建对应语言的文件夹时:开头要用values
比如中文:values-zh,对应语言文件夹下的xml文件不一定交string.xml,但是key和value值,一定要对应
比如:在values-zh文件夹中有china.xml文件那么要求:
values下的string.xml为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">i18n</string>
<string name="name">name</string>
<string name="button">add</string>
</resources>
values-zh文件夹下的china.xml文件为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">国际化</string>
<string name="name">姓名</string>
<string name="button">添加</string>
</resources>
也就是说其他values-xxxx文件夹中的文件内容,要和values文件夹中string.xml内容的key一样
比如:app_name,app_name
这样才可以匹配
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
当需要匹配不同国家的语言的时候:比如美国的,美式英语:这里需要在res文件夹下建立:values-en-rUS这个文件夹,其中
r代表国家,US是java中美国的代表
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">i18n(us)</string>
<string name="name">name(us)</string>
<string name="button">add(us)</string>
</resources>
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
语言的识别规则:比如当系统语言设置为英式英语的时候,系统找不到,英国语言,就会使用values-en,英语这个文件夹下的文件
如果设置为一个没有文件夹对应的语言,这时候会自动的匹配values文件夹下的文件
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
-->
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/exit"
/>
</LinearLayout>
----------------------------------------
4.针对特定的国家提供相应的文字:
5.图片国际化。
有些图片上面有文字:比如按钮图片:一个按钮图片上显示(退出),(exit),。。等。
drawable-hdpi
drawable-ldpi
drawable-mdpi
这三个文件夹:用来存放不同分辨率的图片
------------------------------------------
6.实现图片国际化的时候,要新建:
drawable-en:英文图片
drawable-zh:中文图片
文件夹,这里系统会根据自身的语言环境自动的调用不同文件中的图片
------------------------------------------------------------------------------------