2011-01-24 2 views
5

Android 앱에 아랍어 언어 지원을 제공하려고합니다. 아랍어 지원은 기본적으로 Android 2.3에서 지원됩니다. 따라서 Android에서 아랍어를 지원하면서 UI 변경이 필요한지 알고 싶습니다.
아랍어 문자가 오른쪽에서 왼쪽으로 쓰여졌으므로 Android UI 레이아웃 디자인 및 코딩에서 따라야 할 제약 사항은 무엇입니까?
그렇지 않으면 안드로이드 자체가 오른쪽에서 왼쪽으로 입력되었는지 여부와 상관없이 입력 한 데이터를 읽는 일을 처리 할 것입니다.Android에서 아랍어 지원 앱용 UI 디자인

누구든지이 문제를 해결할 수 있습니까? 나는 그것을 시도이 코드를 사용하고 완벽한 작업이

+0

또한 동일한 문제에 직면하고있는 사람은 누구나 제안 할 수 있습니다. –

+0

동일한 문제가 있습니다. 나는 아랍어에 대해서는 오른쪽에서 왼쪽으로 XML을, 영어에서는 왼쪽에서 오른쪽으로 XML을 만들 수 있습니다. 각 컨트롤의 파일 이름과 ID는 동일해야합니다. 이 일을하는 다른 방법이 있습니까? –

+0

@HirenDabhi 필요한 경우 Right과 Left 대신 Start & End를 사용하는 습관을 얻으면 RTL 지원을 구현하기가 쉽습니다. 자세한 내용은 내 의견을 읽어보십시오. – Teovald

답변

1

..

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

(안드로이드 팀) 로마 Nurik에서 약간의 프로 팁 :
사용 시작과 끝의 중력 대신 LEFT 더 나은 RTL 지원을 위해서는 RIGHT가 필요합니다. 상수는 API 14 [0]에만 정의되어 있지만 (1) 컴파일 타임에 인라인됩니다 (2) 이전 버전의 장치에서 LEFT 및 RIGHT와 기능적으로 동일하므로 하위 호환성이 있으므로 하위 호환성을 유지합니다. 중요한 바이트 :

START =
0x00800003 LEFT = 0x00000003
END = 0x00800005
RIGHT = 당신은
<TextView layout_width=match_parent, gravity=start, text=[hebrew characters here]>
텍스트 layo와 START 차이 왼쪽을 볼 수 있습니다 0x00000005

ut은 히브리어 문자를보고 중력 = 시작 때문에 왼쪽 대신 텍스트보기의 오른쪽 경계에 텍스트를 맞 춥니 다. 그리고 TextView의 기본 가로 중력은 왼쪽이 아니라 시작임을 유의하십시오.

그래서 왼쪽은 항상 왼쪽이고 오른쪽은 항상 오른쪽이지만 시작 및 끝은 로캘에 따라 왼쪽 또는 오른쪽 일 수 있습니다.