2011-12-09 8 views
7

मैं के बारे में xliff और पो i18n फ़ाइलें प्रारूपों शोध किया गया है और यह वे व्यापक रूप से इस्तेमाल किया है और समर्थन कर रहे लगता है का उपयोग कैसे करें। xliff/po फ़ाइलों में अनुवादों का प्रबंधन करने के लिए बहुत सारे निःशुल्क टूल हैं।.net में xliff या फ़ाइल स्वरूपों l10n पो (सी #/ASP.Net) विकास

हालांकि, अब तक मुझे .net (सी #/एएसपी.Net) परियोजनाओं में xliff या po फ़ाइलों का उपयोग करने का अच्छा समाधान नहीं मिला। मैं xliff/po => resx कनवर्टर के किसी प्रकार की अपेक्षा करता हूं, लेकिन अभी तक अभी तक कोई नहीं मिला है।

हालांकि एक ही समय में कई उपकरण .properties प्रारूप जावा में xliff/पो फ़ाइलों का रूपांतरण का समर्थन करते हैं।

आप एक अनुभव नेट में xliff या पो फ़ाइलों के माध्यम से l10n को लागू है, तो परियोजनाओं - सलाह प्रदान करें और यह कैसे काम करता पर सर्वोत्तम प्रथाओं को साझा करें।

पीएस: मैं xliff प्रारूप का उपयोग करना पसंद करूंगा, क्योंकि मुझे इसे क्लीनर और अधिक सुविधा पहुंच मिलती है, लेकिन पीओ भी एक विकल्प है।

+0

कोई कारण नहीं कि आप सीधे संसाधन फ़ाइलों का उपयोग नहीं कर सकते हैं? – Oded

+2

हम अपनी कंपनी के निर्माण के विभिन्न परियोजनाओं के बीच अनुवाद के लिए एक प्रारूप का उपयोग करना चाहते हैं - वे सी # और जावा प्रोजेक्ट हैं, और विभिन्न परियोजनाओं के लिए अलग-अलग अनुवादों के लिए डुप्लिकेशंस और अतिरिक्त लागत को कम करने के लिए उन्हें साझा करें। – Paul

उत्तर

6

पीओ और XLIFF फ़ाइलें आमतौर पर अलग तरह से काम:

  • पीओ फ़ाइलें संसाधन फ़ाइलों कि एक द्विआधारी प्रारूप में पालन करने के लिए और फिर gettext() पुस्तकालयों का उपयोग करके पहुँचा जा सकता है। कभी-कभी पीओ का उपयोग एक्सएलआईएफएफ जैसे निष्कर्षण प्रारूप के रूप में किया जाता है, लेकिन यह इसका मूल उद्देश्य नहीं है।

  • एक्सएलआईएफएफ निष्कर्षण फाइलें हैं जो आपकी संसाधन फ़ाइल (उदा। रेक्स) को XLIFF में निकालने के द्वारा बनाई गई हैं, और फिर मूल प्रारूप में वापस विलय कर दी गई हैं।

तो XLIFF के लिए आप एक उपकरण resx -> xliff -> resx बजाय xlif -> resx कर की तलाश में किया जाना चाहिए।

एक्सएलआईएफएफ फाइलों को निकालने/विलय करने वाले टूल्स को आमतौर पर फ़िल्टर कहा जाता है। ऐसे कुछ वाणिज्यिक अनुवाद उपकरण हैं जो एक्सएलआईएफएफ स्वीकार करेंगे, और कुछ जो एक्सएलआईएफएफ (स्वॉर्डफ़िश, ट्रेडो स्टूडियो इत्यादि) भी बना सकते हैं।

कुछ खुले स्रोत उपकरण भी हैं जो XLIFF को निकालने/विलय कर सकते हैं: उदाहरण के लिए File2XLIFF4j (लेकिन मुझे नहीं लगता कि यह resx का समर्थन करता है)।

ओकापी परियोजना से इंद्रधनुष, रेक्स का समर्थन करता है। "पुराना" .नेट संस्करण (इंद्रधनुष 5: सोर्सफोर्ज पर ओकापी) में एक resx फ़ाइल को समर्पित फ़िल्टर है और उन्हें बहुत अच्छी तरह से संभाल सकता है; बाइनरी डेटा के साथ भी। हालांकि यह तीसरे पक्ष के नियंत्रण में समस्या में पड़ सकता है (विवरण के लिए http://okapi.sourceforge.net/Release/Filters/Help/netres.htm देखें)।

नया जावा संस्करण (इंद्रधनुष 6: http://code.google.com/p/okapi/) अपने एक्सएमएल फ़िल्टर के माध्यम से resx का समर्थन करता है और सरल resx के साथ ठीक काम करता है, लेकिन यदि आपके पास बाइनरी डेटा है तो उन प्रविष्टियों में टेक्स्ट निकाला नहीं जाएगा।

-ys

+0

महान जवाब! मुझे यह स्पष्ट करने के लिए धन्यवाद। मैं .NET और जावा परियोजनाओं के संयोजन के लिए l10n पर प्रयास को कम करने के लिए सबसे अच्छा तरीका जानने के लिए आगे खोदूँगा। – Paul

9

तुम भी i18n package द्वारा Daniel Crenna, available from nuGet विचार कर सकते हैं। यह पीओ फाइलों का उपयोग स्थानीयकृत टेक्स्ट के लिए डिफ़ॉल्ट स्टोर के रूप में करता है।

4

मैंने बाद में .NET प्रोजेक्ट को प्रबंधित करने के लिए पीओ का उपयोग किया है।resx फ़ाइलों हाथ से बाहर निकलना शुरू कर दिया। मैंने इसे "एक्सएलआईएफएफ जैसे निष्कर्षण प्रारूप के रूप में उपयोग किया" (Yves comment देखें)। हमारी मौजूदा .resx फ़ाइलों को प्रति बार एक .po फ़ाइल में निर्यात/विलय किया गया था, जो तब हमारी आधिकारिक भाषा फाइल बन गईं, जिससे सभी resx फ़ाइलों को स्वचालित रूप से जेनरेट किया जाएगा।

जिन परियोजनाओं पर मैं हूं, वे एएसपी नहीं हैं इसलिए मुझे mcw0933 द्वारा वर्णित पैकेज के बारे में पता नहीं है, लेकिन मोनो के resgen.exe के कार्यान्वयन में कुछ सरल पीओ < => resx रूपांतरण क्षमता है। हालांकि, मौजूदा टिप्पणियों को संरक्षित करने के लिए और मूल पाठ को अतिरिक्त टिप्पणियों के रूप में स्वचालित रूप से जोड़ने के लिए, मैंने उस बिंदु पर मोनो का रूपांतरण टूल बढ़ाया जहां मैं उपयोग करता हूं मूल रूप से फिर से लिखा जाता है।

I put the extended .po <=> .resx converter on github

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

माइनर असुविधाओं:

  • क्योंकि gettext क का उपयोग करता है क्षेत्र में मूल अनुवाद नहीं किए गए स्ट्रिंग स्टोर करने के लिए के रूप में दोगुना करने के लिए, मैं resgenEx संग्रह में मूल अनुवाद स्ट्रिंग करना था उस उद्देश्य के लिए डिजाइन किए गए क्षेत्र की बजाय एक संलग्न टिप्पणी।
  • कुछ टूल मानते हैं कि मूल अंग्रेजी अनुवाद (केवल एक आईडी स्ट्रिंग के बजाय) होगा, जिसका अर्थ यह हो सकता है कि उस उपकरण का स्वचालित त्रुटि जांच विकल्प बहुत उपयोगी नहीं है, या इसका मतलब यह हो सकता है कि आप इसे चुनते हैं विभिन्न उपकरण, आदि। अधिकांश उपकरण हालांकि कोई धारणा नहीं करते हैं।
  • कुछ पुलिस उपकरण की तरह \ N के बजाय \ r \ n

परियोजना मैं मूल रूप से किया था दो .resx फ़ाइलों और हर समर्थित भाषा के लिए एक .isl फ़ाइल के लिए resgenEx लिखा था, लेकिन जल्द ही मैं की आवश्यकता होगी एक .NET प्रोजेक्ट के लिए सभी अनुवादों को प्रबंधित करने के लिए जिसमें कोड में प्रत्येक वर्ग के लिए एकाधिक resx फ़ाइलें हैं। जब ऐसा होता है तो मैं तय करूंगा कि मुझे .po का उपयोग करना चाहिए या नहीं, मुझे xliff या कुछ और उपयोग करना चाहिए। यदि मैं .po का उपयोग करता रहता हूं तो मैं resgenEx को साफ़ कर दूंगा और शायद अधिक सुविधाओं को जोड़ने की आवश्यकता है, जैसे कि स्वचालित रूप से असेंबली नाम और कक्षा नाम उपसर्ग को संदेश में जोड़ने की क्षमता।

0

आप PhraseApp भी आजमा सकते हैं। PhraseApp एक अनुवाद प्रबंधन मंच है और प्रारूपों की एक विस्तृत श्रृंखला का समर्थन करता है। इस तरह आप इसे किसी भी प्रारूप में अपलोड कर सकते हैं और इसे फिर से प्रारूप में निर्यात कर सकते हैं जो आपके मामले में XLIFF, po या resx जैसे सर्वोत्तम फिट है। इस तरह आपको एक एकल अनुवाद प्रारूप का निर्णय लेने की आवश्यकता नहीं है। और आप हमेशा बाद में किसी अन्य प्रारूप में आसानी से स्विच कर सकते हैं। पीएस: पूर्ण प्रकटीकरण मैं PhraseApp टीम के लिए काम करता हूं।

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