`
hkp2008
  • 浏览: 112276 次
  • 性别: 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多语言切换主要涉及创建不同语言的values目录,定义字符串资源,更新用户偏好,以及在应用启动时动态调整系统语言。通过以上步骤,你的应用就能轻松实现多语言切换,满足全球用户的使用需求。在...

    Android 多语言切换demo

    在Android应用开发中,实现多语言切换是一项基本且重要的功能,尤其对于面向全球用户的App来说。这个"Android 多语言切换demo"就是针对这一需求的一个示例项目,它可以帮助开发者理解并实现应用的语言本地化。下面...

    android多语言切换

    本项目"android多语言切换"提供了一个示例——LocaleChangeDemo,它演示了如何在Android系统中轻松地在中文和英文之间进行切换。下面我们将深入探讨这个主题,解析实现多语言切换的关键知识点。 首先,我们需要理解...

    Android 多语言 切换

    以下是关于Android多语言切换的关键知识点及详细解释: 1. **资源文件夹结构**: 在Android应用中,资源文件按照语言和地区进行组织。例如,对于英文(美国),资源存放在`res/values/`目录下;对于法文(法国),...

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

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

    Android多语言适配Demo

    "Android多语言适配Demo"就是一个专门展示如何在Android应用中进行多语言支持的实例。这个Demo通常会包含一系列的资源文件和代码,帮助开发者理解和实践这一功能。 1. **资源文件配置**: - 在`res`目录下,...

    android 多语言切换

    在Android应用开发中,实现多语言切换是一项重要的功能,它能帮助应用覆盖更广泛的用户群体。本示例将深入探讨如何在Android应用中模仿微信,实现在apk内部进行多语言切换,无需重新安装应用。 首先,我们需要理解...

    Android 自动化生成多语言strings文件

    因此,一种高效的方法是通过自动化工具来生成多语言`strings.xml`文件,例如,利用`jxl.jar`库解析Excel文件来实现这一目标。 `jxl.jar`是一个Java库,专门用于读写Excel文件(`.xls`格式)。它提供了方便的API,...

    Android多语言的demo

    总的来说,这个"Android多语言的demo"项目通过简单的实例讲解了Android应用如何实现多语言支持,包括资源文件的组织、字符串资源的定义以及在代码中调用这些资源。通过学习和理解这个demo,开发者可以进一步掌握如何...

    android 实现多国语言的切换

    9. **测试多语言**: 开发者应该对每种支持的语言进行充分的测试,确保翻译的准确性和UI布局的适应性。 通过以上步骤,你可以为Android应用添加多国语言支持,使它能够覆盖更广泛的用户群体。BarryDemo_...

    Android多语言与国际化

    以下是关于Android多语言与国际化的详细解释: 1. **资源目录结构**: 在Android工程的`res`目录下,有一个名为`values`的文件夹,用于存放默认的语言资源。为了添加对其他语言的支持,我们需要创建新的文件夹,其...

    android 多语言配置.zip

    在Android中,实现多语言主要通过创建不同的资源文件夹来完成。例如,对于英文(美国)和简体中文,我们需要在res/values目录下创建values-en-rUS和values-zh-rCN子目录。每个目录下有一个strings.xml文件,其中包含...

    android app多语言切换demo

    在Android应用开发中,实现多语言切换是一项基本且重要的功能,尤其对于面向全球用户的App来说。这个"android app多语言切换demo"就是这样一个实例,它展示了如何在Android应用中轻松地实现在不同语言间的切换,并...

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

    总的来说,实现Android应用内的语言切换不仅涉及到字符串资源的多语言版本,还需要考虑布局调整和字体适配,以确保应用在各种语言环境下都能正常工作并提供良好的用户体验。通过研究提供的源码和文档,开发者可以...

    android APP 多语言切换

    在Android应用开发中,实现多语言切换是一项重要的功能,它使得应用程序能够适应不同地区和语言的用户需求。本文将深入探讨如何在Android中实现在APP中进行多语言切换,并基于提供的"android APP 多语言切换"项目...

    Android创建多语言支持app示例代码

    在Android开发中,为了使应用能够适应不同地区的用户,我们需要为应用添加多语言支持。本示例代码将向你展示如何在Android项目中实现这一功能。以下是对标题和描述中的知识点进行的详细解释: 1. **资源文件夹的...

    Android多语言方案

    总结,实现Android多语言支持涉及多个层面,包括资源的组织、语言的切换机制以及处理配置变更。通过合理的设计和工具辅助,可以构建出适应全球用户的高质量应用。在实际开发中,应遵循最佳实践,提高用户体验,同时...

    安卓换肤主题更换夜间模式相关-多语言切换android国际化语言切换感觉不错挺好的demo.zip

    在Android开发中,换肤主题和夜间模式是用户体验的重要组成部分,而多语言切换则是实现全球化应用的关键技术。这个"安卓换肤主题更换夜间模式相关-多语言切换android国际化语言切换感觉不错挺好的demo.zip"提供了...

Global site tag (gtag.js) - Google Analytics