2012-01-10 22 views
12

Il seguente codice è per cambiare la localizzazione dell'app in spagnolo funziona bene su alcuni dispositivi, ma in alcuni dispositivi si sta ingrandendo (ingrandendo) le visualizzazioni nell'app. Qualcuno ha una soluzione?Localizzazione Android

Configuration config = getResources().getConfiguration(); 

// change this to a different Locale than your device 
Locale locale = new Locale("es", "es_ES"); 
config.locale = locale; 
Locale.setDefault(locale); 
getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics()); 
Log.i("onSelected..", Locale.getDefault().getCountry()); 
startActivity(new Intent(getApplicationContext(), HomePage.class)); 
finish(); 

risposta

3

// si sta aggiornando la configurazione utilizzando il displaymetris

quindi sarà apportato modifiche alla configurazione

getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics()); 
14

utilizzare questo metodo quando devo usare lingue diverse:

1) Impostare un int per tutte le lingue supportate. 2) Utilizzare una funzione di base per impostare le impostazioni internazionali predefinite. 3) Utilizzare una funzione per il lancio in diverse lingue.

Questo è l'esempio:

2)

public static void setDefaultLocale(Context context,String locale) 
{ 
    Locale appLoc = new Locale(locale); 
    Locale.setDefault(appLoc); 

    Configuration appConfig = new Configuration(); 
    appConfig.locale = appLoc; 

    context.getResources().updateConfiguration(appConfig, context.getResources() 
      .getDisplayMetrics()); 
} 

dove locale seguire la ISO 639-1

1)

private Language myLanguage; 
public enum Language 
{ 
    Null,Spanish,English,Catalan 
} 

3)

private void launchApplication(int language) 
{ 
    // Set Language 
    switch (language) 
    { 
     case 1: 
      // Español 
      setDefaultLocale(getApplicationContext(),"es"); 
      myLanguage = Language.Spanish; 
      break; 
     case 2: 
      // English 
      setDefaultLocale(getApplicationContext(),"en"); 
      myLanguage = Language.English; 
      break; 
     default: 
      // Catalan 
      setDefaultLocale(getApplicationContext(),"ca"); 
      myLanguage = Language.Catalan; 
      break; 
    } 

    Intent intent = new Intent(this, MyActivity.class); 
    startActivityForResult(intent, 2); 
    // Finish the Activity when return from the other Activity 
    finish(); 


} 

Quindi, chiamare launchApplication (int selezionato); e deve essere lavoro!

+0

Ciao scusa per il ritardo, funziona bene. Grazie –

+2

@srinivasa rao ramisetty ... Quindi segna la risposta come accettata. Sarebbe utile a molti. – 66CLSjY

+0

Accetta le risposte è bello – vgonisanz

6

e devi aggiungere "locale" alle modifiche di configurazione per la tua attività in manifest. Senza questo la mia attività a volte ha ignorato le modifiche locali.