چگونه Policybazaar و JioHotstar از API های مترجم و آشکارساز زبان برای ایجاد تجربیات چند زبانه استفاده می کنند، چگونه Policybazaar و JioHotstar از API های مترجم و آشکارساز زبان برای ایجاد تجربیات چند زبانه استفاده می کنند، چگونه Policybazaar و JioHotstar از Translator و Language Detector API های چند زبانه استفاده می کنند. از API های مترجم و آشکارساز زبان برای ایجاد تجربیات چند زبانه استفاده کنید

سوئتا گوپالاکریشنان
Swetha Gopalakrishnan
ساوراب راجپال
Saurabh Rajpal

تاریخ انتشار: 8 مه 2025

با Translator API و Language Detector API محتوای خود را در دسترس مخاطبان جهانی قرار دهید. با زبان شناساگر API، می توانید تعیین کنید که چه زبانی در ورودی استفاده می شود و با مترجم API، می توانید از آن زبان شناسایی شده به زبان دیگری ترجمه کنید. هر دو API در سمت کلاینت با مدل‌های هوش مصنوعی داخلی Chrome اجرا می‌شوند، به این معنی که استفاده از آن سریع، ایمن و رایگان است، زیرا هیچ هزینه‌ای برای سرور وجود ندارد.

API توضیح دهنده وب برنامه های افزودنی وضعیت کروم قصد
API مترجم MDN کروم 138 کروم 138 مشاهده کنید قصد حمل
API آشکارساز زبان MDN کروم 138 کروم 138 مشاهده کنید قصد حمل

بیاموزید که چگونه دو کسب و کار بزرگ بین المللی، Policybazaar و JioHotstar، از این API های داخلی استفاده می کنند و از آنها بهره می برند.

کمک به مشتری چند زبانه Policybazaar

Policybazaar بزرگترین بستر بیمه در هند است که بیش از 97 میلیون مشتری ثبت شده دارد. هند دارای تنوع زبانی باورنکردنی است، با زبان ها و گویش های متعددی که در سراسر کشور صحبت می شود.

Policybazaar برای حمایت از این تنوع زبانی در میان مشتریان خود، API های مترجم و آشکارساز زبان را به دو صورت پیاده سازی کرد: ارائه کمک بیمه در هر زمان و ارائه مقالاتی با بینش بازار به زبان دلخواه مشتری.

کمک بیمه با Finova AI

بیمه یک محصول ذاتا شخصی است که اطلاعات حساس اساس سیاست های خاص است. مشتریان Policybazaar اغلب به دنبال راهنمایی در مورد نحوه انتخاب یک طرح یا آنچه که طرح آنها از آن پشتیبانی می کند، هستند. در حالی که آنها کارکنانی دارند که به زبان های زیادی صحبت می کنند، Policybazaar به راه حلی نیاز داشت که در مناطق زمانی و بعد از ساعت کار کند. بنابراین، Policybazaar Finova AI را ساخت، کمک بیمه را به زبان دلخواه مشتری تنظیم کرد.

کاربران می توانند با چت بات فینووا به زبان اصلی خود چت کنند.

"API های آشکارساز زبان و مترجم کروم با برآوردن نیازهای زبانی متنوع مشتریانمان به کمک بیمه ما کمک کرده است. در نتیجه، کاربران می توانند به زبان هندی دلخواه خود بدون تاخیر قابل توجه ارتباط برقرار کنند."

—ریشابه مهروترا، رئیس واحد تجاری بیمه عمر طراحی در Policybazaar

این تیم هوش مصنوعی سمت کلاینت را انتخاب کرد، که استنتاجی است که در مرورگر یا دستگاه کاربر رخ می‌دهد. هوش مصنوعی سمت مشتری کمترین تاخیر و هزینه کمتری را نسبت به هوش مصنوعی میزبان سرور یا بدون سرور ارائه می دهد. با توجه به سرعت و حجم سریع پیام ها در یک مکالمه بلادرنگ، یک راه حل مبتنی بر سرور پرهزینه و وقت گیر خواهد بود.

پیاده‌سازی هوش مصنوعی داخلی کروم مدل‌های ساخته‌شده در مرورگر را ارائه می‌دهد، بنابراین استنتاج روی دستگاه انجام می‌شود. این یک راه حل قانع کننده برای برآوردن الزامات اولیه است.

// 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 Translator بسیار آسان برای ادغام در کد React موجود ما بود. ما این راه حل سمت مشتری را برای اطمینان از ترجمه سریع برای مشتریان و نمایندگان خود انتخاب کردیم. API توانست یک مقاله 1000 کاراکتری را در عرض دو ثانیه ترجمه کند."

-آمان سونی، رهبر فناوری در Policybazaar

کسب و کار عمودی بیمه عمر Policybazaar مقالات زیادی را برای اطلاع مشتریان و نمایندگان پشتیبانی مشتری در مورد شرایط بازار ارائه می دهد.

هندی زبانی است که به طور گسترده در بین کاربران آنها صحبت می شود، بنابراین آنها API مترجم را برای ترجمه درخواستی مقالات از انگلیسی به هندی آزمایش کردند.

Policybazaar ترجمه یکپارچه و سریع بین انگلیسی و هندی را ارائه می دهد.

آنها برای افزودن ترجمه به وب سایت خود از اسکریپت زیر استفاده کردند:

// 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 ارائه شده توسط Chrome، مشتریان می توانند به ترجمه فوری مقالات دسترسی داشته باشند.

JioHotstar ترجمه پویا زیرنویس را ارائه می دهد

JioHotstar، یک پلت‌فرم پخش دیجیتال پیشرو در هند که طیف گسترده‌ای از فیلم‌ها، نمایش‌های تلویزیونی، ورزش و محتوای اصلی را به زبان‌های مختلف ارائه می‌دهد، در حال بررسی API مترجم برای بهبود ترجمه زیرنویس است.

JioHotstar به کاربران هندی که تمایل به مصرف محتوا به زبان منطقه ای خود دارند، پاسخ می دهد. با توجه به گستردگی کاتالوگ محتوای موجود با JioHotstar، پاسخگویی به نیازهای زبان منطقه ای همه کاربران و در نتیجه بهبود مصرف محتوای آنها یک چالش است.

با استفاده از Translator API، پلتفرم قصد دارد زیرنویس‌های انگلیسی را به صورت پویا به زبان دلخواه کاربر یا بر اساس منطقه جغرافیایی او ترجمه کند. گزینه ترجمه پویا در منوی انتخاب زبان ارائه می‌شود، جایی که ما به‌طور خودکار زیرنویس‌های اصلی گم شده را تشخیص می‌دهیم و آن‌ها را از زبان‌های پشتیبانی‌شده 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 های مترجم و آشکارساز زبان متفاوت است، بهترین شیوه های رایج بسیاری وجود دارد:

  • ارزیابی کیفیت متن ترجمه شده را انجام دهید تا از حفظ گرامر و متن اطمینان حاصل کنید. گزینه ای را برای کاربران در نظر بگیرید تا در صورت لزوم بازخورد خود را در مورد ترجمه ارائه دهند.
  • برای نشان دادن پاسخگویی، یک رابط کاربری پیشرفت مانند اسپینر، لودر یا نوار پیشرفت ارائه دهید. به عنوان مثال، Policybazaar از یک نشانگر تایپ برای چت بات استفاده کرد تا نشان دهد که ورودی کاربر را پردازش می کند.

نتیجه گیری و پیشنهادات

آیا با این API ها چیز جدیدی می سازید؟ آن را با ما در ChromiumDev@ در X یا Chromium for Developers در LinkedIn به اشتراک بگذارید.

منابع

قدردانی

از Rishabh Mehrotra و Aman Soni از Policybazaar، Bhuvaneswaran Mohan و Ankeet Maini از JioHotstar، Alexandra Klepper ، Thomas Steiner و Kenji Baheux برای کمک به نوشتن و بررسی این مقاله سپاسگزاریم.