2012-06-11 25 views
6

मैं अपेक्षाकृत सरल एंड्रॉइड ऐप पर काम कर रहा हूं। मैं चाहता हूं कि यह एक अंग्रेजी संस्करण के साथ-साथ हिब्रू संस्करण हो। (आरटीएल दाएं से बाएं संरेखण)एंड्रॉइड हिब्रू (आरटीएल) एकीकरण

मैंने मैन्युअल रूप से लेआउट xml फ़ाइल में संरेखण को सही तरीके से बदल दिया है। एक वाक्य अंक (इसे के बीच में) होते हैं, अंक एक दर्पण दृश्य में प्रकट: 92 रूप 29 प्रकट होता है, 54:12 रूप 21:45 प्रकट होता है और 000,2 रूप 2,000 दिखाई देता है।

साथ ही, जब कोई वाक्य अंकों या अंग्रेजी वर्णों से शुरू होता है, तो वे इसे सब कुछ गड़बड़ाने के वाक्य के अंत में फेंक देते हैं।

मुझे लगता है कि एंड्रॉइड संस्करण 4.0.3 के लिए यह हिब्रू का समर्थन करता है। मैंने एमुलेटर में जांच की है।

तो पुराने संस्करणों के लिए हिब्रू को लागू करने का सही तरीका है? कृपया मदद करें।

उत्तर

20

मुझे लगता है कि एंड्रॉइड के बिडी विश्लेषण एल्गोरिदम में कुछ त्रुटियां हैं। यूनिकोड दो अदृश्य, दृढ़ता से दिशात्मक अक्षर है कि इन समस्याओं के साथ मदद कर सकता है:

  • U + 200E - बाएँ से सही निशान
  • U + 200F - दाएँ-से-बाएँ निशान

अंकों की ऑर्डर समस्या के लिए, अंक अनुक्रम के दोनों किनारों पर बाएं से दाएं अंक (यू + 200 ई) डालने का प्रयास करें।

यूनिकोड भी निम्न बीड़ी स्वरूपण कोड है:

  • U + 202A - बाएँ से सही embedding
  • U + 202B - सही-से-बाएँ embedding
  • U + 202C - पॉप बाएँ-से-सही ओवरराइड
  • U + 202E - - दिशात्मक स्वरूपण
  • U + 202D (पिछले एम्बेडिंग या ओवरराइड रद्द) दाएँ-से-बाएँ ओवरराइड

हिब्रू पाठ में अंग्रेजी टुकड़ों के साथ समस्या के लिए, यह अंग्रेजी से पहले दाएं से बाएं निशान डालने जितना आसान हो सकता है। (एंड्रॉइड का एल्गोरिदम इंप्रेशन के तहत हो सकता है कि पैराग्राफ बाएं से दाएं है क्योंकि पहले अक्षर अंग्रेजी हैं।) यदि यह काम नहीं करता है, तो शायद स्वरूपित कोड के कुछ संयोजन के साथ चयनित पाठ के आस-पास प्रयास करें। (मैं पॉप दिशात्मक स्वरूपण के बाद बाएं से दाएं एम्बेडिंग का प्रयास करता हूं। मैं चुनिंदा स्पष्ट दाएं से बाएं एम्बेडिंग के साथ संयुक्त सब कुछ के आसपास दाएं से बाएं एम्बेडिंग भी कोशिश करता हूं।)

ये तरीका हैं टेक्स्ट लेआउट को प्रभावित करने के लिए यूनिकोड बिडरेक्शनल एल्गोरिदम Unicode Standard Annex #9 द्वारा परिभाषित किया गया है। हालांकि, अगर एंड्रॉइड का कार्यान्वयन टूट गया है (और मुझे संदेह है कि यह है), तो आप जो भी कर सकते हैं वह परीक्षण और त्रुटि है जब तक आप चीजों को सही नहीं देखते। सौभाग्य।

संपादित

जहां तक ​​कोड का संबंध है, यहाँ है कि यह कैसे जावा में किया जा सकता है की एक उदाहरण है:

String text = "גרסה \u200e2.100\u200e זמינה"; 

एक्सएमएल में, यह हो सकता है:

<string name="update_available">גרסה &#x200e;2.100&#x200e; זמינה</string> 
+0

आप इस – Nirali

+0

@Nirali लागू करने के लिए कुछ कोड प्रारूप दे सकते हैं मैं कुछ कोड –

+0

जोड़ा आप में एक व्याकरण गलती है हिब्रू - आपको זמין to זמינה – auval

2
यहाँ

मेरे हेब्रू स्ट्रिंग एक्सएमएल का एक उदाहरण है, टेड होप के उत्तर के लिए धन्यवाद:

आपको टी से पहले '\ u200e' जोड़ना होगा वह चार आप समस्या का कारण बनता है कि:

<string name="basic_text1">המר על תוצאת המשחק\u200e:</string> 

और परिणाम होगा:

:המר על תוצאת המשחק 
+0

क्या आपको हेब्रू टेक्स्ट के साथ हर पंक्ति पर ऐसा करने की ज़रूरत है? –

+1

जहां तक ​​मैं रनटाइम पर याद रख सकता हूं आपको इसकी आवश्यकता नहीं है, लेकिन आपको ग्राफिकल लेआउट पर इसे ठीक से देखने के लिए इसे जोड़ने की आवश्यकता है। –

+0

क्या आपको एक कस्टम फ़ॉन्ट स्थापित करने की आवश्यकता है? –

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