2016-10-29 4 views
0

Wie ändere ich die Sprache einer Anwendung von der App-Einstellung?Wie ändere ich die Anwendungssprache?

Ich möchte, dass meine App drei Sprachen unterstützt: Spanisch, Portugiesisch und Englisch und eine Option zur Auswahl der Sprache aus dem Einstellungsmenü meiner App geben.

+0

mit action bar titles [machen mehrsprachige android-anwendung] (http://stackoverflow.com/questions/39727543/make-multi-language-android-application/40302562#40302562) –

Antwort

0

Mit der folgenden Klasse können Sie die Sprache von der Anwendung aus ändern.

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); 

    } 
} 

Sprachumschaltung mit folgendem Objekt aufrufen.

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

Bitte vergessen Sie nicht, die aktuelle Aktivität nach dem Aufruf dieses zu aktualisieren. Hoffe das wird dir helfen.