2016-03-24 4 views
4

Ich habe Probleme mit der Anzeigesprache. Ich bin in der Lage, die Sprache innerhalb der Anwendung ("en" für Englisch und "ja" für Japanisch) unabhängig vom OS-System zu ändern.Android: Wie Sie App Locale unabhängig von Systemgebietsschema beibehalten?

Das Problem ist jedoch, dass, wenn die Anwendung in "ja" ist, wenn Benutzer die Systemsprache manuell ändern (nicht "en" oder "ja") als meine Anwendung automatisch die Sprache auf Standard ("en") . Ich möchte das Gebietsschema meiner Anwendung unabhängig machen, unabhängig von der Sprache, die Benutzer manuell ändern, die Sprache der Anwendung bleibt die gleiche wie beim Abmelden.

EDIT

Es gibt einige nützliche Links, aber sie können immer noch nicht mein Problem lösen. Zum Beispiel: Change language programatically in Android

Können Sie mir einen Vorschlag geben, es zu tun?

Vielen Dank im Voraus!

+0

Mögliche Duplikat [Sprache ändern programmatisch in Android] (http://stackoverflow.com/questions/2900023/change-language-programatically -in-android) –

+0

Ich benutze den gleichen Weg, der in Ihrem Link erwähnt wird, aber ich treffe das Problem. Vielen Dank für Ihren Link, ich werde meine Frage aktualisieren – LuongTruong

Antwort

0

Try this one:

import java.util.Locale; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.content.res.Resources; 
import android.util.DisplayMetrics; 

public void setLocale(String lang) { 
    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    Intent refresh = new Intent(this, AndroidLocalize.class); 
    startActivity(refresh); 
    finish(); 
} 

ZUSÄTZLICH:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    newConfig.setLocale(yourLocale); 
    super.onConfigurationChanged(newConfig); 
} 

ADDED (2):

Sie haben android:configChanges="layoutDirection|locale" zu setzen, um auszulösen, wenn Sie Locale ändern.
Ich kann nicht ganz verstehen, warum dies geschieht, vielleicht gibt es einige RTL Sprachen ...

+0

Es wäre besser, wenn Sie Ihre Antwort erklären könnten. Überlegen Sie, wie Ihr Code funktioniert. –

+0

@Suhyeon Lee: das ist, was ich in meiner App verwende. Gibt es trotzdem, um sicherzustellen, dass Benutzer nur das Gebietsschema in der App ändern können? Das Gebietsschema der App wird nicht vom Systemgebietsschema beeinflusst. Sogar Benutzer ändern das Gebietsschema des Systems, App bleibt immer noch dasselbe Gebietsschema – LuongTruong

+0

@LuongTruong Wenn Sie android: configChanges = "locale" auf Ihre App setzen, dann denke ich, dass Sie onConfigurationChanged() in Ihrer Aktivität überschreiben und das Gebietsschema sofort zurückgeben oder ändern können. –

Verwandte Themen