2009-03-28 12 views
5

मैं यह तय करने जा रहा हूं कि यूआई विवरण के लिए एक्सएमएल-आधारित प्रारूप के अंतर्राष्ट्रीयकरण को कैसे संभाला जाए।एक्सएमएल दस्तावेजों के I18N

प्रारूप आम तौर पर इस तरह दिखता है:

... 
<devif> 
    <screen id="scr1" title="Settings for this and that"> 
    <header text="Climate readings"/> 
    <rd setp="123" text="Air temperature" unit="°C"/> 
    <rd setp="234" text="Humidity" unit="%RH"/> 
    <rd setp="345" text="CO2" unit="ppm"/> 

    <header text="Settings"/> 
    <wr setp="567" text="Air temperature demand" unit="°C"/> 
    </screen> 
    ... 
</devif> 

प्रत्येक फ़ाइल स्क्रीन के बहुत सारे शामिल है और कुछ 10.000 लाइनों को हो सकता है, और हम अपने आवेदन में इन फ़ाइलों में से एक दर्जन से अधिक है।

मैं अभी भी अपनी आवश्यकताओं के अनुरूप प्रारूप को बदल सकता हूं। तो आप इसका अनुवाद कैसे करेंगे?

मैं कुछ संभव तरीके इस संभाल करने के बारे में सोच रहा है:

  • अंग्रेज़ी पाठ और अनुवादित पाठ
  • युक्त प्रत्येक टैग के लिए एक आईडी का उपयोग करना और एक अलग फाइल का उपयोग प्रत्येक भाषा के लिए एक अलग फ़ाइल प्रत्येक आईडी
  • एक ही फाइल में सभी अनुवाद रखने के लिए अनुवादित पाठ के साथ

पहला समाधान समस्या जहां अंग्रेज़ी पाठ में अनुवाद किया जा सकता है संदर्भ के आधार पर अलग संदेश।

दूसरा समाधान स्रोत फ़ाइल को कम पठनीय बनाता है (हालांकि बहुत अधिक नहीं), और यह आसानी से विशेषताओं के अनुवाद को संभाल नहीं करता है।

तीसरा समाधान फाइल को 5-6 भाषाओं में अनुवादित करने के बाद फाइल को बहुत बड़ा और बोझिल करने के लिए फाइल करेगा।

+0

अपने सुझाव के लिए धन्यवाद:

यहाँ प्रारूप का एक उदाहरण है। पहले दो सुझाव काफी समान हैं, सिवाय इसके कि पहले अधिक XML लगता है: ish। हालांकि, मुझे दूसरे सुझाव की सादगी पसंद है। – Jonatan

उत्तर

1

मैं एक टेम्पलेट फ़ाइल बनाउंगा। नाम "somename.xml.template"

<devif> 
    <screen id="scr1" title="[SettingsForThisCard]"> 
    <header text="[ClimateReadings]"/> 
    <rd setp="123" text="[AirTemperature]" unit="°C"/> 
... 

तो फिर तुम युक्त प्रत्येक भाषा के लिए आरं की तरह फाइलों का एक समूह बना सकते हैं:

SettingsForThisCard = दिया भाषा में अपना संदेश

फिर, आप कर सकते हैं आईएनआई फाइलों से पढ़े गए संदेशों के साथ टैग को प्रतिस्थापित करें। इसका फायदा यह है कि यदि कोई टैग है जिसमें कोई अनुवाद नहीं है, तो अनुवाद प्रयासों को बर्बाद करना और बर्बाद करना आसान है। साथ ही, यह बहुत आसान है, इस प्रकार आपकी विशिष्ट आवश्यकताओं के लिए सबसे अच्छा नहीं हो सकता है।

1

क्यों एक्सएमएल इकाइयों का उपयोग स्थानीयकृत होने वाले शब्दों को परिभाषित करने के लिए नहीं करते हैं और उनके पास प्रत्येक भाषा के लिए अलग-अलग डीटीडी हैं? यह अनिवार्य रूप से फ़ायरफ़ॉक्स XUL द्वारा उपयोग किया जाने वाला दृष्टिकोण है, उदाहरण के लिए: Localization on MDN

2

हम मानक TMX फ़ाइलों का उपयोग करते हैं, जो अंतरराष्ट्रीय XML अक्षरों को रखने के लिए मानक XML फ़ाइलें हैं। प्रत्येक प्रविष्टि को एक लेबल द्वारा पहचाना जाता है, जो कोड के चारों ओर संदर्भित होता है। प्रत्येक प्रविष्टि में सभी संभावित अनुवाद होते हैं और सबसे महत्वपूर्ण बात यह है कि टीएमएक्स एक मानक मानक प्रोग्राम और पेशेवरों द्वारा उपयोग किया जाता है।

यदि आपके पास पहले से ही आपके अक्षर को पकड़ने के लिए एक्सएमएल फाइलें हैं तो आप उन्हें एक्सएसएलटी स्टाइलशीट के माध्यम से परिवर्तित कर सकते हैं।

<?xml version="1.0" encoding="UTF-8"?> 
<tmx> 
    <body> 
     <tu tuid="$ALARM_BARCODE_READER_COMMS"> 
      <tuv lang="ES"> 
       <seg>Lector códigos de barras: No Operativo</seg> 
      </tuv> 
      <tuv lang="EN"> 
       <seg>Barcode reader: Not operative</seg> 
      </tuv> 
      <tuv lang="ZH"> 
       <seg>读卡器:通讯错误</seg> 
      </tuv> 
     </tu> 
     <tu tuid="$ALARM_BARCODE_READER_FAIL"> 
      <tuv lang="ES"> 
       <seg>Lector códigos de barras: Fallo</seg> 
      </tuv> 
      <tuv lang="EN"> 
       <seg>Barcode Reader: Fail</seg> 
      </tuv> 
      <tuv lang="ZH"> 
       <seg>读卡器:故障</seg> 
      </tuv> 
     </tu> 
     <tu tuid="$NO_PAYMENT_MODE_AVAILABLE"> 
      <tuv lang="ES"> 
       <seg>No hay sistemas de pago disponibles</seg> 
      </tuv> 
      <tuv lang="EN"> 
       <seg>No payment systems available</seg> 
      </tuv> 
      <tuv lang="ZH"> 
       <seg>读卡器:故障</seg> 
      </tuv> 
     </tu>  
     <tu tuid="$ALARM_BLACKLIST_CARD"> 
      <tuv lang="ES"> 
       <seg>Tarjeta de pago en lista negra</seg> 
      </tuv> 
      <tuv lang="EN"> 
       <seg>Payment card in blacklist</seg> 
      </tuv> 
      <tuv lang="ZH"> 
       <seg>付费的IC卡是黑名单卡</seg> 
      </tuv> 
     </tu> 
    </body> 
</tmx> 
संबंधित मुद्दे