Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 安卓多語言設置

安卓多語言設置

編輯:關於Android編程

最近做的項目中使用到了多語言切換功能。那麼多語言切換首先要注意的是,在xml文件中和代碼當中,所有使用文本字符串的地方,確保所使用的string文本是從values文件夾下的string.xml中獲取。

那麼做多語言需要兩到三個文件。1 values文件夾下的string.xml文件這裡存放的是你app在沒有進行語言設置的時候默認使用的語言類型。2 values-en文件夾(這個文件夾是自己創建的,當然也可以是別的名字string.xml 這裡存放的是每個文本對應的英文文本。3values-tw(繁體中文)

需要注意一下,三個文件夾下的string.xml文件中的文本變量,必須保證數目一致,對應的名稱一致。

下面是切換代碼部分。我挑選出重要的解釋。

public class ChangeLanquageActivity extends BaseActivity implements
		OnClickListener {
	private RelativeLayout cnBtn, twBtn, enBtn;
	private ImageView cnBtn_choose, twBtn_choose, enBtn_choose;
	private Button leftBtn;
	private TextView topTtitle;
	SharedPreferences Sp;// 保存語言切換的SP,以便後續的網絡請求中,發送當前語言類型

	@Override
	protected int getContentLayout() {
		return R.layout.activity_language;
	}

	@Override
	protected void initGui() {
		leftBtn = (Button) findViewById(R.id.leftBtn);
		topTtitle = (TextView) findViewById(R.id.topTitle);
		cnBtn = (RelativeLayout) findViewById(R.id.cnBtn);
		twBtn = (RelativeLayout) findViewById(R.id.twBtn);
		enBtn = (RelativeLayout) findViewById(R.id.enBtn);
		cnBtn_choose = (ImageView) findViewById(R.id.cnBtn_choose);
		twBtn_choose = (ImageView) findViewById(R.id.twBtn_choose);
		enBtn_choose = (ImageView) findViewById(R.id.enBtn_choose);
		Sp = getSharedPreferences("userInfo", this.MODE_WORLD_WRITEABLE);
	}

	@Override
	protected void initAction() {
		cnBtn.setOnClickListener(this);
		twBtn.setOnClickListener(this);
		enBtn.setOnClickListener(this);
		leftBtn.setOnClickListener(this);
	}

	@Override
	protected void initData() {//初始化切換語言的按鈕的文本,在這裡說明一下,MBConfig.Language是用於保存當前語言環境的全局變量,0,1,2代表三種語言設置

		topTtitle.setText(R.string.language_set);
		if (StringUtils.equals(MBConfig.Language, "0")) {
			// 繁體中文
			cnBtn_choose.setVisibility(View.INVISIBLE);
			twBtn_choose.setVisibility(View.VISIBLE);
			enBtn_choose.setVisibility(View.INVISIBLE);
		} else if (StringUtils.equals(MBConfig.Language, "1")) {
			// 英文
			cnBtn_choose.setVisibility(View.INVISIBLE);
			twBtn_choose.setVisibility(View.INVISIBLE);
			enBtn_choose.setVisibility(View.VISIBLE);
		} else if (StringUtils.equals(MBConfig.Language, "2")) {
			// 簡體中文
			cnBtn_choose.setVisibility(View.VISIBLE);
			twBtn_choose.setVisibility(View.INVISIBLE);
			enBtn_choose.setVisibility(View.INVISIBLE);
		}
	}

	@Override
	public void onClick(View v) {//點擊事件,點擊後切換語言配置。切換的配置用sp保存,以便下次進入的時候使用。中間的按鈕現隱藏邏輯可以不用考慮。
		 
		Resources resources = getResources();
		Editor edit = Sp.edit();
		switch (v.getId()) {
		case R.id.leftBtn:
			hideProgressDialog();
			finish();
			break;
		case R.id.cnBtn:
			cnBtn_choose.setVisibility(View.VISIBLE);
			twBtn_choose.setVisibility(View.INVISIBLE);
			enBtn_choose.setVisibility(View.INVISIBLE);
			changeAppLanguage(resources, "CN");
			MBConfig.Language = "2";
			edit.putString("LANGUAGE", "2");
			edit.commit();
			 
			 
			hideProgressDialog();
			finish();
			break;
		case R.id.twBtn:
			cnBtn_choose.setVisibility(View.INVISIBLE);
			twBtn_choose.setVisibility(View.VISIBLE);
			enBtn_choose.setVisibility(View.INVISIBLE);
			changeAppLanguage(resources, "TW");
			MBConfig.Language = "0";
			edit.putString("LANGUAGE", "0");
			edit.commit();
			 
			 
			hideProgressDialog();
			finish();
			break;
		case R.id.enBtn:
			cnBtn_choose.setVisibility(View.INVISIBLE);
			twBtn_choose.setVisibility(View.INVISIBLE);
			enBtn_choose.setVisibility(View.VISIBLE);
			changeAppLanguage(resources, "EN");
			MBConfig.Language = "1";
			edit.putString("LANGUAGE", "1");
			edit.commit();
			 
			hideProgressDialog();
			finish();
			break;
		default:
			break;
		}

	}

	public void changeAppLanguage(Resources resources, String lanAtr) {//切換語言的方法

		Configuration config = resources.getConfiguration();//讀取系統配置信息
		DisplayMetrics dm = resources.getDisplayMetrics();
		if (lanAtr.equals("CN")) {
			config.locale = Locale.CHINA;
		} else if (lanAtr.equals("TW")) {
			config.locale = Locale.TAIWAN;
		} else if (lanAtr.equals("EN")) {
			config.locale = Locale.ENGLISH;
		} else {
			config.locale = Locale.getDefault();
		}
		//上面是對應三種情況下設置三種語言設置
		resources.updateConfiguration(config, dm);//刷新語言設置信息,這步不能少。
	}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved