Android Aggiunta di traduzione alla tua app Android


Esempio

Devi creare un file strings.xml diverso per ogni nuova lingua.

  1. Fare clic con il tasto destro sulla cartella res
  2. Scegli NuovoFile delle risorse dei valori
  3. Seleziona una locale dai qualificatori disponibili
  4. Fare clic sul pulsante Avanti (>>)
  5. Seleziona una lingua
  6. Denominare il file strings.xml

strings.xml

<resources>
    <string name="app_name">Testing Application</string>
    <string name="hello">Hello World</string>
</resources>

strings.xml (hi)

<resources>
    <string name="app_name">परीक्षण आवेदन</string>
    <string name="hello">नमस्ते दुनिया</string>
</resources>

Impostazione della lingua in modo programmatico:

public void setLocale(String locale) // Pass "en","hi", etc.
{
    myLocale = new Locale(locale);
    // Saving selected locale to session - SharedPreferences.
    saveLocale(locale);
    // Changing locale.
    Locale.setDefault(myLocale);
    android.content.res.Configuration config = new android.content.res.Configuration();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        config.setLocale(myLocale);
    } else {
        config.locale = myLocale;
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        getBaseContext().createConfigurationContext(config);
    } else {
        getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    }
}

La funzione sopra cambierà i campi di testo a cui si fa riferimento da strings.xml . Ad esempio, supponi di avere le seguenti due visualizzazioni di testo:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/app_name"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/hello"/>

Quindi, dopo aver modificato le app_name internazionali, le stringhe della lingua con gli ids app_name e hello verranno modificate di conseguenza.