2016-07-01 5 views
2

ボタンをクリックするか、メニュー項目を選択したときに、アプリ内のすべてのテキストを他のテキストに変更できますか?クリックイベントですべてのアクティビティ(ボタンテキスト、テキストビューなど)のすべてのテキストを変更するにはどうすればよいですか?

私が実際にやろうとしているのは、私のアプリをいくつかの非iso言語に翻訳することです( "non-iso"は、wikiのISO-639のリストでは見つかりませんでした)。

私は、電話言語の設定に関係なく、ユーザーが自分のアプリを表示する言語を選択できるようにしたいと考えています。そして、私は彼らがアプリ内から言語を選択できるようにしたい。

私はすべての英語ボタンとtextviewテキストをstrings.xmlに入れました。新しい言語のstrings-xx.xmlを作成できます。

言語オプションが表示されているサブメニューを使用します。したがって、テキストの変更はそのメニューのonclickイベントに応答します。 どのポインタも大歓迎です。

+1

関連情報:http://stackoverflow.com/questions/2900023/change-language-programmatically-in-をアンドロイド –

答えて

2
撮影

から:How to change language of app when user selects language?

public void setLocale(String lang) { 
    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    Intent refresh = new Intent(this, YOURACTIVITY.class); 
    startActivity(refresh); 
    finish(); 
} 

あなたキャンは「ド」のように、あるsetLocaleメソッドに任意の有効な言語の文字列を渡すか、「それを」、しかし、あなたは活動を再開する必要があります。

戻るボタンを押してもアプリケーションの動作がわかりません。それはあなたの「古い」の活動を開始した場合は、あなたの活動を再開しながら、これを試してみてください。ここ

public void setLocale(String lang) { 
    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    Intent refresh = new Intent(this, YOURACTIVITY.class); 
    refresh.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    startActivity(refresh); 

}

+0

あなたの返信に多くの感謝。私の遅れた応答に対する謝罪。非常に愛する人が亡くなりました。さて、私はあなたのソリューションを適用し、それはうまく動作します。私はまた私のランチャーアクティビティのonCreateで呼び出すloadLocale()メソッドがあります。私が抱っている唯一の問題は、私がアプリケーションを閉じてそれを再び開くと、私は空白の画面が表示されるということです。私は、loadLocaleメソッドをコメントアウトすると、アプリケーションが正常にロードされ、ロケールはokに変わりますが、ロケール設定は保存されないことがわかりました。以下はloadLocale()メソッドです。最後の行のchangeLanguage()は、上記のsetLocale()メソッドと同じです。 – GeorgeF

+0

'public void loadLocale(){ 文字列langPref ="言語 "; SharedPreferences prefs = getSharedPreferences( "com.georgey.multilanguageapp.PREFERENCES"、Context.MODE_PRIVATE);文字列言語= prefs.getString(langPref、 ""); changeLanguage(language); } ' – GeorgeF

関連する問題