•  अनतोरेह-प्रकाश

एमटीआर: कई अनुवाद

आंतरिक उपयोग के लिए रैपिंग अनुवाद सेवाएं

एक वेबसाइट प्रकाशित करते समय आप विभिन्न अनुवादों की पेशकश करना चाह सकते हैं। कुछ लोग स्वचालित अनुवादकों को पसंद नहीं करते हैं, मुझे लगता है कि एक स्वचालित अनुवाद काफी अच्छा है, और कुछ भी नहीं से बेहतर है, और स्वचालित अनुवादक प्रगति के साथ उत्तरोत्तर बेहतर होते गए हैं एनएलपी तथा एमएल.

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

कैशिंग टेक्स्ट

यदि हम अनुवादों को कैश करना चाहते हैं, तो हमें अनुरोधित टेक्स्ट को छोटे स्ट्रिंग्स में विभाजित करने की आवश्यकता है ताकि वे भविष्य के संभावित अनुरोधों के लिए हिट प्रदान करने के लिए पर्याप्त छोटे हों। NS अदला - बदली यह है कि छोटे वाक्यों के अनुवाद का संदर्भ कम होता है, जो अनुवाद की गुणवत्ता को कम करता है।

हम आने वाले पाठ को कैसे विभाजित करते हैं ताकि हम अनुवादित पाठ से मूल का पुनर्निर्माण कर सकें यह काफी चाल है..या एक हैक। हम एक स्ट्रिंग को इतना अजीब खोजना चाहते हैं कि अनुवाद सेवा उसे छोड़ दे ज्यों का त्यों इसके आउटपुट में। मुझे की विविधताएं मिली हैं अनुच्छेद चरित्र ज्यादातर समय काम करने के लिए

$this->misc['glue'] = ' ; ¶ ; ';
$this->misc['splitGlue'] = '/\s?;\s?¶\s?;?\s?/';

NSglue स्ट्रिंग का उपयोग संयोजित करने के लिए किया जाता है सब तार (मूल अनुरोध से विभाजित) में एक अपस्ट्रीम अनुवाद अनुरोध के लिए एकल निकाय जिसे हम भेज रहे हैं उदा। गूगल। NSsplitGlue इसके बजाय प्राप्त अनुवाद को वापस उन स्ट्रिंग्स में विभाजित करने के लिए उपयोग किया जाता है जिन्हें हम कैश करने जा रहे हैं। हम यहां देखते हैं कि स्ट्रिंग्स स्प्लिटिंग न केवल कैशिंग के लिए उपयोगी है, बल्कि अनुरोधों की संख्या कम करें, क्योंकि यदि हमारा डाउनस्ट्रीम अनुरोध कई छोटे प्रश्न करता है, तो हम अपस्ट्रीम सेवा द्वारा अनुमत अधिकतम पेलोड आकार तक अनुरोधों को मर्ज करने के लिए अपनी मशीनरी का उपयोग करते हैं।

अंतरपटल

कई सेवाओं का समर्थन करने के लिए पारदर्शी रूप से मैंने एक इंटरफ़ेस लिखा है जो इस एपीआई पर बस गया है

function__construct(
    Mtr &$mtr,
    Client &$gz,
    TextReq &$txtrq,
    LanguageCode &$ld);
functiontranslate($source, $target, $input);
functiongenReq(array$params);
functionpreReq(array &$input);
functiongetLangs();

तो एक सेवा को चालू करने के लिए एक अनुवाद फ़ंक्शन, अनुरोधों का अनुवाद कैसे करना है, और समर्थित भाषाओं की सूची प्रदान करना है। समर्थित भाषाओं की सूची के साथ हम एक मैट्रिक्स बना सकते हैं जैसे कि हम जानते हैं कि कितनी सेवाएं एक विशिष्ट भाषा जोड़े को पार्स करने के लिए समर्थन करती हैं भाषा जोड़े हम सेवा द्वारा लौटाए गए प्रतिनिधित्व को सामान्य में परिवर्तित करते हैंiso639-1.

अनुवाद उदाहरण का निर्माण भी उपयोग किए गए अनुरोध विकल्पों को कॉन्फ़िगर करने की अनुमति देता हैGuzzle क्लाइंट इंस्टेंस जैसे कि हम उदाहरण के लिए अनुरोध करने के लिए प्रॉक्सी का उपयोग कर सकते हैं। सेवाएं हैं कैश की गई पहली बार उत्पन्न होने के बाद, यह उपयोगी है क्योंकि कुछ सेवाओं को कुछ प्रारंभिक टोकन उत्पन्न करने की आवश्यकता होती है, और हम उन्हें हर बार पुन: उत्पन्न नहीं करना चाहते हैं।

गो संस्करण

मैंने भी लिखा गोलांग में संस्करण. PHP संस्करण का उपयोग आपके PHP प्रोजेक्ट में आयात करके किया जाएगा, जबकि गो संस्करण एक स्टैंडअलोन (माइक्रो) सेवा के रूप में काम करता है। गो संस्करण बहुत अधिक वर्बोज़ है क्योंकि इसमें सख्त प्रकार की जाँच की आवश्यकता होती है और चूंकि हम एक साथ कई स्ट्रिंग्स को क्वेरी करने का समर्थन करते हैं, इसलिए हमें एपीआई को उजागर करना होगा जो विभिन्न इनपुट संयोजनों के साथ काम करता है, और गो जेनरिक की कमी कार्यान्वयन को बहुत दर्दनाक बनाती है, लेकिन यह पेशकश की समवर्ती प्रसंस्करण, और सामान्य रूप से बहुत तेज था।

सफाई इनपुट

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

स्वयं होस्ट किया गया:

निष्कर्ष

आजकल मुझे लगता है कि मैं सिर्फ एक स्व-होस्टेड समाधान का उपयोग करूंगा, जो या तो जोशुआ या आर्गोस द्वारा प्रदान किया गया है, क्योंकि मेरा लक्ष्य सर्वश्रेष्ठ अनुवाद का नहीं है, मैं एक वेबसाइट के लिए एक पठनीय अनुवाद की पेशकश करना चाहता हूं, जैसे कि इसे बिना किसी घर्षण के नेविगेट किया जा सकता है।

पोस्ट टैग: