2014-01-13 2 views
6

내 응용 프로그램에서 응용 프로그램 언어를 변경할 수있는 특별한 메뉴가 있습니다 .JSON을 구문 분석하여 프로젝트 API에서 레이블을 얻었으며 프로젝트 값 xml을 변경할 수 있습니다. 응용 프로그램 및 сhangibg를 다시 시작하지 않고도 Android 응용 프로그램 언어를 변경할 수 있습니까? 시스템 언어.변경 안드로이드 응용 프로그램 언어

답변

7

이 방법을 삽입하고 언어 변경을 요청하십시오.

private void setLocale (String localeCode , Bundle b){ 
    Log.d(TAG+"set location function: "+localeCode); 
    locale = new Locale(localeCode); 
    Locale.setDefault(locale); 
    Configuration config = new Configuration(); 
    config.locale = locale; 
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
    getApplicationContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
    UserDetail.this.getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
    onCreate(null); 
} 
토글 변경이나 이런 어떤 선택 호출 값에

이 공유를위한

setLocale("en-us",savedInstanceStat); // for english 
setLocale("ar",savedInstanceStat); // for arabic 
+0

'에서 OnCreate (널)를 다시 시작 어떤 일을하지 않는 '것이다 예외가 발생합니다. 'recreate()'를 호출해야합니다; –

3

토글 버튼을 사용하여 언어를 변경하고 가까운 언어의 앱없이 프로그램에서 선택한 언어를 프로그램 적으로 설정할 수 있습니다.

1. 어떤 언어를 선택 했습니까?

String prefsToogleStr = getSharePrefrenceLocale(); 
     Log.d("tag", "CtrlDashBoard prefsToogleStr" + prefsToogleStr); 
     if (prefsToogleStr.equalsIgnoreCase("en")) { 
      toggleLocaleButton.setChecked(true); 
      CommonMethod.setLocale("en", viewDashBoard); 
     } else { 
      CommonMethod.setLocale("ur", viewDashBoard); 
      toggleLocaleButton.setChecked(false); 
     } 

////////////////////////////////////////

public String getSharePrefrenceLocale() { 

     SharedPreferences prefs = viewDashBoard.getSharedPreferences(
       viewDashBoard.getPackageName(), ViewDashBoard.MODE_PRIVATE); 

     return prefs.getString("locale", "en"); 
    } 
토글 버튼을 체크 변경 청취자의

2.change 언어 :

// Locale Toogle 
     toggleLocaleButton 
       .setOnCheckedChangeListener(new OnCheckedChangeListener() { 

        @Override 
        public void onCheckedChanged(CompoundButton buttonView, 
          boolean isChecked) { 
         if (buttonView.isChecked()) { 
          setSharePrefrenceLocale("en"); 
          CommonMethod.setLocale("en", viewDashBoard); 
         } else { 

          setSharePrefrenceLocale("ur"); 
          CommonMethod.setLocale("ur", viewDashBoard); 

         } 
         dialog.dismiss(); 
        } 
       }); 

    } 

//////////////////////////// /////////

public void setSharePrefrenceLocale(String locale) { 
     SharedPreferences prefs = viewDashBoard.getSharedPreferences(
       viewDashBoard.getPackageName(), ViewDashBoard.MODE_PRIVATE); 
     Editor editor = prefs.edit(); 
     editor.putString("locale", locale); 
     editor.commit(); 
    } 

///////// /////////////////////////////

홈페이지 방법 : 난 당신이 .this을 이해 바랍니다

public static void setLocale(String localeName, Context context) { 
    Locale locale = new Locale(localeName); 
    Locale.setDefault(locale); 
    Configuration config = new Configuration(); 
    config.locale = locale; 
    context.getResources().updateConfiguration(config, 
      context.getResources().getDisplayMetrics()); 
} 

전화 당신에게 유용합니다.

+0

헤이 감사하지만 심지어 응용 프로그램을 – Tony

관련 문제