প্রকাশিত: মে 8, 2025
অনুবাদক এপিআই এবং ল্যাঙ্গুয়েজ ডিটেক্টর এপিআই-এর মাধ্যমে আপনার বিষয়বস্তুকে বিশ্বব্যাপী দর্শকদের কাছে অ্যাক্সেসযোগ্য করুন। ল্যাঙ্গুয়েজ ডিটেক্টর এপিআই এর মাধ্যমে, আপনি একটি ইনপুটে কোন ভাষা ব্যবহার করা হয়েছে তা নির্ধারণ করতে পারেন এবং অনুবাদক এপিআই এর সাহায্যে আপনি সেই সনাক্ত করা ভাষা থেকে অন্য ভাষায় অনুবাদ করতে পারেন। উভয় APIই Chrome-এ অন্তর্নির্মিত AI মডেলগুলির সাথে ক্লায়েন্ট-সাইড চালায়, যার অর্থ এটি দ্রুত, নিরাপদ এবং বিনামূল্যে ব্যবহার করা যায়, কারণ সার্ভারের কোনো খরচ নেই৷
API | ব্যাখ্যাকারী | ওয়েব | এক্সটেনশন | ক্রোম স্ট্যাটাস | অভিপ্রায় |
---|---|---|---|---|---|
অনুবাদক API | MDN | দেখুন | জাহাজের অভিপ্রায় | ||
ভাষা সনাক্তকারী API | MDN | দেখুন | জাহাজের অভিপ্রায় |
দুটি বড় আন্তর্জাতিক ব্যবসা, পলিসিবাজার এবং JioHotstar, কীভাবে এই অন্তর্নির্মিত APIগুলি ব্যবহার করছে এবং উপকৃত হচ্ছে তা জানুন।
পলিসিবাজারের বহুভাষিক গ্রাহক সহায়তা
পলিসিবাজার হল ভারতের বৃহত্তম বীমা প্ল্যাটফর্ম, যেখানে 97 মিলিয়নেরও বেশি নিবন্ধিত গ্রাহক রয়েছে। ভারতে একটি অবিশ্বাস্য ভাষাগত বৈচিত্র্য রয়েছে, যেখানে দেশ জুড়ে অসংখ্য ভাষা এবং উপভাষা রয়েছে।
তাদের গ্রাহকদের মধ্যে এই ভাষাগত বৈচিত্র্যকে সমর্থন করার জন্য, পলিসিবাজার দুটি উপায়ে অনুবাদক এবং ভাষা আবিষ্কারক এপিআই প্রয়োগ করেছে: যেকোনো সময় বীমা সহায়তা প্রদান এবং তাদের গ্রাহকের পছন্দের ভাষায় বাজারের অন্তর্দৃষ্টি সহ নিবন্ধগুলি প্রদান করা।
Finova AI এর সাথে বীমা সহায়তা
বীমা একটি সহজাত ব্যক্তিগত পণ্য, নির্দিষ্ট নীতির ভিত্তি হিসাবে সংবেদনশীল তথ্য সহ। পলিসিবাজারের গ্রাহকরা প্রায়শই কীভাবে একটি প্ল্যান বাছাই করবেন বা তাদের প্ল্যান কী সমর্থন করে সে সম্পর্কে নির্দেশিকা খোঁজেন৷ যদিও তাদের একজন কর্মী আছে যারা অনেক ভাষায় কথা বলে, পলিসিবাজারের এমন একটি সমাধানের প্রয়োজন ছিল যা টাইম জোন জুড়ে এবং ঘন্টা পরে কাজ করবে। সুতরাং, পলিসিবাজার ফিনোভা এআই তৈরি করেছে, গ্রাহকের পছন্দের ভাষায় বীমা সহায়তার জন্য উপযুক্ত।
"Chrome's Language Detector এবং Translator APIs আমাদের গ্রাহকদের বিভিন্ন ভাষার চাহিদা পূরণ করে আমাদের বীমা সহায়তাকে আরও নিরবচ্ছিন্ন করে তুলতে সাহায্য করেছে। ফলস্বরূপ, ব্যবহারকারীরা তাদের পছন্দের ভারতীয় ভাষায় যোগাযোগ করতে পারেন, লক্ষণীয় বিলম্ব ছাড়াই।"
—ঋষভ মেহরোত্রা, পলিসিবাজারে ডিজাইন লাইফ ইন্স্যুরেন্স বিজনেস ইউনিটের প্রধান
দলটি ক্লায়েন্ট-সাইড এআই বেছে নিয়েছে, যা ব্রাউজারে বা ব্যবহারকারীর ডিভাইসে ঘটে এমন অনুমান। ক্লায়েন্ট-সাইড এআই সার্ভার-হোস্টেড বা সার্ভারবিহীন এআইয়ের তুলনায় ন্যূনতম বিলম্ব এবং কম খরচের প্রস্তাব দেয়। একটি রিয়েল-টাইম কথোপকথনে দ্রুত গতি এবং বার্তাগুলির ভলিউম দেওয়া, একটি সার্ভার-ভিত্তিক সমাধান ব্যয়বহুল এবং সময়সাপেক্ষ হবে।
ক্রোমের বিল্ট-ইন AI বাস্তবায়ন ব্রাউজারে তৈরি মডেলগুলি অফার করে, তাই অনুমানটি ডিভাইসে সঞ্চালিত হয়। এটি প্রাথমিক প্রয়োজনীয়তা পূরণ করার জন্য একটি বাধ্যতামূলক সমাধান।
// Language Detector and Translator APIs implemented with React
import { useRef } from "react";
const useService = () => {
const languageModel = useRef(null);
const translatorCapabilitiesModel = useRef(null);
const loadAllModels = async () => {
if (window?.LanguageDetector) {
languageModel.current = await window.LanguageDetector.create().catch(() => null);
}
}
// Detect what language the customer is writing
const detectLanguage = async (message) => {
if (!languageModel.current) return "";
try {
const [result] = await languageModel.current.detect(message);
const { detectedLanguage, confidence } = result || {};
return confidence * 100 > 50 ? detectedLanguage : "";
} catch (err) {
console.error(err);
return "";
}
};
// Translate messages to and from the detected language and English
const translateMessage = async (message, detectedLanguage, targetLanguage = 'en') => {
try {
const modelAvailability = await window.Translator.availability({ sourceLanguage: detectedLanguage, targetLanguage });
if (!['available', 'downloadable'].includes(modelAvailability)) {
return message;
}
const translator = await window.Translator.create({ sourceLanguage: detectedLanguage, targetLanguage });
const translatedMessage = await translator.translate(message);
return translatedMessage;
} catch (error) {
return message;
}
}
return { detectLanguage, translateMessage, loadAllModels };
}
export default useService;
বাজার অন্তর্দৃষ্টি জন্য নিবন্ধ অনুবাদ
"অনুবাদক API আমাদের বিদ্যমান প্রতিক্রিয়া কোডে একীভূত করা অত্যন্ত সহজ ছিল। আমাদের গ্রাহক এবং এজেন্টদের জন্য দ্রুত অনুবাদ নিশ্চিত করার জন্য আমরা এই ক্লায়েন্ট-সাইড সমাধানটি বেছে নিয়েছি। API দুই সেকেন্ডের মধ্যে একটি 1,000 অক্ষর নিবন্ধ অনুবাদ করতে সক্ষম হয়েছে।"
—আমান সোনি, পলিসিবাজারের টেক লিড
পলিসিবাজারের লাইফ ইন্স্যুরেন্স ব্যবসার উল্লম্ব গ্রাহকদের এবং গ্রাহক সহায়তা এজেন্টদের বাজারের অবস্থা সম্পর্কে অবগত রাখতে প্রচুর নিবন্ধ সরবরাহ করে।
হিন্দি একটি ভাষা যা তাদের ব্যবহারকারীদের মধ্যে ব্যাপকভাবে কথ্য, তাই তারা ইংরেজি থেকে হিন্দিতে নিবন্ধগুলির অন-ডিমান্ড অনুবাদের জন্য অনুবাদক API-কে পাইলট করেছে।
তাদের ওয়েবসাইটে অনুবাদ যোগ করতে, তারা নিম্নলিখিত স্ক্রিপ্ট ব্যবহার করেছে:
// Initialize the translator, setting source and target languages
var translator = null;
var translatorAvailable = false;
var languageOptionsData = { name: "Hindi", code: "hi" };
var IGNORED_TEXT_NODES = ['RSI', 'NAV'];
function checkForLanguageOptions() {
if (window.Translator) {
translatorAvailable = true;
return window.Translator.create({
sourceLanguage: 'en',
targetLanguage: languageOptionsData.code
}).then(function (createdTranslator) {
translator = createdTranslator;
});
} else {
translatorAvailable = false;
return Promise.resolve();
}
}
/**
* Translate the article content using the Translator API.
* @param {HTMLElement} container - element that holds the article content.
* @return {Promise<string>} A promise that resolves to the container's innerHTML after translation.
*/
function translateArticle(container) {
if (!translatorAvailable) { return Promise.resolve(''); }
var textNodes = getAllTextNodes(container);
var promiseChain = Promise.resolve();
textNodes.forEach(function (element) {
if (IGNORED_TEXT_NODES.indexOf(element.nodeValue) !== -1) return;
var message = element.nodeValue;
promiseChain = promiseChain.then(function () {
return translator.translate(message).then(function (translated) {
element.nodeValue = translated;
}).catch(function (error) {
console.error('Translation error:', error);
});
});
});
return promiseChain.then(function () {
return container.innerHTML;
});
}
ক্রোম দ্বারা সরবরাহকৃত মডেল এবং API সহ, গ্রাহকরা নিবন্ধগুলির তাত্ক্ষণিক অনুবাদ অ্যাক্সেস করতে পারেন৷
JioHotstar ডায়নামিক সাবটাইটেল অনুবাদ অফার করে
JioHotstar, ভারতের একটি নেতৃস্থানীয় ডিজিটাল স্ট্রিমিং প্ল্যাটফর্ম যা একাধিক ভাষায় সিনেমা, টিভি শো, খেলাধুলা এবং মূল বিষয়বস্তুর একটি বিস্তৃত পরিসর অফার করে, সাবটাইটেল অনুবাদ উন্নত করতে অনুবাদক এপিআই অন্বেষণ করছে।
JioHotstar ভারতীয় ব্যবহারকারীদের পূরণ করে যারা তাদের আঞ্চলিক ভাষায় সামগ্রী ব্যবহার করতে আগ্রহী। JioHotstar-এর সাথে উপলব্ধ বিষয়বস্তুর ক্যাটালগের বিস্তৃতির পরিপ্রেক্ষিতে, সমস্ত ব্যবহারকারীর আঞ্চলিক ভাষার চাহিদা পূরণ করা একটি চ্যালেঞ্জ, এইভাবে তাদের সামগ্রীর ব্যবহার উন্নত করা।
অনুবাদক এপিআই-এর সাথে, প্ল্যাটফর্মটির লক্ষ্য হল ব্যবহারকারীর পছন্দের ভাষায় বা তাদের ভৌগলিক অঞ্চলের উপর ভিত্তি করে ইংরেজি সাবটাইটেলগুলি গতিশীলভাবে অনুবাদ করা। ভাষা নির্বাচন মেনুতে গতিশীল অনুবাদের বিকল্পটি অফার করা হয়েছে যেখানে আমরা স্বয়ংক্রিয়ভাবে অনুপস্থিত মূল সাবটাইটেলগুলি সনাক্ত করি এবং Chrome সমর্থিত ভাষাগুলি থেকে সেগুলিকে বৃদ্ধি করি৷ এটি ক্যাপশনের ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং আরও ব্যবহারকারীদের কাছে সামগ্রী অ্যাক্সেসযোগ্য করে তোলে।
বিদ্যমান ভাষা প্যাকগুলির জন্য ব্রাউজার পরীক্ষা করে উপলব্ধ গতিশীল ভাষার তালিকা তৈরি করা হয়, প্রতিটি ব্যবহারকারীর পছন্দ এবং ভৌগলিক অবস্থানের জন্য তৈরি করা একটি প্রধান তালিকার উপর ভিত্তি করে। যখন একজন ব্যবহারকারী একটি ভাষা নির্বাচন করেন এবং সংশ্লিষ্ট ভাষা প্যাকটি ইতিমধ্যেই ব্রাউজারে ডাউনলোড করা হয়, তখন অনূদিত পাঠ্যটি অবিলম্বে উপস্থিত হয়। অন্যথায়, প্যাকটি প্রথমে ডাউনলোড করা হয় এবং তারপরে অনুবাদ শুরু হয়।
একবার ব্যবহারকারী একটি ভাষা নির্বাচন করে এবং অনুবাদ ঘটতে দেখে, তারা নিশ্চিত হতে পারে যে ভাষা প্যাকটি সফলভাবে ডাউনলোড করা হয়েছে। সেই বিন্দু থেকে, যে কোনো ক্যাপশন করা বিষয়বস্তু নির্বাচিত ভাষায় দেখা যাবে। এটি ব্যবহারকারীদের জন্য অনিশ্চয়তা দূর করতে সাহায্য করে যারা অন্যথায় বিষয়বস্তু ব্রাউজ করতে দ্বিধা বোধ করতে পারেন, এটি তাদের পছন্দের ভাষায় উপলব্ধ হবে কিনা তা নিশ্চিত নয়।
নিম্নলিখিত কোড নমুনা অনুবাদক শুরু করে এবং সেট আপ করে।
class SubTitleTranslator {
// Cache translator instances based on source-target language pair, so that we don't create this often for multiple contents
#translatorMap = {};
// Get or create a translator for the language pair
async #createTranslator(sourceLanguage, targetLanguage) {
const key = `${sourceLanguage}-${targetLanguage}`;
const translator = this.#translatorMap[key];
// Check if a translator already exists for a language pair in the map
if (translator) {
return translator;
}
// Check if translation is available
const isAvailable =
(await Translator.availability({ sourceLanguage, targetLanguage })) ===
"available";
if (isAvailable) {
// If available, create a new translator and cache it
this.#translatorMap[key] = await Translator.create({
sourceLanguage,
targetLanguage,
});
return this.#translatorMap[key];
}
return null;
}
// Translate text
async #translateText(text, sourceLanguage, targetLanguage) {
const translator = await this.#createTranslator(
sourceLanguage,
targetLanguage
);
// Returns the given input text if translator is unavailable
if (!translator) {
return text;
}
return await translator.translate(text);
}
// Public method to get a reusable translation function for a specific language pair.
getTranslatorFor(sourceLanguage, targetLanguage) {
return async (text) => {
try {
return this.#translateText(text, sourceLanguage, targetLanguage);
} catch {
return text;
}
};
}
}
তারপর, তারা অনুবাদিত সাবটাইটেল তৈরি করতে Translator API ব্যবহার করে।
const translatorFactory = new SubTitleTranslator();
/* Accept English input and translate to Tamil.*/
const translateToTamil = translatorFactory.getTranslatorFor('en','ta');
/* Accept English text as input and translate it to Japanese. */
const translateToJapanese = translatorFactory.getTranslatorFor('en','ja');
/* Accept English input and returns English, as `JTA` is not a valid language code. */
const translateToUnknownLanguage = translatorFactory.getTranslatorFor('en','jta');
কিছু অতিরিক্ত ফাংশন আছে যা চূড়ান্ত রেন্ডার করা সাবটাইটেল আপডেট করে।
/* updateSubtitle is the internal function that updates the rendered subtitle. */
translateToTamil('hi').then(result => updateSubtitle(result))
translateToJapanese('hi').then(result => updateSubtitle(result))
translateToUnknownLanguage('hi').then(result => updateSubtitle(result))
সর্বোত্তম অনুশীলন
অনুবাদক এবং ভাষা সনাক্তকারী API-এর এই ব্যবহারগুলি ভিন্ন হলেও, অনেক সাধারণ সর্বোত্তম অনুশীলন রয়েছে:
- ব্যাকরণ এবং প্রসঙ্গ সংরক্ষিত আছে তা নিশ্চিত করার জন্য অনুবাদিত পাঠ্যের জন্য গুণমানের মূল্যায়ন পরিচালনা করুন। উপযুক্ত হলে ব্যবহারকারীদের অনুবাদের বিষয়ে মতামত দেওয়ার জন্য একটি বিকল্প প্রদান করার কথা বিবেচনা করুন।
- প্রতিক্রিয়াশীলতা নির্দেশ করতে একটি স্পিনার, লোডার বা অগ্রগতি বারের মতো একটি অগ্রগতি UI প্রদান করুন। উদাহরণস্বরূপ, পলিসিবাজার চ্যাটবটের জন্য একটি টাইপিং সূচক ব্যবহার করেছে যে এটি ব্যবহারকারীর ইনপুট প্রক্রিয়া করছে।
উপসংহার এবং সুপারিশ
আপনি কি এই API গুলি দিয়ে নতুন কিছু তৈরি করছেন? X-এ @ChromiumDev-এ অথবা LinkedIn-এ ডেভেলপারদের জন্য Chromium-এ আমাদের সাথে শেয়ার করুন।
সম্পদ
- Chrome-এ বিল্ট-ইন API ব্যবহার করা শুরু করুন
- Language Detector API সম্পর্কে আরও জানুন
- Translator API সম্পর্কে আরও জানুন
- ব্লগারদের ক্ষমতায়ন: সাইবার এজেন্ট কীভাবে বিষয়বস্তু তৈরিকে উন্নত করতে বিল্ট-ইন এআই মোতায়েন করেছে
স্বীকৃতি
এই নিবন্ধটি লিখতে এবং পর্যালোচনা করতে সাহায্য করার জন্য পলিসিবাজার থেকে ঋষভ মেহরোত্রা এবং আমান সোনি , JioHotstar থেকে ভুবনেশ্বরন মোহন এবং অঙ্কিত মাইনি , আলেকজান্দ্রা ক্লেপার , থমাস স্টেইনার এবং কেনজি বাহেক্সকে ধন্যবাদ৷