एक साइट जो बिना अनुवादकों के दर्जनों भाषाएँ बोलती है
मशीनी अनुवादित · मूल लेख पढ़ें
हमने इन पृष्ठों के नीचे चलने वाले अनुवाद प्रणाली का निर्माण कैसे किया: आवश्यकतानुसार AI, हमेशा कैश, शून्य कथित प्रतीक्षा।
पारंपरिक i18n की समस्या
वर्षों से, किसी वेबसाइट का अंतर्राष्ट्रीयकरण वर्कफ़्लो का एक छोटा सा ओडिसी रहा है: .po फ़ाइलें, मानव अनुवादक, भूली हुई कुंजियाँ, विलंबित परिनियोजन क्योंकि "जर्मन अभी भी गायब है"। एक भाषा जोड़ना समय और धन लेता था; किसी भी छोटे व्यवसाय के लिए दस जोड़ना चर्चा से बाहर था।
नवीनतम पीढ़ी के LLM के साथ, स्वचालित अनुवाद की गुणवत्ता एक ऐसे बिंदु पर आ गई है जहां - एक कॉर्पोरेट साइट के लिए, साहित्य के लिए नहीं - यह पर्याप्त है। सवाल अब यह नहीं है कि "क्या हम इसे स्वचालित रूप से अनुवाद कर सकते हैं", बल्कि "हम इसे उपयोगकर्ता अनुभव को तोड़े बिना कैसे एकीकृत करते हैं"।
आर्किटेक्चर, संक्षेप में
साइट इटैलियन में स्थिर रूप से परोसी जाती है। जब कोई उपयोगकर्ता किसी अन्य भाषा का चयन करता है, तो तीन MongoDB संग्रहों पर एक छोटा इंजन खेल में आता है:
i18n_base: स्रोत पाठ चयनित भाषा में (आज इतालवी), प्रत्येक अपनी भाषा की घोषणा, वेबसाइट पर इसकी उपस्थिति के स्थान और कारण का विवरण (अनुवाद की गुणवत्ता के लिए आवश्यक), स्वर और वर्ण सीमा के साथ। यह विवरण LLM को संकेत का हिस्सा बन जाता है, ताकि उसे पता चले कि वह एक बटन या पैराग्राफ का अनुवाद कर रहा है।i18n_human: हस्तनिर्मित अनुवाद, जब हम किसी पृष्ठ के लिए LLM आउटपुट के बजाय संपादकीय गुणवत्ता चाहते हैं। वे स्वचालित कैश पर प्राथमिकता लेते हैं और स्रोत पाठ बदलने पर स्वचालित रूप से "अचिह्नित" हो जाते हैं।i18n_cache: पहले से उत्पन्न अनुवाद, (फ़ील्ड, भाषा) द्वारा अनुक्रमित। प्रत्येक प्रविष्टि आधार पाठ के समय टिकट को पीढ़ी के समय पर सहेजती है।articoli_i18n: इस लेख जैसे लंबे सामग्री पर लागू समान तर्क।
किसी नई भाषा में पहली बार एक्सेस करने पर, सिस्टम LLM से केवल लापता फ़ील्ड का अनुरोध करता है, प्रतिक्रिया को कैश में सहेजता है और इसे ब्राउज़र को लौटा देता है। बाद के विज़िट में, समान भाषा तुरंत आ जाती है, बिना किसी AI कॉल के।
अमान्यकरण जो काम करता है
एक कैश एक व्यवस्थित झूठ है: यह कहता है "मेरी सच्चाई यह है" जब तक कि कोई इसका खंडन न करे। यहां खंडन तंत्र सरल है: प्रत्येक कैश किया गया अनुवाद उस आधार पाठ के टाइमस्टैम्प को संग्रहीत करता है जिसने इसे उत्पन्न किया है। जब आप इतालवी पाठ को संशोधित करते हैं और इसके updated_at को बढ़ाते हैं, तो उस फ़ील्ड के सभी अनुवाद सभी भाषाओं में स्वचालित रूप से पुराने हो जाते हैं और आवश्यकतानुसार पुन: उत्पन्न हो जाते हैं। कोई मैनुअल कैस्केड नहीं, कोई कैश खाली करने की आवश्यकता नहीं है।
वह उपयोगकर्ता जो इंतजार नहीं करता
सबसे दिलचस्प हिस्सा अनुवाद नहीं है - यह दिखाया जाता है कि यह कैसे है। भाषा बदलने पर, ब्राउज़र के सामने एक इतालवी पृष्ठ होता है जिसमें प्रत्येक टेक्स्ट ब्लॉक को अपडेट करने के लिए छोटे स्पिनर होते हैं। प्रलोभन सब कुछ एक साथ अनुवाद करने के लिए एक एकल कॉल करना है: सरल, साफ, और उपयोगकर्ता को LLM के समाप्त होने तक किसी भी बदलाव को देखने से पहले इंतजार करने की निंदा करना।
हमने विपरीत दिशा ली। ग्रंथों को खंडों (नेवबार, बॉडी, फुटर) द्वारा समूहीकृत किया जाता है और प्रत्येक में तीन फ़ील्ड के माइक्रो-बैच में विभाजित किया जाता है। कॉल अनुक्रम में शुरू होती हैं: पहले नेवबार के कुछ फ़ील्ड, जो कुछ सेकंड में दिखाई देते हैं - उपयोगकर्ता देखता है कि कुछ हो रहा है और पढ़ना शुरू कर देता है। जैसे ही वह पढ़ता है, बॉडी का पहला टुकड़ा आता है, फिर दूसरा, अंत में फुटर।
रात का काम
कैश का केवल एक सच्चा दुश्मन है: पहली बार आने वाला। पहला जर्मन उपयोगकर्ता भविष्य के सभी अनुवादों की कीमत चुकाता है, और उसका अनुभव वही है जो उसके दिमाग में रहता है। इस समस्या को खत्म करने (या लगभग) के लिए, एक पृष्ठभूमि कार्य हर मिनट जागता है, अभी तक अपूर्ण भाषाओं में सबसे अपेक्षित भाषा का चयन करता है, एक अनुवादित पाठ लेता है और इसे एलएलएम से गुजरता है। अगले मिनट, अगला। कुछ दिनों में सबसे व्यापक भाषाएँ पहले से ही गर्म हैं।
रात का कार्य दूसरा काम भी करता है: संदिग्ध गुणवत्ता वाले अनुवादों की स्वचालित रूप से समीक्षा करता है, उन्हें एक अलग एआई मॉडल के साथ फिर से प्रयास करता है। जब भाषाओं के बीच संरेखण महत्वपूर्ण होता है, तो एक औसत अनुवाद ऐसा नहीं रहता है।
यदि आप दिन के पहले जर्मन हैं और जब सिस्टम अभी भी कैश को अंतिम रूप दे रहा है तो आप आते हैं, तो भी आपके पास व्यस्त रखने के लिए प्रगतिशील लोडिंग है। यदि आप दूसरे हैं, तो आपको इसका एहसास भी नहीं होगा।
आप क्या घर ले जाते हैं
एक बहुभाषी वेबसाइट बिना अनुवादकों के, प्रबंधित करने के लिए कोई फ़ाइल नहीं, कोई भाषा जोड़ने के लिए कोई परिनियोजन नहीं। उपयोगकर्ता एक कोड टाइप करता है — ja, ca, eu, जो चाहे — और पृष्ठ का अनुवाद हो जाता है। दूसरी बार यह तत्काल है। तीसरी बार, बहुत संभावना है कि हम पहले से ही वहां पहुंच गए हैं, सही समय पर एक कार्य द्वारा अनुवादित किया गया है जो कभी नहीं सोता है।
यह वही पृष्ठ, यदि आप इसे जर्मन, स्पेनिश, कोरियाई में पढ़ रहे हैं, तो इसे कभी भी किसी अनुवादक द्वारा नहीं लिखा गया है। इसका एक बार एक LLM द्वारा अनुवाद किया गया था, और तब से इसे कैश से परोसा गया है। एकमात्र चीज जो हाथ से लिखी गई है वह है जो आप अभी पढ़ रहे हैं यदि यह इतालवी में है।
क्या आप इस आर्किटेक्चर को अपनी वेबसाइट पर लाने में रुचि रखते हैं? आइए बात करते हैं।
हमसे संपर्क करें
कोई टिप्पणी? हमें लिखें
यह संदेश केवल हम तक पहुंचेगा। यदि आपकी टिप्पणी दिलचस्प है तो हम इसे लेख के अंत में प्रकाशित कर सकते हैं, लेकिन केवल मूल्यांकन के बाद।
जैसे ही आप लिखते हैं, आपका ब्राउज़र एक छोटा सा गणितीय समस्या हल कर रहा है—यह स्पैम को रोकने का हमारा तरीका है बिना किसी तीसरे पक्ष की सेवा या आपको ट्रैफिक लाइट पहचानने के लिए कहे। आपसे कुछ नहीं मांगा जा रहा है और कोई भी डेटा इस साइट से बाहर नहीं जाता।