`
hkp2008
  • 浏览: 111211 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Android 多语言实现

阅读更多

首先创建多语言资源:

 

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


效果如图:   

 

中文资源:

 

<?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() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String 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 楼 hxy936 2014-07-13  
为什么执行到MainActivity.this.startActivity(intent);会报错?

相关推荐

    Android多语言切换(国际化)

    Android多语言切换(国际化)代码实现十分简单,下载可以直接运行

    Android实现多语言国际化适配Android7.0以上

    Android国际化的例子有很多,但是都是老的,有的在Android7.0以上是没办法实现多语言。这个例子的需求是这样的:App每次启动都去读取手机本地设置的语音环境,如果是中文,不管简体繁体,都显示中文,其他的语言则...

    Android多语言适配Demo

    一个实现Android应用内的多语言适配Demo

    android多语言切换

    此demo实现了android的多语言的切换,在中文状态下可以显示英文,反之亦可,希望能帮助到他人。

    android 实现多国语言的切换

    android 实现多国语言的切换 代码示例

    android app多语言切换demo

    android app实现多语言切换demo,简单易懂,附源码工程

    android 多语言demo

    参考http://download.csdn.net/detail/barryhappy/7176709这位大哥,将ActionBarActivity改成了Activity,减少某些童鞋可能不太会解决的报错。

    Android多语言与国际化

    在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现多语言支持. 一般用 语言_地区的形式表示一种语言,如 zh_CN, zh_TW.

    安卓字体使用多语言相关-android实现应用内语言切换.rar

    android 实现应用内语言切换.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android 语言 仿微信语言

    Android 录音实现方法、仿微信语音、麦克风录音、发送语音,解决Android 5.0 以上的BUG

    android 实现应用内语言切换

    android开发中经常需要实现各种语言的切换功能,网上也有一些解决方案,经本人测试都不算好用, 以下Demo是我研究的解决方案,绝对对你有帮助.

    Android Studio实现MQTT数据收发及数据处理

    在Android Studio实现MQTT对主题的订阅和数据的收发,以及将数据封装成对象传回MainActivity,方便进行数据处理,其操作信息在TextView中展示相关的数据。对相关的数据一目了然,同时,在页面中为物联网的开发提供了...

    Android Studio实现订餐系统

    本项目应用Google界面设计语言Material Design来设计UI,也就是按照Android5.0之后所有内置应用的界面风格来进行设计。 用户打开应用后会进入欢迎界面,然后进行注册登录,主界面有3个底部导航栏:首页、购物车和我...

    android 多语言

    这些都是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对应的资源文件。 首先我们点击添加Android Xml File按钮,会出现下面的界面: 输入文件名:string.xml,选中Values单选框,...

    Android ExpandableListView双层嵌套实现三级树形菜单

    Android ExpandableListView双层嵌套实现三级树形菜单

    Android app应用多语言切换功能实现

    主要为大家详细介绍了Android app应用多语言切换功能实现代码,感兴趣的小伙伴们可以参考一下

    Android编程实现动态支持多语言的方法

    本文实例讲述了Android编程实现动态支持多语言的方法。分享给大家供大家参考,具体如下: 资源文件values/strings.xml中添加 &lt;string name=current_language&gt;English &lt;string name=test&gt;test 创建values-en文件夹...

    Android应用的多语言支持的实现方法

    本文就来实现这个功能。 设置不同语言的资源文件 如有必要,res文件夹下的像drawable、layout、values等都需要做不同语言的处理,这里仅以values为例 values-en和values-zh-rCN文件夹中的内容都一样values-en就是...

Global site tag (gtag.js) - Google Analytics