2016-06-13 21 views
1

Androidアプリに6種類の言語があり、アプリの言語を選択するオプションを作成したいと考えています。 私は、そのコードを見たが、アプリが再起動後に言語をリセットします:アプリ内の言語を切り替えるオプションを作成する方法

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, AndroidLocalize.class); 
startActivity(refresh); 
finish(); 
} 

は、私は、ユーザーが選択した言語を保つために何ができますか?

String sharedPrefName = "your_preference_name" 
String key = "selected_language" 

// save the selected language 
SharedPreferences sharedpreferences = getSharedPreferences(sharedPrefName, Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedpreferences.edit(); 
editor.putString(key, "english"); // replace "english" with user's selected language 
editor.commit(); 

// retrieve selected language 
SharedPreferences sharedpreferences = getSharedPreferences(sharedPrefName, Context.MODE_PRIVATE); 
String language = sharedpreferences.getString(key, "english"); // replace "english" with your app's default language 

// load the app with the language selected... 
+0

SharedPreferences' 'で言語を保存します。 –

+0

どうすればいいですか(つまり、6つの言語があります)? –

+0

選択した言語の識別子である 'SharedPreferences'にキーを保存し、アプリが開くときに読み込みます。 – mgcaguioa

答えて

2

あなたはこのような何かを試すことができます。言語コードの接尾辞を持つ言語の新しいvaluesディレクトリを作成します。ドイツ語の場合:values-deまたはfrench:values-frをstrings.xmlにコピーして各エントリを変換します。

ユーザーが言語のリストからアプリを選択すると、アプリの言語を変更するのは簡単です。ロケールを文字列(英語の場合は「en」、ヒンディー語の場合は「hi」など)として受け付け、アプリケーションのロケールを設定し、現在のアクティビティをリフレッシュして言語の変更を反映させる、以下のようなメソッドを用意します。適用したロケールは、手動で再度変更するまで変更されません。

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, AndroidLocalize.class); 
    startActivity(refresh); 
    finish(); 
} 

あなたがパッケージ以下のインポートを確認してください:

import java.util.Locale; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.content.res.Resources; 
import android.util.DisplayMetrics; 
+0

ありがとう、それは正常に動作しますが、アプリケーションが選択された言語を取得するとき、なぜ私はアプリのデフォルト言語を置く必要がありますか? –

+0

あなたのアプリが言語をまだ設定していない場合、デフォルトの言語が使用されます – mgcaguioa

0

多言語サポートが簡単にアンドロイドのために行われる:

+0

あなたの答えはOPがすでに行ったこととどのように違うのか説明してください。 –

+0

mgcaguioaは、現在選択されている言語を共有プリファレンスに格納する方法を教えました。現在使用されている言語の参照を保持するために使用されます。私が投稿したコードは、アンドロイドアプリケーションで言語を切り替える方法を教えてくれます。 –

+0

質問を再度参照すると、OPはあなたの答えにあなたが示唆していることをすでに行っています。だから、あなたの答えがどう違うかはまだ分かりません。 –

関連する問題