internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n。 一般说明一个地区的语言时,用 语言_地区的形式,如 zh_CN, zh_TW.

android 对i18n和L10n提供了非常好的支持。android没有专门的API来提供国际化,而是通过对不同resource的命名来达到国际化,同时这种命名方法还可用于对硬件的区分,如不同的新视屏用不同的图片。

在eclipse的工程中,res目录有默认几项resource,如 drawable, layout,menu,values ,其余还有

res/anim/ 用来放置动画
res/xml/ 用来放置style theme等xml定义。
res/raw/ 用来放置data数据

我们引用这些resource时候,在java代码中是通过R.resource_type.resource_name的方式来使用,如setTitle(R.string.main_title);

还有一种是在xml中直接引用,如

<TextView
android:id ="@+id/hello_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>

引用了名字为hello的字符串。当程序运行时,通过Resource类会装载strings.xml中名字为hello的字符串。但Resource类装载strings.xml时会根据当前手机的设置来选择装载哪一个xml文件。这些手机设置有

MCC and MNC, Language and region, Screen dimensions, Wider/taller screens, Screen orientation,Screen pixel density, Touchscreen type, SDK version,也就是说通过手机当前语言区域,屏幕的大小,屏幕像素,以及当前android sdk的版本号来选择。通过把strings.xml放置在以这些选项命名的文件夹下,Resource类就能正确的装载所需的字符串。

我们以不同的local和region来做一次国际化,首先values表示默认的字符串,也即当Resource找不到匹配的资源时,默认使用values文件夹下的资源,其余 drawable等资源也是同样的。

当命名这些文件夹的名字时,不同的选项用-分开。

在strings.xml中除了字符串本身不一样,xml中定义该字符串的名字,id都是一样的。所以在代码或者xml中引用该资源时,只要引用名字即可或者id即可,程序启动时候Resource类回到相应的目录下去寻找正确的字符串(资源)

语言切换方式:

1、通过开关设置切换

通过在Settings中设置locale& Text 我们可以让Resource类来选择相应文件夹下的内容,

选择英语时候结果如下,也即选择了 values下的strings.xml

选择 chinese(china)时,也即选了 values-zh-rcn目录下的strings.xml

选择 chinese(taiwan)时,也即选了 values-zh-rtw目录下的strings.xml

其余手机的选项,像屏幕的像素等都可以建立相应得目录。

2、通过代码切换

Resources resources = getResources();//获得res资源对象

Configuration config = resources.getConfiguration();//获得设置对象

DisplayMetrics dm = resources .getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。

config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文

resources.updateConfiguration(config, dm);






更多相关文章

  1. 分支和循环(二)(零基础学习C语言)
  2. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  3. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  4. Android(安卓)给应用定制皮肤
  5. [android]android中的资源与国际化
  6. Android(安卓)CPU Memory 资源测试和分析 (使用工具 0xbench + p
  7. 制作不暴露源码的Android(安卓)Library Project
  8. Android(安卓)studio设置资源文件背景及背景选择器专题
  9. Libgdx 之SpriteBatch深入分析

随机推荐

  1. 常用函数类型与数据类型
  2. 打通产销对接,构建新型智慧农副产品供应链
  3. android判断一个应用是不是系统应用
  4. android 动画的实现
  5. android调节系统音量
  6. Android——百度APIstore+Json——获取新
  7. Android在子线程中更新UI(一)
  8. Android(安卓)设置圆角按下改变颜色按钮
  9. android中gridView中点击 item为选中状态
  10. Android(安卓)Path的使用