将文本定义在string中是一个好习惯,就算没有国际化的需要,作为一个资深强迫症患者,布局文件里给的满屏国际化提示是很不爽的
我们每次创建一个工程,布局文件里默认有一个hello world,他是通过values下的strings定义的,在没有别的语言的values文件夹时,就是来找这个文件夹下的strings文件
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">day7_17International</string>
<string name="hello_world">Hello world</string>
</resources>
这样,不论我们将模拟器设置成什么语言,运行后显示的都是hello world
现在在strings里添加一个中文的香蕉
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">day7_17International</string>
<string name="hello_world">Hello world</string>
<string name="fruits">香蕉!</string>
</resources>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/fruits" />
此时变动语言设置,无论什么语言环境,都是按照strings里定义的文本显示
这样写就可以做到开发环境里没有提示国际化的标志了,直接在布局里写入一个text会有提示,多了的话看着很别扭
再进一步,如果现在要把app推向别的国家,不一样的语言环境,当改变了setting里的语言设置,相应的文本改变语言,咋搞呢。这就是国际化了
再建一个相应的values文件夹和strings文件
需要什么语言,就建一个配套的文件夹
常见android多国语言文件夹文件汇总如下:
中文(中国):values-zh-rCN
中文(台湾):values-zh-rTW
中文(香港):values-zh-rHK
英语(美国):values-en-rUS
英语(英国):values-en-rGB
英文(澳大利亚):values-en-rAU
英文(加拿大):values-en-rCA
英文(爱尔兰):values-en-rIE
在模拟器里,默认的values是英文的,比如现在我们要建一个中文的环境,让hello world显示为 你好,世界
需要一个values-zh-rCN文件夹和strings.xml
<string name="app_name">day7_17国际化</string>
<string name="hello_world">你好,世界</string>
<string name="fruits">香蕉!</string>
顺便把上面的标题也改了下,setting里设置成中文来看下效果
这样就显示的中文了
如果你需要这段文本显示日文、韩文什么的,再去添加相应的文件就好