2017-06-12 7 views
0

私の中の他の言語を変更するには、以下のコードを使用しています。しかし、アプリ内で言語を変更した後は常にデフォルトの文字列ファイルを使用します。スタジオでは、同じ値のフォルダに新しい他の言語の文字列ファイルが作成されます。 Plsは私を助ける。ここでは、マレー語のロケール「ms-rMY」を渡しています。私も "ms"で試しました。あなたはこのコンストラクタを使用して、言語、国とのLocaleオブジェクトを作成することができます。この他の言語の文字列ファイルを変更できません。常にデフォルトの文字列ファイル

Local myLocale = new Locale("ms", "MY"); 

のようにローカルオブジェクトを作成する必要があるコード

public void updateLocale(String language) { 
     Locale myLocale = new Locale(language); 
     Locale.setDefault(myLocale); 
     Resources res = getResources(); 
     DisplayMetrics dm = res.getDisplayMetrics(); 
     Configuration conf = res.getConfiguration(); 
     conf.locale = myLocale; 
     res.updateConfiguration(conf, dm); 

     finish(); 
     Intent refresh = new Intent(getApplicationContext(), MainActivity.class); 
     refresh.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(refresh); 
    } 
+1

あなたのコードは大丈夫でしょうか、多分問題はあなたの値xxフォルダにあります。あなたは値-frのような簡単なものを試してから、 "fr"にロケールを設定できますか? – lelloman

答えて

2

下に確認してください。

0

Androidシステムでは常に、デバイスの設定で設定された言語が使用されます。このように変更すると、その言語は1つのアクティビティに保持されます。したがって、アクティビティのonCreateでローカルを変更する必要があります(毎回)。

@Override 
public void onCreate(Bundle bundle) { 
    //change the locale 
} 
+0

すでに作成中です – iffu

+0

@iffuロケールを変更した後でアクティビティを開始することはできません。これによりシステム言語に戻ります。アクティビティを開始し、ロケールを変更する必要があります。 – Rockernaap

関連する問題