首先创建多语言资源:
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
分享到:
相关推荐
Android多语言切换(国际化)代码实现十分简单,下载可以直接运行
Android国际化的例子有很多,但是都是老的,有的在Android7.0以上是没办法实现多语言。这个例子的需求是这样的:App每次启动都去读取手机本地设置的语音环境,如果是中文,不管简体繁体,都显示中文,其他的语言则...
一个实现Android应用内的多语言适配Demo
此demo实现了android的多语言的切换,在中文状态下可以显示英文,反之亦可,希望能帮助到他人。
android 实现多国语言的切换 代码示例
android app实现多语言切换demo,简单易懂,附源码工程
参考http://download.csdn.net/detail/barryhappy/7176709这位大哥,将ActionBarActivity改成了Activity,减少某些童鞋可能不太会解决的报错。
在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现多语言支持. 一般用 语言_地区的形式表示一种语言,如 zh_CN, zh_TW.
android 实现应用内语言切换.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android 录音实现方法、仿微信语音、麦克风录音、发送语音,解决Android 5.0 以上的BUG
android开发中经常需要实现各种语言的切换功能,网上也有一些解决方案,经本人测试都不算好用, 以下Demo是我研究的解决方案,绝对对你有帮助.
在Android Studio实现MQTT对主题的订阅和数据的收发,以及将数据封装成对象传回MainActivity,方便进行数据处理,其操作信息在TextView中展示相关的数据。对相关的数据一目了然,同时,在页面中为物联网的开发提供了...
本项目应用Google界面设计语言Material Design来设计UI,也就是按照Android5.0之后所有内置应用的界面风格来进行设计。 用户打开应用后会进入欢迎界面,然后进行注册登录,主界面有3个底部导航栏:首页、购物车和我...
这些都是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对应的资源文件。 首先我们点击添加Android Xml File按钮,会出现下面的界面: 输入文件名:string.xml,选中Values单选框,...
Android ExpandableListView双层嵌套实现三级树形菜单
主要为大家详细介绍了Android app应用多语言切换功能实现代码,感兴趣的小伙伴们可以参考一下
本文实例讲述了Android编程实现动态支持多语言的方法。分享给大家供大家参考,具体如下: 资源文件values/strings.xml中添加 <string name=current_language>English <string name=test>test 创建values-en文件夹...
本文就来实现这个功能。 设置不同语言的资源文件 如有必要,res文件夹下的像drawable、layout、values等都需要做不同语言的处理,这里仅以values为例 values-en和values-zh-rCN文件夹中的内容都一样values-en就是...