2012-01-10 8 views
12

El siguiente código es para cambiar la configuración regional de la aplicación al español. Funciona bien en algunos dispositivos, pero en algunos dispositivos está ampliando (ampliando) las vistas en la aplicación. ¿Alguien tiene una solución?Localización de 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(); 

Respuesta

3

// está actualizando la configuración mediante el displaymetris

por lo que será realizado cambios en la configuración de su

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

Puedo usar este método cuando tengo que utilizar diferentes idiomas:

1) Establezca un int para todos los idiomas admitidos. 2) Use una función básica para establecer la Configuración regional predeterminada. 3) Use una función para iniciar en diferentes idiomas.

Este es el ejemplo:

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

donde locale siga el 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(); 


} 

Luego, llame a launchApplication (int selected); y debe ser trabajo!

+0

Hola, lo siento por la demora, está funcionando bien. Gracias u –

+2

@srinivasa rao ramisetty ... A continuación, marque la respuesta como aceptada. Sería útil para muchos. – 66CLSjY

+0

Aceptar respuestas es hermoso – vgonisanz

6

y debe agregar 'locale' a los cambios de configuración para su actividad en manifiesto. Sin esto, mi actividad ignoró los cambios locales a veces.