Translator API, geliştiricilerin Chrome ve Edge'deki yerleşik yapay zeka modellerini kullanarak istemci tarafında metin çevirisi yapmasına olanak tanır. Bu yaklaşım, geçici içerikler için bulut tabanlı çeviri hizmetlerine olan ihtiyacı ortadan kaldırır. Böylece maliyetleri azaltır ve verileri kullanıcının cihazında tutarak gizliliği artırır.
Ön koşullar ve şartlar
API yüzeyi ve global kapsam
- ZORUNLU: Translator API'ye yalnızca global
Translatorarayüzü (window.Translator/self.Translator) üzerinden erişin. - Desteği sonlandırılan
window.ai.translatorad alanını KULLANMAYIN veya kontrol etmeyin.
Tarayıcı desteği
- Chrome: Sürüm 138 ve sonraki sürümler (yalnızca masaüstü).
- Edge: Sürüm 148 ve sonraki sürümler (yalnızca masaüstü).
- Desteklenmeyenler: Mobil (Android/iOS), Firefox, Safari.
Donanım Gereksinimleri
Gemini Nano'yu ve ilişkili modelleri çalıştırmak için sistemin şunlara ihtiyacı vardır:
- İşletim sistemi: Windows 10/11, macOS 13+, Linux veya ChromeOS (Chromebook Plus).
- Depolama alanı: Profil biriminde en az 22 GB boş alan olmalıdır.
- Bellek/CPU: 16 GB+ RAM ve 4+ CPU çekirdeği.
- GPU: 4 GB+ VRAM (Sesli Prompt API için zorunludur).
- Ağ: Yalnızca dil paketlerinin/modellerinin ilk indirme işlemi için gereklidir.
Uygulama ve Kod Örnekleri
1. Kullanılabilirliği kontrol etme ve model yönetimi
Zorunlu Seçenekleri Aktarma: sourceLanguage ve targetLanguage içeren aynı yapılandırma seçenekleri nesnesini hem Translator.availability(options) hem de Translator.create(options)'e aktarmanız gerekir.
Önerilen İlerleme Durumu İzleme: Kullanıcının model indirme ilerleme durumunu görebilmesi için Translator.create() öğesine bir monitor(m) geri çağırma sağlayarak ve downloadprogress etkinliği için bir dinleyici ekleyerek model indirme ilerleme durumu için bir izleyici uygulamanız gerekir.
Kullanıcı hareketi şartı: availability(options) çağrısı 'downloadable' veya 'downloading' döndürdüğünde Translator.create() çağrısı, dil paketinin indirilmesini tetikler ve NotAllowedError hatasını önlemek için kesinlikle bir kullanıcı hareketi (ör. düğme tıklaması) gerektirir.
Translator.availability(options), dört dize durumundan birini döndürür:
'available': Dil çifti modeli cihaza indirilmiştir ve hemen çeviri yapmaya hazırdır.'downloadable': Dil çifti destekleniyor ancak modelin indirilmesi gerekiyor.Translator.create()işlemini başlatmak için kullanıcı hareketi gerekir.'downloading': Dil paketi şu anda indiriliyor. Kullanıcı hareketiyleTranslator.create()çağrısı yapıldığında indirme işlemi eklenir.'unavailable': Dil çifti veya cihaz desteklenmiyor. Yedek stratejinizi uygulayın.
// 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. Çevirileri Uygulama
API hem statik hem de akış yanıtlarını destekler. Çevirmeni örneklendirirken her zaman indirme ilerleme durumu izlemeyi dahil edin.
Standart Çeviri:
// 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 ?"
Akış Çevirisi (uzun metinler için):
const stream = translator.translateStreaming(longText);
for await (const chunk of stream) {
console.log(chunk);
}
Desteklenen Diller
API, çok çeşitli BCP 47 dil kodlarını destekler. Chrome'un Translator API uygulamasının desteklediği diller şunlardır:
- ar: Arapça
- bg: Bulgarca
- bn: Bengalce
- cs: Çekçe
- da: Danca
- de: Almanca
- el: Yunanca
- en: İngilizce
- es: İspanyolca
- fi: Fince
- fr: Fransızca
- hi: Hintçe
- hr: Hırvatça
- hu: Macarca
- id: Endonezce
- it: İtalyanca
- he: İbranice
- ja: Japonca
- kn: Kannada dili
- ko: Korece
- lt: Litvanca
- mr: Marathice
- nl: Felemenkçe
- no: Norveççe
- pl: Lehçe
- pt: Portekizce
- ro: Rumence
- ru: Rusça
- sk: Slovakça
- sl: Slovence
- sv: İsveççe
- ta: Tamil
- te: Telugu dili
- th: Tayca
- tr: Türkçe
- uk: Ukraynaca
- vi: Vietnamca
- zh: Çince
- zh-Hant: Çince (Geleneksel)
Güvenlik ve Performans
İzin Politikası: Çapraz kaynaklı iFrame'ler için açık izin gerekir.
<iframe src="https://example.com/" allow="translator"></iframe>Web Workers: İzin Politikası'nın karmaşıklığı nedeniyle şu anda desteklenmemektedir.
Gizlilik: Model indirildikten sonra çeviri işlemi sırasında Google sunucularına veri gönderilmez.
Yedek strateji
Kullanmadan önce Translator nesnesinin genel kapsamda mevcut olup olmadığını kontrol edin:
if ('Translator' in self) {
// The Translator API is supported.
} else {
// Execute fallback strategy (do not fall back to window.ai.translator).
}
Translator API'si desteklenmiyorsa veya kullanılabilirlik kontrolleri 'unavailable' değerini döndürüyorsa sorunsuz bir şekilde geri dönmeniz gerekir.
Önerilen seçenekler:
- Uzak API yedek çözümü: Çeviri işlevini sunmak için çeviri isteğini bir sunucu uç noktasına veya bulut tabanlı uzak API'ye (ör. Vertex AI Gemini API) yönlendirin.
- Kontrollü azalma: Çeviri kontrolü öğelerini veya düğmelerini görsel olarak devre dışı bırakırken son kullanıcı dostu bir not (ör.
"Client-side translation is currently unsupported in this browser") gösterin. İşlenmemiş istisnalara izin vermeyin. - Polyfill Fallback: Uzak hizmetleri kullanarak API yüzeyini taklit etmek için
built-in-ai-task-apis-polyfillsveyaprompt-api-polyfillgibi topluluk tarafından yönetilen polyfill'leri kullanabilirsiniz.
Gizlilik ve maliyetle ilgili sonuçlar: Bu polyfill'ler, istekleri uzak sunuculara (ör. bulut üzerinden Gemini API) proxy üzerinden iletebilir ancak yerel işleme de bir seçenektir. Uzaktan işleme, yerel yerleşik yapay zeka API'lerinin cihaz üzerinde gizlilik garantilerini tamamen geçersiz kılar ve genellikle sunucu tarafı API kullanım maliyetlerine neden olur.