2016-04-27 10 views
0

Ich werde die Dinge klarer machen. Ich habe eine Android-App, die Englisch und Französisch unterstützt.Wie kann man den Wert einer Variablen ändern, wenn man die lokale Sprache des Telefons kennt?

Daraus kennt die App die verwendete Sprache auf dem Telefon und ändert bei Bedarf die Sprache. Aber in meiner App analysiere ich Informationen von einer URL und möchte den Wert dieser URL im Vergleich zur Sprache der App (oder des Telefons) ändern.

Für französisch:

String QUERY_URL = "https://api.immotoolbox.com/xml/2.0/MCRE/produits/?search[typeTransaction]=Vente&_locale=fr"; 

Für Englisch:

String QUERY_URL = "https://api.immotoolbox.com/xml/2.0/MCRE/produits/?search[typeTransaction]=Vente&_locale=en"; 

Irgendwelche Ideen?

Danke

Antwort

2

definieren Zeichenfolge mit dem Namen query zum Beispiel in der /values/strings.xml und /values-fr/strings.xml Ressourcen :):

/values/strings.xml: 
<string name="query">your query in english</string> 

/values-fr/strings.xml: 
<string name="query">your query in french</string> 

in Ihrer Anwendung nur die folgenden Befehle verwenden Zeichenfolge zu erhalten:

String query = getActivity().getString(R.string.query); 

Wenn Sie dies in Nicht-Aktivität oder Nicht-Fragment-Klasse verwenden, tun Sie dies:

passieren jeden Kontext zu Ihrer Klasse wie das, mit einem Konstruktor:

public YourClassName(Context context) 
{ 
    this.context=context; 
} 

dann: context.getResources().getString(R.string.query_url);

+0

Es kennt nicht getActivity, und wenn ich nur String abfrage = getString (R.string.query_url); Ich habe dies -> verursacht durch: java.lang.NullPointerException: Versuch, virtuelle Methode aufzurufen android.content.res.Resources android.content.Context.getResources() 'auf eine Null-Objekt-Referenz – Jay

+0

@Jay rufen Sie dies an von einer Hintergrundaufgabe? – Pooya

+1

übergeben Sie den Kontext an Ihre Klasse mit einem Konstruktor: public YourClassName (Kontextkontext) { this.context = context; } dann context.getResources(). GetString (R.string.query_url); –

1

Sie können Locale.getDefault().getLanguage() verwenden, die Sie den Sprachcode gibt, dann können Sie es an Ihre Anfrage anhängen.

Uri.Builder builder = new Uri.Builder(); 
String lang = Locale.getDefault().getLanguage() 
if(!lang.equals("fr") && !lang.equals("en")) 
    lang = "en"; 
builder.appendQueryParameter("local", lang); 
String query = builder.build().getEncodedQuery(); 
URL url = new URL(url+"?"+query); 
+0

Ich habe deine Lösung nicht versucht, aber es scheint auch zu funktionieren, danke @Ramin! – Jay