2011-01-24 11 views
5

मैं अपने एंड्रॉइड ऐप के लिए अरबी भाषा समर्थन प्रदान करने की कोशिश कर रहा हूं। एंड्रॉइड 2.3 द्वारा डिफ़ॉल्ट रूप से अरबी भाषा समर्थन प्रदान किया जाता है। इसलिए, मैं जानना चाहता हूं कि एंड्रॉइड में अरबी भाषा के लिए समर्थन प्रदान करते समय मुझे कोई यूआई परिवर्तन करना है या नहीं।
अरबी में अक्षरों को दाएं से बाएं से लिखा गया था, एंड्रॉइड यूआई लेआउट डिज़ाइन और कोडिंग में मुझे क्या बाधाएं हैं?
अन्यथा एंड्रॉइड स्वयं हमारे द्वारा दर्ज किए गए डेटा को पढ़ने का ख्याल रखेगा, चाहे वह दाएं से बाएं टाइप किया गया हो।एंड्रॉइड में अरबी समर्थन ऐप्स के लिए यूआई डिज़ाइन

क्या कोई इस मुद्दे को हल करने में मेरी सहायता कर सकता है?

+0

मुझे भी एक ही समस्या का सामना करना पड़ सकता है कोई भी सुझाव दे सकता है ... –

+0

मुझे एक ही समस्या है। मैं अंग्रेजी के लिए अरबी और बाएं से दाएं के लिए दाएं से बाएं एक्सएमएल बनाना संभव है। प्रत्येक नियंत्रण के लिए फ़ाइल नाम और आईडी समान होना चाहिए। क्या इस चीज को करने के लिए कोई और तरीका आसान है? –

+0

@HirenDabhi 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 से एक छोटी सी समर्थक टिप (एंड्रॉयड टीम की ओर से):
उपयोग के बजाय वाम START और END की gravities और बेहतर आरटीएल समर्थन के लिए सही। यद्यपि स्थिरांक केवल एपीआई 14 [0] में परिभाषित किए गए हैं, वे पिछड़े संगत हैं क्योंकि (1) वे संकलन समय पर रेखांकित हैं और (2) वे कार्यात्मक रूप से पूर्व उपकरणों पर बाएं और दाएं के बराबर हैं क्योंकि उनके कम से कम- महत्वपूर्ण बाइट:

स्टार्ट = 0x00800003
वाम = 0x00000003
अंत = 0x00800005
सही = 0x00000005

आप शुरू के बीच का अंतर और
<TextView layout_width=match_parent, gravity=start, text=[hebrew characters here]>
पाठ layo के साथ छोड़ दिया देख सकते हैं गुरुत्वाकर्षण = शुरू होने के कारण आप अपने हिब्रू वर्णों को देखेंगे और बाईं ओर के बजाय टेक्स्ट व्यू के दाएं किनारे पर टेक्स्ट संरेखित करेंगे। और ध्यान दें, TextView की डिफ़ॉल्ट क्षैतिज गुरुत्वाकर्षण शुरू हो गई है, बाएं नहीं।

तो, बाएं हमेशा बाएं रहते हैं और दाएं हमेशा सही होता है, लेकिन लोकेल के आधार पर प्रारंभ और अंत या तो बाएं या दाएं हो सकता है।

संबंधित मुद्दे