首先创建多语言资源:

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

各国语言缩写:http://www.loc.gov/standards/iso639-2/php/code_list.php,

国家和地区简写:http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html


效果如图:

中文资源:

<?xml version="1.0" encoding="utf-8"?><resources><string name="hello">你好,这是测试文字!</string><string name="app_name">LanguageTest</string><string name="btn_name">Change to English</string></resources>

英文资源:

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

<resources><string name="hello">Hello World, MainActivity!</string><string name="app_name">LanguageTest</string><string name="btn_name">变成中文</string></resources>

package com.hkp;import java.util.Locale;import android.app.Activity;import android.content.Intent;import android.content.res.Configuration;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {    /** Called when the activity is first created. */public String [] langes = {"zh","en"};public static int count = 0;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                TextView tv = (TextView) findViewById(R.id.hello1);        String str = this.getResources().getString(R.string.hello);        tv.setText(str);        Button btn = (Button)findViewById(R.id.btn_change);        btn.setText(R.string.btn_name);        btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString languageToLoad  = langes[count++%2];setLanguage(languageToLoad);//刷新界面Intent intent = new Intent();intent.setClass(MainActivity.this,MainActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);MainActivity.this.startActivity(intent);}});    }        /** * Set the Language of Application *  * @param lang *            the language to set */private void setLanguage(String lang) {String languageToLoad = lang;Locale locale = new Locale(languageToLoad);Locale.setDefault(locale);Configuration config = new Configuration();config.locale = locale;getBaseContext().getResources().updateConfiguration(config, null);}}

AndroidManifest.xml中:

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

<activity android:name=".MainActivity"

android:label="@string/app_name"

android:configChanges="locale">

<intent-filter>

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

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

</intent-filter>

</activity>

</application>

<supports-screens

android:smallScreens="true"

android:normalScreens="true"

android:largeScreens="true"

android:anyDensity="true"/>


每一个Activity中都要加:android:configChanges="locale"。

<supports-screens>是为了解决如下问题:

http://adrianvintu.com/blogengine/post/Force-Locale-on-Android.aspx

更多相关文章

  1. Android开发中textStyle=”bold”无效的解决方法
  2. android 多国语言对照表
  3. [置顶] Android(安卓)Studio(AS)-->常用快捷键/所有快捷键,官方
  4. Android判断用户名只能为字母、数字和汉字
  5. Android实现城市选择三级联动
  6. Android(安卓)2.2 r1 API 中文文档系列(11) —— RadioButton
  7. 使用java语言中的注解生成器生成代码
  8. Android中文翻译 - AbstractAccountAuthenticator概述
  9. Android(安卓)中文 API (17) —— TextSwitcher

随机推荐

  1. Hibernate不尊重MySQL auto_increment主
  2. 关于Mysql的图形化管理工具sqlyog的注册
  3. Laravel和PHP:返回特殊格式的JSON
  4. mysql大表更新sql的优化策略(转)
  5. mysql 5.5 zip配置安装
  6. mysql数据库utf-8编码
  7. 机智的MySQL优化器 --- is null
  8. 我需要PHP页面显示mysql数据库中的BLOB图
  9. 利用Intellij+MAVEN搭建Spring+Mybatis+M
  10. MySQL、JDBC安装以及用java连接