I'm developing an android application which should support both English and Arabic.I have done a. Created values folder for English and Arabic and updated the strings used. b. Created an Application class for localization c. Implemented the code on button click in Activity
See my Application file
MyApp.java
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); } } My activity class using button click
MainActivity.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; } } } }
needs restart or not- have you tried it? And why don't you jus fall-back to the device's locale?