•  অস্পষ্ট আলো

MTR: একাধিক অনুবাদ

অভ্যন্তরীণ ব্যবহারের জন্য অনুবাদ পরিষেবা মোড়ানো

একটি ওয়েবসাইট প্রকাশ করার সময় আপনি বিভিন্ন অনুবাদ দিতে চাইতে পারেন। কিছু লোক স্বয়ংক্রিয় অনুবাদক পছন্দ করে না, আমি মনে করি একটি স্বয়ংক্রিয় অনুবাদ যথেষ্ট ভাল, এবং কোন কিছুর চেয়ে ভাল, এবং স্বয়ংক্রিয় অনুবাদকরা অগ্রগতির সাথে ক্রমশ উন্নত হয়েছে এনএলপি এবং এমএল.

সাধারণ অনুবাদ পরিষেবাগুলি হল গুগল, বিং, ইয়ানডেক্স। এইগুলি একটি বিনামূল্যে স্তর অফার করে যা আমরা আমাদের নিজস্ব ব্যক্তিগত ব্যবহারের জন্য মোড়ানো চাই। এছাড়াও অন্যান্য কম পরিচিত আছে অনুবাদ সেবা , এবং তাদের মধ্যে কিছু লেখার সময় বন্ধ আছে ...

ক্যাশিং টেক্সট

যদি আমরা অনুবাদগুলি ক্যাশে করতে চাই, আমাদের অনুরোধকৃত পাঠ্যকে ছোট ছোট স্ট্রিংয়ে বিভক্ত করতে হবে যাতে সেগুলি ভবিষ্যতের সম্ভাব্য অনুরোধের জন্য হিট প্রদানের জন্য যথেষ্ট ছোট। দ্য ভারসাম্য যে ছোট বাক্যের অনুবাদ কম প্রসঙ্গ আছে, যা অনুবাদের মান হ্রাস করে।

আমরা কিভাবে ইনকামিং টেক্সটকে বিভক্ত করি যাতে আমরা অনুবাদকৃত টেক্সট থেকে আসল পুনর্গঠন করতে পারি এটা বেশ কৌশল বা হ্যাক। আমরা একটি অদ্ভুত স্ট্রিং খুঁজে পেতে চাই যে অনুবাদ পরিষেবা এটি ছেড়ে দেয় যেমন আছে এর আউটপুটে। আমি এর বৈচিত্র খুঁজে পেয়েছি অনুচ্ছেদ চরিত্র বেশিরভাগ সময় কাজ করতে

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

দ্যglue স্ট্রিং সংযোজন করতে ব্যবহৃত হয় সব স্ট্রিং (মূল অনুরোধ থেকে বিভক্ত) মধ্যে এক আপস্ট্রিম অনুবাদ অনুরোধের জন্য একক সংস্থা যা আমরা পাঠাচ্ছি যেমন গুগল দ্যsplitGlue পরিবর্তে আমরা গ্রহণ করা অনুবাদকে স্ট্রিংগুলিতে বিভক্ত করতে ব্যবহৃত হয় যা আমরা ক্যাশে করতে যাচ্ছি। আমরা এখানে দেখি যে স্ট্রিং বিভাজন কেবল ক্যাশিংয়ের জন্য দরকারী নয়, কিন্তু অনুরোধের সংখ্যা কমান, কারণ যদি আমাদের ডাউনস্ট্রিম রিকোয়েস্ট অনেক ছোট ছোট প্রশ্ন করে, আমরা আপস্ট্রিম সার্ভিস দ্বারা অনুমোদিত সর্বাধিক পেলোড সাইজ পর্যন্ত অনুরোধগুলিকে একত্রিত করতে আমাদের যন্ত্রপাতি ব্যবহার করি।

ইন্টারফেস

একাধিক পরিষেবা সমর্থন করার জন্য স্বচ্ছভাবে আমি একটি ইন্টারফেস লিখেছি যা এই এপিআইতে স্থির হয়েছে

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

সুতরাং একটি পরিষেবা চালু করার জন্য একটি অনুবাদ ফাংশন, কিভাবে অনুরোধগুলি অনুবাদ করতে হবে এবং সমর্থিত ভাষার তালিকা প্রদান করতে হবে। সমর্থিত ভাষার তালিকার সাহায্যে আমরা একটি ম্যাট্রিক্স তৈরি করতে পারি যাতে আমরা জানি যে কতগুলি পরিষেবা একটি নির্দিষ্ট ভাষা জোড়া সমর্থন করে, পার্স করার জন্য ভাষা জোড়া আমরা পরিষেবা দ্বারা ফেরত আসা প্রতিনিধিকে সাধারণের মধ্যে রূপান্তর করিiso639-1.

অনুবাদের উদাহরণ তৈরি করা দ্বারা ব্যবহৃত অনুরোধের বিকল্পগুলি কনফিগার করার অনুমতি দেয়Guzzle ক্লায়েন্টের উদাহরণ যেমন আমরা উদাহরণস্বরূপ অনুরোধগুলি সম্পাদন করতে প্রক্সি ব্যবহার করতে পারি। সেবাগুলি হল ক্যাশে প্রথমবার উৎপন্ন হওয়ার পর, এটি দরকারী কারণ কিছু পরিষেবার জন্য কিছু প্রাথমিক টোকেন উৎপন্ন করার প্রয়োজন হয় এবং আমরা প্রতিবার সেগুলি পুনর্জন্ম করতে চাই না।

গো সংস্করণ

আমিও লিখলাম a গোলং ভাষায় সংস্করণ। পিএইচপি সংস্করণটি আপনার পিএইচপি প্রকল্পে আমদানি করে ব্যবহার করা হবে, যেখানে গো সংস্করণটি একটি স্বতন্ত্র (মাইক্রো) পরিষেবা হিসাবে কাজ করে। গো ভার্সনটি অনেক বেশি ভার্বোস কারণ এটির জন্য কঠোর টাইপ চেকিং প্রয়োজন এবং যেহেতু আমরা একসাথে একাধিক স্ট্রিংকে জিজ্ঞাসা করতে সমর্থন করি, তাই আমাদেরকে বিভিন্ন ইনপুট সংমিশ্রণের সাথে কাজ করে এমন এপিআই প্রকাশ করতে হবে, এবং গো জেনেরিকের অভাব বাস্তবায়নকে খুব বেদনাদায়ক করে তোলে, কিন্তু এটি প্রস্তাবিত সমকালীন প্রক্রিয়াকরণ, এবং সাধারণভাবে অনেক দ্রুত ছিল।

ইনপুট পরিষ্কার করা

অনুবাদ সহ আমি একটি পরিষেবাও তৈরি করেছি html পরিষ্কার করুন । আমরা কিছু এইচটিএমএল ট্যাগকে হোয়াইটলিস্ট করি এবং বাকিগুলো বাদ দেই। আমরা স্প্যামের মতো সদৃশ বিরামচিহ্ন এবং অজানা HTML বৈশিষ্ট্যগুলি সরিয়ে ফেলি এবং লিঙ্কগুলিকে যথাযথ নোঙ্গর ট্যাগে আবদ্ধ করি।

স্ব আয়োজিত:

উপসংহার

আজকাল আমি মনে করি আমি শুধু একটি স্ব -হোস্টেড সমাধান ব্যবহার করবো, যেটি জোসুয়া বা আর্গোস দ্বারা প্রদান করা হয়েছে, যেহেতু আমি সেরা অনুবাদ করার লক্ষ্য রাখি না, আমি একটি ওয়েবসাইটের জন্য একটি পাঠযোগ্য অনুবাদ দিতে চাই, যাতে এটি ঘর্ষণ ছাড়াই নেভিগেট করা যায়।

পোস্ট ট্যাগ: