2011-01-24 8 views
5

Estoy tratando de proporcionar compatibilidad con idioma árabe para mi aplicación de Android. La compatibilidad con el idioma árabe es proporcionada por defecto por Android 2.3. Por lo tanto, quiero saber si hay algún cambio en la UI que deba hacer al tiempo que proporciono soporte para el idioma árabe en Android.
Como las letras en árabe se escribieron de derecha a izquierda, ¿cuáles son las limitaciones que debo seguir en el diseño de la interfaz de usuario de Android y también en la codificación?
O bien, de lo contrario, el propio Android se encargará de leer los datos que ingresamos, ya sea que estén escritos de derecha a izquierda.Diseño de interfaz de usuario para aplicaciones de soporte de árabe en Android

¿Alguien me puede ayudar a solucionar este problema?

+0

También estoy enfrentando el mismo problema alguien puede sugerir ... –

+0

estoy teniendo el mismo problema. Lo que sí es posible es hacer XML de derecha a izquierda para árabe y de izquierda a derecha para inglés. el nombre de archivo y la identificación para cada control deben ser iguales. ¿Hay alguna otra forma [fácil] de hacer esto? –

+0

@HirenDabhi El soporte de RTL es fácil de implementar una vez que adquiere el hábito de usar Start & End en lugar de usar Right and Left cuando es necesario. Lee mi comentario para más detalles. – Teovald

Respuesta

1

tengo uso de este código y trabajo perfecto probarlo ..

public static void change_setting_arabic(Context con) { 
           try { 
               Locale locale = new Locale("ar"); 

               Class amnClass = Class.forName("android.app.ActivityManagerNative"); 
               Object amn = null; 
               Configuration config = null; 

               // amn = ActivityManagerNative.getDefault(); 
               Method methodGetDefault = amnClass.getMethod("getDefault"); 
               methodGetDefault.setAccessible(true); 
               amn = methodGetDefault.invoke(amnClass); 

               // config = amn.getConfiguration(); 
               Method methodGetConfiguration = amnClass 
                       .getMethod("getConfiguration"); 
               methodGetConfiguration.setAccessible(true); 
               config = (Configuration) methodGetConfiguration.invoke(amn); 

               // config.userSetLocale = true; 
               Class configClass = config.getClass(); 
               Field f = configClass.getField("userSetLocale"); 
               f.setBoolean(config, true); 

               // set the locale to the new value 
               config.locale = locale; 

               // amn.updateConfiguration(config); 
               Method methodUpdateConfiguration = amnClass.getMethod(
                       "updateConfiguration", Configuration.class); 
               methodUpdateConfiguration.setAccessible(true); 
               methodUpdateConfiguration.invoke(amn, config); 

           } catch (Exception e) { 
               // TODO: handle exception 
               Log.d("error lang change-->", "" + e.getMessage().toString()); 
           } 
       } 
0

Un poco pro-punta de Nurik romana (desde el equipo de Android):
Use gravedades de inicio y fin en lugar de IZQUIERDA y DERECHO para un mejor soporte de RTL. Aunque las constantes solo se definen en API 14 [0], son compatibles con versiones anteriores porque (1) están en línea en el momento de la compilación y (2) son funcionalmente equivalentes a IZQUIERDA y DERECHA en dispositivos anteriores debido a su menor bytes significativos:

start = 0x00800003
IZQUIERDA = 0x00000003
FIN = 0x00800005
DERECHA = 0x00000005

Se puede ver la diferencia entre el inicio y la izquierda con
<TextView layout_width=match_parent, gravity=start, text=[hebrew characters here]>
el texto Layo ut verá tus caracteres hebreos y alineará el texto al límite derecho de TextView en lugar de a la izquierda debido a la gravedad = inicio. Y tenga en cuenta que la gravedad horizontal predeterminada de TextView es inicio, no izquierda.

Por lo tanto, a la izquierda siempre está a la izquierda y a la derecha siempre está a la derecha, pero el inicio y el final pueden ser hacia la izquierda o hacia la derecha, dependiendo de la configuración regional.

Cuestiones relacionadas