我有3個按鈕來更改語言。所以我需要製作方法,在那裏我可以設置聽衆按鈕,每次按下它們都可以改變語言。 我試過這個https://stackoverflow.com/a/2900144/1088229,但這樣它只改變一次locale,似乎這不再工作(如果我再次點擊,它甚至沒有響應)。所以我在偵聽器的末尾添加了changeLanguageListener()
,因此偵聽器被刷新。Android:以編程方式更改語言
那麼,它是好的,我如何解決它或有另一種方式?
private void changeLanguageListener() {
final Button butEn = (Button) findViewById(R.id.button_language_en);
final Button butLt = (Button) findViewById(R.id.button_language_lt);
final Button butRu = (Button) findViewById(R.id.button_language_ru);
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
Button but = (Button) v;
Resources res = getResources();
String current = res.getConfiguration().locale.getCountry();
Log.i("Current", current);
String localeString = new String(current);
if (but.equals(butEn)) {
localeString = "en";
} else if (but.equals(butLt)) {
localeString = "lt";
} else if (but.equals(butRu)) {
localeString = "ru";
}
Log.i("Clicked", localeString);
if (!current.equalsIgnoreCase(localeString) && localeString.length() > 0) {
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale(localeString.toLowerCase());
res.updateConfiguration(conf, dm);
//refresh menu
setGridView();
//added this line to get refreshed listener
changeLanguageListener();
}
}
};
butEn.setOnClickListener(listener);
butLt.setOnClickListener(listener);
butRu.setOnClickListener(listener);
}
的主要原因編程方式更改位置是語言包裝沒有我需要的語言。例如,我的手機有波羅的語言包,所以它有很多語言,包括立陶宛語(我的),英語,但沒有俄語(我們也需要它)。 –
@Moss:_「我不會推薦改變你的應用程序中的語言」_爲什麼不呢?有許多應用程序可以更改語言以幫助最終用戶的實例。例如,一個顯示遊客語言的急救應用程序讓他們瞭解醫務人員在外國受傷時接受治療的指示。 – ChuongPham
@ChuongPham:您的案例的確是一個很好的例子,說明應用程序內更改的真正用處和必要性。但在一般情況下,我更喜歡使用系統來處理應用程序的語言。 – Moss