应用程序内部实现语言国际化

       在Android手机的系统设置,语言与输入法中能够修改系统的语言,其实也可以在软件内实现本软件内语言的改变,比如大家熟悉的软件微信,在设置,通用,多语言,中进行相关的设置即可,下面贴出关键部分代码,以备用。

先看下效果图

代码段如下:

public void go(View v) {

		// 供选择改变的语言类别
		String[] laStrs = new String[] { getResources().getString(R.string.string_lan_china),
				getResources().getString(R.string.string_lan_english),
				getResources().getString(R.string.string_lan_japanese) };
		// 弹出的单选对话框
		new AlertDialog.Builder(MainActivity.this)
				.setSingleChoiceItems(laStrs, -1, new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						dialog.dismiss();
						if (which == 0) {
							Toast.makeText(MainActivity.this,
									MainActivity.this.getResources().getString(R.string.string_lan_china),
									Toast.LENGTH_SHORT).show();
							Locale.setDefault(Locale.CHINESE);
							Configuration config = MainActivity.this.getResources().getConfiguration();
							config.locale = Locale.CHINESE;
							MainActivity.this.getResources().updateConfiguration(config,
									MainActivity.this.getResources().getDisplayMetrics());
							MainActivity.this.setContentView(R.layout.activity_main); // 刷新当前布局

						} else if (which == 1) {
							Toast.makeText(MainActivity.this,
									MainActivity.this.getResources().getString(R.string.string_lan_english),
									Toast.LENGTH_SHORT).show();
							Locale.setDefault(Locale.ENGLISH);
							Configuration config = MainActivity.this.getResources().getConfiguration();
							config.locale = Locale.ENGLISH;
							MainActivity.this.getResources().updateConfiguration(config,
									MainActivity.this.getResources().getDisplayMetrics());
							MainActivity.this.setContentView(R.layout.activity_main);

						} else if (which == 2) {
							Toast.makeText(MainActivity.this,
									MainActivity.this.getResources().getString(R.string.string_lan_japanese),
									Toast.LENGTH_SHORT).show();
							Locale.setDefault(Locale.JAPAN);
							Configuration config = MainActivity.this.getResources().getConfiguration();
							config.locale = Locale.JAPAN;
							MainActivity.this.getResources().updateConfiguration(config,
									MainActivity.this.getResources().getDisplayMetrics());
						}

					}
				}).create().show();

	}

在项目res文件夹下新建文件values-en文件夹,string.xml内容如下:

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

    <string name="app_name">In18</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="change_l">change language</string>
    <string name="go">go</string>

</resources>

也就是与想要改变的文字的英文写法。本人日语不会也就没有添加相关的日语文字······

values文件夹下string.xml内容如下:

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

    <string name="app_name">语言国际化</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="change_l">改变语言</string>
    <string name="go">跳转</string>
    <string name="string_lan_china">中文</string>
    <string name="string_lan_english">英文</string>
    <string name="string_lan_japanese">日语</string>

</resources>

这样就可以实现简单的软件内部语言的国际化了,当然还有细节需要完善,比如还要判断当前手机系统的语言模式,并进行比较,在软件内部改变了语言的种类后也需要把状态给保存,下次启动软件后就是改变了后的语言了,这也是软件的最基本的要求。

希望对大家有用!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值