英語とアラビア語の両方をサポートする必要があるアンドロイドアプリケーションを開発しています。 a。英語とアラビア語のための作成された値フォルダと使用された文字列を更新しました。 b。ローカライゼーション用のアプリケーションクラスを作成しました c。活動アンドロイドアプリケーションのマルチ言語サポートを有効にする
にボタンのクリックでコードを実装することは
import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;
import java.util.Locale;
public class MyApp extends Application{
@Override
public void onCreate() {
super.onCreate();
}
public static void setLocaleAr (Context context){
Locale locale = new Locale("ar");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getApplicationContext().getResources().updateConfiguration(config, null);
}
public static void setLocaleEn (Context context){
Locale locale = new Locale("en_US");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getApplicationContext().getResources().updateConfiguration(config, null);
}
}
マイアクティビティクラス使用してボタンを
MainActivity.javaをクリックし
MyApp.java私のアプリケーションのファイルを参照してください。
import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import android.os.Bundle; import android.os.Handler; import android.util.DisplayMetrics; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.SimpleAdapter; import java.util.Locale; public class SplashActivity extends Activity implements View.OnClickListener{ // Splash screen timer private static int SPLASH_TIME_OUT = 3000; Button buttonEnglish,buttonArabic; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); buttonEnglish =(Button) findViewById(R.id.buttonEnglish); buttonArabic =(Button) findViewById(R.id.buttonArabic); buttonEnglish.setOnClickListener(this); buttonArabic.setOnClickListener(this); } @Override public void onClick(View view) { switch(view.getId()) { case R.id.buttonEnglish: MyApp.setLocaleEn(SplashActivity.this); setLocale("en"); break; case R.id.buttonArabic: { //buttonArabic.setBackground(getDrawable(R.color.white)); MyApp.setLocaleAr(SplashActivity.this); setLocale("ar"); break; } } } }
を更新するには、 'ニーズが再起動するか、not'このメソッドを使用し、スプラッシュActivityクラス自体からロケールを更新することができます - あなたはそれを試してみましたか?そして、なぜあなたはデバイスのロケールに落ち着かないのですか? –
これは、新しいバージョンのローカライゼーションを行う正しい方法ですか?今ではローカライゼーションは自分のコードではできません。 – prg
いいえ、正しい方法はシステムロケールを使用し、手動で設定しないことです。 –