एआई और प्रौद्योगिकी
टाइमस्टैम्प खोए बिना SRT सबटाइटल का अनुवाद कैसे करेंसबटाइटल अनुवाद एक सटीकता वाला काम क्यों है SRT फ़ाइल एक बेहद संरचित फ़ॉर्मेट है। हर सबटाइटल ब्लॉक में एक सीक्वेंस नंबर,…
Amanda Lee
PO, YAML, .properties, RESX, XLIFF और JSON लोकेल फ़ाइलें वाक्यों की सूची जैसी दिखती हैं, लेकिन सिर्फ़ वैल्यू ही गद्य होती हैं। की (key) ऐसे आइडेंटिफ़ायर हैं जिन्हें कोड खोजता है; प्लेसहोल्डर ऐसे स्लॉट हैं जिन्हें कोड रनटाइम पर भरता है; एस्केप और मार्कअप ऐसा सिंटैक्स हैं जिस पर पार्सर निर्भर करता है। जो अनुवादक पूरी लाइन को टेक्स्ट मानकर चलता है, वह ऐसी फ़ाइल बनाएगा जो पढ़ने में शानदार लगती है पर लोड नहीं होती, या लोड होती है और फिर पहली बार किसी स्क्रीन के कोई संख्या फ़ॉर्मेट करते ही क्रैश हो जाती है। यह गड़बड़ी आमतौर पर सिर्फ़ एक भाषा में दिखती है, इसलिए रिव्यू में इसे पकड़ना सबसे मुश्किल होता है।
अंग्रेज़ी में बहुवचन के दो रूप होते हैं, इसलिए यह मान लेना आसान है कि हर भाषा में ऐसा ही है। GNU gettext मैनुअल दिखाता है कि यह धारणा क्यों गलत है: हर भाषा अपना Plural-Forms नियम घोषित करती है, अंग्रेज़ी nplurals=2 का उपयोग करती है, और रूसी को तीन रूपों की ज़रूरत होती है जो संख्या के आखिरी अंकों के आधार पर चुने जाते हैं। रूसी में अनुवादित कोई PO फ़ाइल, जिसमें सिर्फ़ दो रूप भरे हों, कंपाइल होती है, चलती है, और 2, 3 या 4 पर खत्म होने वाली हर गिनती के लिए गलत व्याकरण दिखाती है। बहुवचन को सही ढंग से संभालने का मतलब है उतनी msgstr एंट्री बनाना जितनी लक्ष्य भाषा को चाहिए, न कि उतनी जितनी स्रोत भाषा में संयोग से थीं।
अलग-अलग भाषाओं में शब्दों का क्रम अलग होता है, इसलिए दो वैल्यू वाले वाक्य में अक्सर उन्हें उल्टे क्रम में रखना पड़ता है। %1$s और %2$s जैसे पोज़िशनल प्लेसहोल्डर, या {count} और {user} जैसे नामित प्लेसहोल्डर, ठीक इसी के लिए होते हैं: अनुवाद उनका क्रम बदल सकता है, लेकिन हर एक को अब भी ठीक एक बार मौजूद रहना चाहिए। अकेले %s जैसे बेनाम प्लेसहोल्डर का क्रम सुरक्षित रूप से नहीं बदला जा सकता, और यह ऐसी समस्या है जिसे अनुवाद के बाद नहीं, बल्कि पहले ही स्रोत स्ट्रिंग्स में ठीक कर लेना चाहिए।
हर फ़ॉर्मेट की अपनी पेचीदगियाँ हैं। YAML में, स्पेसिफ़िकेशन लिटरल ब्लॉक (|) और फ़ोल्डेड ब्लॉक (>) को लाइन-ब्रेक का अलग-अलग व्यवहार देता है, और एंकर (&) और एलियस (*) एक नोड को दूसरे नोड का दोबारा उपयोग करने देते हैं, इसलिए दोनों को बिना छुए आगे जाना चाहिए। XLIFF 2.1 मूल फ़ॉर्मेटिंग को <ph> और <pc> जैसे इनलाइन एलिमेंट में लपेटता है, जिन्हें अनुवाद को सही शब्दों के आसपास उनकी जगह पर बनाए रखना होता है। .NET में, RESX रिसोर्स रनटाइम पर मौजूदा UI कल्चर के लिए नाम से खोजे जाते हैं, इसलिए नाम बदला हुआ data एलिमेंट चुपचाप डिफ़ॉल्ट भाषा पर लौट जाता है। और Java की .properties फ़ाइल पहले बिना एस्केप वाले =, : या व्हाइटस्पेस को की सेपरेटर मानती है, इसलिए अनुवादित की में भटका हुआ कोलन उसे दो हिस्सों में बाँट देता है।
लगभग हमेशा इसलिए कि सिर्फ़ उसी भाषा में कोई प्लेसहोल्डर बदल दिया गया — उसका नाम बदला गया, उसे हटा दिया गया, या उसे दोहरा दिया गया। कोड हर भाषा को एक जैसे आर्ग्युमेंट देता है, इसलिए जो एक अनुवाद अब उनसे मेल नहीं खाता, वह उस स्क्रीन के फ़ॉर्मेट होते समय फ़ेल हो जाता है।
बहुवचन के नियम भाषा के होते हैं, सॉफ़्टवेयर के नहीं। Gettext हर भाषा को अपना नियम घोषित करने देता है; रूसी संख्या के आखिरी अंकों के आधार पर तीन रूपों में से चुनती है, इसलिए सिर्फ़ दो रूपों वाला अनुवाद कई गिनतियों के लिए गलत व्याकरण दिखाता है।
क्योंकि क्लासिक Properties.load(InputStream) फ़ाइल को Latin-1 के रूप में पढ़ता है। उस दायरे से बाहर के कैरेक्टर \uXXXX एस्केप के रूप में लिखने होते हैं, या फ़ाइल को ऐसे रीडर से लोड करना होता है जो सही एन्कोडिंग का उपयोग करे।
हाँ, जब वे पोज़िशनल (%1$s, %2$s) या नामित ({count}, {user}) हों — स्वाभाविक शब्द-क्रम के लिए अक्सर क्रम बदलना ज़रूरी होता है। फिर भी हर प्लेसहोल्डर को ठीक एक बार आना चाहिए। अकेले %s प्लेसहोल्डर का क्रम सुरक्षित रूप से नहीं बदला जा सकता।
की आइडेंटिफ़ायर हैं, टेक्स्ट नहीं। कोड किसी स्ट्रिंग को उसकी की से माँगता है; अनुवादित की का मतलब है कि खोज फ़ेल हो जाती है और ऐप कच्ची की दिखाता है या डिफ़ॉल्ट भाषा पर लौट जाता है।
एक PO, YAML, .properties या RESX फ़ाइल अपलोड करें और उसे वापस पाएँ — की, प्लेसहोल्डर, एस्केप और संरचना ठीक वहीं जहाँ वे थे।
लोकेल फ़ाइल का मुफ़्त अनुवाद करें
एआई और प्रौद्योगिकी
टाइमस्टैम्प खोए बिना SRT सबटाइटल का अनुवाद कैसे करेंसबटाइटल अनुवाद एक सटीकता वाला काम क्यों है SRT फ़ाइल एक बेहद संरचित फ़ॉर्मेट है। हर सबटाइटल ब्लॉक में एक सीक्वेंस नंबर,…
Amanda Lee
एआई और प्रौद्योगिकी
ऑनलाइन PowerPoint प्रेजेंटेशन का अनुवाद कैसे करेंप्रेजेंटेशन अनुवाद की असली चुनौती एक PowerPoint प्रेजेंटेशन सिर्फ़ टेक्स्ट से कहीं अधिक है। हर स्लाइड एक बारीकी से डिज़…
Amanda Lee