अनुवादक

वेब की सुविधाएं: अनुवादक

Translator API की मदद से, डेवलपर Chrome और Edge में पहले से मौजूद एआई मॉडल का इस्तेमाल करके, क्लाइंट-साइड टेक्स्ट का अनुवाद कर सकते हैं. इस तरीके से, कुछ समय के लिए दिखने वाले कॉन्टेंट के लिए, क्लाउड-आधारित अनुवाद सेवाओं की ज़रूरत नहीं पड़ती. इससे लागत कम होती है और उपयोगकर्ता के डिवाइस पर डेटा सेव करके, निजता को बेहतर बनाया जाता है.

ज़रूरी शर्तें

एपीआई सरफ़ेस और ग्लोबल स्कोप

  • ज़रूरी: Translator API को सिर्फ़ ग्लोबल Translator इंटरफ़ेस (window.Translator / self.Translator) से ऐक्सेस करें.
  • इस्तेमाल से बाहर हो चुके window.ai.translator नेमस्पेस का इस्तेमाल न करें या उसे न देखें.

ब्राउज़र के लिए सहायता

  • Chrome: वर्शन 138 या इसके बाद का वर्शन (सिर्फ़ डेस्कटॉप के लिए).
  • Edge: वर्शन 148 या इसके बाद का वर्शन (सिर्फ़ डेस्कटॉप पर).
  • इन पर काम नहीं करता: मोबाइल (Android/iOS), Firefox, Safari.

हार्डवेयर की ज़रूरी शर्तें

Gemini Nano और इससे जुड़े मॉडल चलाने के लिए, सिस्टम में ये चीज़ें होनी चाहिए:

  • ऑपरेटिंग सिस्टम: Windows 10/11, macOS 13+, Linux या ChromeOS (Chromebook Plus).
  • स्टोरेज: प्रोफ़ाइल वॉल्यूम में कम से कम 22 जीबी स्टोरेज खाली होना चाहिए.
  • मेमोरी/सीपीयू: 16 जीबी से ज़्यादा रैम और चार से ज़्यादा सीपीयू कोर.
  • जीपीयू: 4 जीबी+ वीआरएएम (ऑडियो के साथ Prompt API के लिए ज़रूरी है).
  • नेटवर्क: इसकी ज़रूरत सिर्फ़ भाषा पैक/मॉडल को पहली बार डाउनलोड करने के लिए होती है.

लागू करने का तरीका और कोड सैंपल

1. उपलब्धता की जांच करना और मॉडल मैनेज करना

ज़रूरी विकल्प पास करना: आपको Translator.availability(options) और Translator.create(options), दोनों को एक जैसा कॉन्फ़िगरेशन विकल्प ऑब्जेक्ट पास करना होगा. इसमें sourceLanguage और targetLanguage शामिल होने चाहिए.

प्रोग्रेस मॉनिटर करने का सुझाव: आपको मॉडल डाउनलोड करने की प्रोग्रेस को मॉनिटर करने की सुविधा लागू करनी चाहिए. इसके लिए, Translator.create() को monitor(m) कॉलबैक दें और downloadprogress इवेंट के लिए लिसनर जोड़ें, ताकि उपयोगकर्ता मॉडल डाउनलोड करने की प्रोग्रेस देख सके.

उपयोगकर्ता के जेस्चर की ज़रूरत: availability(options) को कॉल करने पर 'downloadable' या 'downloading' मिलने पर, Translator.create() को कॉल करने से लैंग्वेज पैक डाउनलोड होना शुरू हो जाता है. साथ ही, NotAllowedError को रोकने के लिए, उपयोगकर्ता के जेस्चर की ज़रूरत होती है. जैसे, बटन पर क्लिक करना.

Translator.availability(options), चार स्ट्रिंग स्टेटस में से कोई एक दिखाता है:

  • 'available': भाषा के जोड़े का मॉडल, डिवाइस पर पहले से डाउनलोड है और तुरंत अनुवाद करने के लिए तैयार है.
  • 'downloadable': भाषाओं का यह जोड़ा इस्तेमाल किया जा सकता है, लेकिन मॉडल को डाउनलोड करना होगा. Translator.create() को शुरू करने के लिए, उपयोगकर्ता का जेस्चर ज़रूरी है.
  • 'downloading': भाषा पैक डाउनलोड किया जा रहा है. उपयोगकर्ता के जेस्चर के साथ Translator.create() को कॉल करने पर, डाउनलोड की प्रोसेस शुरू हो जाती है.
  • 'unavailable': भाषा का जोड़ा या डिवाइस, इस सुविधा के साथ काम नहीं करता. फ़ॉलबैक रणनीति को लागू करें.
// Language pair options passed to both availability() and create()
const options = {
  sourceLanguage: 'es', // Example BCP 47 language code
  targetLanguage: 'fr', // Example BCP 47 language code
};

// 1. Check availability for the language pair
const availability = await Translator.availability(options);

if (availability === 'available') {
  // Model is ready immediately on device
  const translator = await Translator.create(options);
} else if (availability === 'downloadable' || availability === 'downloading') {
  // User gesture is strictly required before create() triggers or attaches to download
  document.getElementById('start-translation-btn').addEventListener('click', async () => {
    const translator = await Translator.create({
      ...options,
      monitor(m) {
        m.addEventListener('downloadprogress', (e) => {
          console.log(`Downloaded ${Math.round(e.loaded * 100)}%`);
        });
      },
    });
  });
} else if (availability === 'unavailable') {
  // Language pair or hardware unsupported; execute fallback
  console.warn('Translation model is unavailable on this device.');
}

2. अनुवाद करना

एपीआई, स्टैटिक और स्ट्रीमिंग, दोनों तरह के रिस्पॉन्स के साथ काम करता है. अनुवादक को इंस्टैंशिएट करते समय, डाउनलोड की प्रोग्रेस को मॉनिटर करने की सुविधा हमेशा शामिल करें.

स्टैंडर्ड अनुवाद:

// Default to including a progress monitor when creating translator
const translator = await Translator.create({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${Math.round(e.loaded * 100)}%`);
    });
  },
});

const result = await translator.translate(
  'Where is the next bus stop, please?',
);
console.log(result);
// Output: "Où est le prochain arrêt de bus, s'il vous plaît ?"

स्ट्रीमिंग ट्रांसलेशन (लंबे टेक्स्ट के लिए):

const stream = translator.translateStreaming(longText);
for await (const chunk of stream) {
  console.log(chunk);
}

इस्तेमाल की जा सकने वाली भाषाएँ

यह एपीआई, BCP 47 भाषा कोड की एक बड़ी रेंज के साथ काम करता है: Chrome में Translator API को लागू करने पर, ये भाषाएं काम करती हैं:

  • ar: अरेबिक
  • bg: बल्गेरियन
  • bn: बंगाली
  • cs: चेक
  • da: डैनिश
  • de: जर्मन
  • el: ग्रीक
  • en: अंग्रेज़ी
  • es: स्पैनिश
  • fi: फ़िनिश
  • fr: फ़्रेंच
  • hi: हिन्दी
  • hr: क्रोएशियन
  • hu: हंगेरियन
  • id: इंडोनेशियन
  • it: इटैलियन
  • he: हिब्रू
  • ja: जैपनीज़
  • kn: कन्नड़
  • ko: कोरियन
  • lt: लिथुएनियन
  • mr: मराठी
  • nl: डच
  • no: नॉर्वीजन
  • pl: पोलिश
  • pt: पॉर्चुगीज़
  • ro: रोमेनियन
  • ru: रशियन
  • sk: Slovak
  • sl: स्लोवेनियन
  • sv: स्वीडिश
  • ta: तमिल
  • te: तेलुगु
  • th: थाई
  • tr: टर्किश
  • uk: यूक्रेनियन
  • vi: वियतनामीज़
  • zh: चाइनीज़
  • zh-Hant: चीनी (पारंपरिक)

सुरक्षा और परफ़ॉर्मेंस

  • अनुमति से जुड़ी नीति: क्रॉस-ऑरिजिन iframe के लिए, साफ़ तौर पर अनुमति लेना ज़रूरी है.

    <iframe src="https://example.com/" allow="translator"></iframe>
    
  • वेब वर्कर: अनुमति की नीति से जुड़ी जटिलताओं की वजह से, फ़िलहाल यह सुविधा इस्तेमाल नहीं की जा सकती.

  • निजता: मॉडल डाउनलोड होने के बाद, अनुवाद की प्रोसेस के दौरान Google के सर्वर पर कोई डेटा नहीं भेजा जाता.

फ़ॉलबैक रणनीति

इस्तेमाल करने से पहले, देखें कि Translator ऑब्जेक्ट, ग्लोबल स्कोप में उपलब्ध है या नहीं:

if ('Translator' in self) {
  // The Translator API is supported.
} else {
  // Execute fallback strategy (do not fall back to window.ai.translator).
}

अगर Translator एपीआई काम नहीं करता है या उपलब्धता की जांच करने पर 'unavailable' दिखता है, तो आपको वापस जाना होगा.

सुझाए गए विकल्प:

  1. रिमोट एपीआई फ़ॉलबैक: अनुवाद की सुविधा देने के लिए, अनुवाद के अनुरोध को सर्वर एंडपॉइंट या क्लाउड रिमोट एपीआई (जैसे, Vertex AI Gemini API) पर रीडायरेक्ट करें.
  2. अनुकूल गिरावट: असली उपयोगकर्ता के लिए आसान नोट (जैसे, "Client-side translation is currently unsupported in this browser") दिखाते समय, अनुवाद कंट्रोल एलिमेंट या बटन को विज़ुअल तौर पर बंद करें. अनहैंडल्ड अपवाद की अनुमति न दें.
  3. पॉलीफ़िल फ़ॉलबैक: रिमोट सेवाओं का इस्तेमाल करके एपीआई के प्लैटफ़ॉर्म को एम्युलेट करने के लिए, कम्यूनिटी के बनाए गए पॉलीफ़िल का इस्तेमाल किया जा सकता है. जैसे, built-in-ai-task-apis-polyfills या prompt-api-polyfill.

निजता और लागत पर असर: ये पॉलीफ़िल, रिमोट सर्वर (जैसे, क्लाउड पर Gemini API) को प्रॉक्सी अनुरोध भेज सकते हैं. हालांकि, लोकल प्रोसेसिंग का विकल्प भी उपलब्ध है. रिमोट प्रोसेसिंग की वजह से, उपयोगकर्ता के डिवाइस पर मौजूद नेटिव एआई एपीआई की निजता की गारंटी पूरी तरह से खत्म हो जाती है. साथ ही, सर्वर-साइड एपीआई के इस्तेमाल की लागत भी अक्सर चुकानी पड़ती है.