2016-10-29 3 views
0

앱 설정에서 앱 언어를 변경하는 방법은 무엇입니까?응용 프로그램 언어는 어떻게 변경합니까?

내 앱이 스페인어, 포르투갈어 및 영어의 세 가지 언어를 지원하고 내 앱의 설정 메뉴에서 언어를 선택하는 옵션을 제공합니다.

+0

액션 바 제목 [다 언어 안드로이드 응용 프로그램 만들기] (http://stackoverflow.com/questions/39727543/make-multi-language-android-application/40302562#40302562) –

답변

0

다음 클래스를 사용하면 응용 프로그램에서 언어를 변경할 수 있습니다.

public class LocaleHelper { 

    private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language"; 

    public static void onCreate(Context context) { 
     String lang = getPersistedData(context, Locale.getDefault().getLanguage()); 
     setLocale(context, lang); 
    } 

    public static void onCreate(Context context, String defaultLanguage) { 
     String lang = getPersistedData(context, defaultLanguage); 
     setLocale(context, lang); 
    } 

    public static String getLanguage(Context context) { 
     return getPersistedData(context, Locale.getDefault().getLanguage()); 
    } 

    public static void setLocale(Context context, String language) { 
     persist(context, language); 
     updateResources(context, language); 
    } 

    private static String getPersistedData(Context context, String defaultLanguage) { 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     return preferences.getString(SELECTED_LANGUAGE, defaultLanguage); 
    } 

    private static void persist(Context context, String language) { 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     SharedPreferences.Editor editor = preferences.edit(); 

     editor.putString(SELECTED_LANGUAGE, language); 
     editor.apply(); 
    } 

    private static void updateResources(Context context, String language) { 
     Locale locale = new Locale(language); 
     Locale.setDefault(locale); 

     Resources resources = context.getResources(); 

     android.content.res.Configuration configuration = resources.getConfiguration(); 
     configuration.locale = locale; 
     DisplayMetrics dm = resources.getDisplayMetrics(); 
     resources.updateConfiguration(configuration, dm); 

    } 
} 

다음 개체를 사용하는 호출 언어 변경.

LocaleHelper.setLocale(getBaseContext(), "ar"); 

전화를 한 후 현재 활동을 새로 고침하지 마십시오. 희망이 당신을 도울 것입니다.

관련 문제