2012-03-13 20 views
5

Estoy tratando de saber si es posible cambiar el idioma predeterminado del sistema operativo Android a otro. Para el cual el idioma no está en la configuración, por ejemplo: cómo configurar el idioma del dispositivo en birmano mediante programación.Android: ¿Hay alguna forma de cambiar el idioma predeterminado de Android a un nuevo idioma?

+2

¿Estás hablando de hacer esto * en código *? –

+0

@John Skeet: pls vea mi pregunta actualizada. Sí, necesito hacerlo programáticamente. –

+0

¿Está buscando desarrollar aplicaciones de Android en otras plataformas, excepto Java? –

Respuesta

12

Utilice esta opción para cambiar el idioma por programmatically--

Locale locale = new Locale("en_US"); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 
context.getApplicationContext().getResources().updateConfiguration(config, null); 

Escribir el código del país de la lengua en lugar de "en_US" cualquier idioma que quiere ... como para japonés - "ja_JP" Para árabe - "ar" o consulte este enlace para ver el código del país--

http://code.google.com/apis/igoogle/docs/i18n.html

y hacer una carpeta en res/valores-ja para japonés o res/values-ar para árabe ..

Y hacer archivo string.xml y poner las lenguas lo que quiera en su diseño .. Buscará el idioma predeterminado de la carpeta de valores, de lo contrario lo querrá manualmente, luego lo buscará en su carpeta externa values-ar, etc. como ...

Su ejemplo de res/values-ar para árabe - -

<?xml version="1.0" encoding="UTF-8"?> 
    <resources> 
    <string name="spinner_label">تصفية حسب</string> 
    <string name="app_name">2011 فرق</string> 
    <string name="search">بحث :</string> 
</resource> 

espero que le ayudará a ..

+0

Buena respuesta Hulk, señor. Estoy usando el mismo código en mi projcet (Diff): P –

+0

¿Dónde poner este código Local.setDefault? en el MainActivity.java? –

+0

Debe poner esto en Crear() de cada actividad.De lo contrario, puede ser anulado por el sistema, por ejemplo, cuando enciende el dispositivo y vuelve a crear su actividad con una nueva configuración (proporcionada por el sistema). –

3

puede cambiar la configuración regional a lo que desee y el sistema necesita compatibilidad.

intente esto:

public static void changeLocale(Locale locale) { 
    try { 
     Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative"); 

     Object am = activityManagerNative.getMethod("getDefault").invoke(activityManagerNative); 

     Object config = am.getClass().getMethod("getConfiguration").invoke(am); 
     config.getClass().getDeclaredField("locale").set(config, locale); 
     config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true); 

     am.getClass().getMethod("updateConfiguration", android.content.res.Configuration.class).invoke(am, config); 
     Log.i(LOG_TAG, "send change locale request"); 
    } catch (Exception e) { 
     Log.e(LOG_TAG, "change locale error:", e); 
    } 
} 
+0

¿Este código cambia el idioma predeterminado a otro idioma nuevo? –

+1

sí, la configuración regional de birmano le puede gustar 'Locale locale = new Locale (" my ")', pero su dispositivo necesita compatibilidad con este idioma; de lo contrario, el sistema no cambiará el idioma. – idiottiger

+0

+1 para esta información útil. Pero, ¿y si el dispositivo no tiene un idioma birmano integrado y tengo que hacerlo funcionar en todos los dispositivos? –

Cuestiones relacionadas