תרגום באמצעות AI מובנה

תאריך הפרסום: 12 בנובמבר 2024

שימוש ב-Translator API ב-Chrome כדי לתרגם טקסט בדפדפן באמצעות מודלים מקומיים של AI.

יכול להיות שכבר יש באתר שלכם תוכן בכמה שפות, כדי שהוא יהיה נגיש לקהל גלובלי. באמצעות Translator API, המשתמשים יכולים לתרום בשפה הראשונה שלהם. לדוגמה, משתמשים יכולים להשתתף בצ'אטים של תמיכה בשפה הראשונה שלהם, והאתר יכול לתרגם את הצ'אט לשפה שבה נציגי התמיכה משתמשים, לפני שהוא יוצא מהמכשיר של המשתמש. כך מתקבלת חוויה חלקה, מהירה ומכילה לכל המשתמשים.

בדרך כלל, כדי לתרגם תוכן באינטרנט צריך להשתמש בשירות בענן. קודם תוכן המקור מועלה לשרת, שבו מתבצע התרגום לשפת היעד. לאחר מכן הטקסט שנוצר מורידים ומחזירים למשתמש. כשמריצים את התרגום בצד הלקוח, חוסכים את הזמן שנדרש לנסיעות לשרת ואת עלות אירוח שירות התרגום.

זמינות

תמיד ידועה שפת היעד שנבחרה, אבל בשלבים מסוימים שפת המקור עשויה להיות לא ידועה, למשל בתוכן שנוצר על ידי משתמשים. במקרים כאלה, הצעת ממשק ה-API של התרגום כוללת את ממשק ה-API של התרגום וגם את ה-API לזיהוי שפה, שזמינים גם הם בגרסת מקור לניסיון. כדי להשתמש בשני ממשקי ה-API האלה יחד, צריך להירשם לשני גרסת הטרום של המקור.

זיהוי תכונות

כדי לבדוק אם יש תמיכה ב-Translator API, מריצים את קטע הקוד הבא לזיהוי תכונות.

if ('translation' in self && 'createTranslator' in self.translation) {
  // The Translator API is supported.
}

בדיקת התמיכה בזוגות שפות

התרגום מנוהל באמצעות חבילות שפה, שמורידות על פי דרישה. חבילת שפה היא כמו מילון של שפה מסוימת. החבילות האלה מותאמות לפונקציה canTranslate() האסינכרונית, שמאפשרת לקבוע אם יש תמיכה בשילוב שפות מסוים.

בפונקציה canTranslate() נדרש פרמטר options עם שני שדות:

  • sourceLanguage: השפה הנוכחית של הטקסט.
  • targetLanguage: השפה הסופית שאליה צריך לתרגם את הטקסט.

משתמשים בקודים קצרים של שפות לפי BCP 47 בתור מחרוזות. לדוגמה, 'es' עבור ספרדית או 'fr' עבור צרפתית.

await translation.canTranslate({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});
// 'readily'

הפונקציה canTranslate() יכולה להחזיר כל אחת מהתוצאות הבאות:

  • no: לא ניתן לתרגם את הדף הזה בדפדפן הזה כפי שביקשת.
  • readily: הדפדפן יכול לתרגם לפי הצורך.
  • after-download: הדפדפן יכול לבצע את התרגום, אבל רק לאחר הורדת המודל או חבילות השפה הרלוונטיים.

אפשר להאזין להתקדמות ההורדה באמצעות האירוע downloadprogress:

translator.ondownloadprogress = progressEvent => {
  updateDownloadProgressBar(progressEvent.loaded, progressEvent.total);
};

אם ההורדה נכשלת, לא תתבצע יותר הנפקה של אירועי downloadprogress וההבטחה ready נדחית.

יצירה והרצה של המתרגם

כדי ליצור מתרגם, צריך להפעיל את הפונקציה translation.createTranslator() אסינכרונית. בדומה ל-canTranslate(), צריך להשתמש בפרמטר options עם שני שדות, אחד ל-sourceLanguage ואחד ל-targetLanguage.

// Create a translator that translates from English to French.
const translator = await self.translation.createTranslator({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});

אחרי שתקבלו מתרגם, תוכלו להפעיל את הפונקציה האסינכרונית translate() כדי לתרגם את הטקסט.

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

מגבלות בתקופת הניסיון במקור

ההגבלות הבאות חלות במהלך תקופת הניסיון במקור.

זוגות השפות הנתמכים

בשלב הזה, אפשר להוריד עד שלוש חבילות שפה לצורך תרגום. אנחנו מחויבים להרחיב את מגוון השפות הנתמכות במהדורות עתידיות, תוך שמירה על סטנדרטים גבוהים של פרטיות המשתמשים. אפשר לבדוק אם יש תמיכה בשילוב השפות הרצוי באמצעות הפונקציה canTranslate().

יכול להיות שזוגות שפות מסוימים שבהם משתמשים בתדירות נמוכה יותר ישמשו ליצירת טביעת אצבע. לדוגמה, נפוץ יותר לתרגם בין אנגלית לספרדית מאשר בין שפות פחות נפוצות, כמו גאלית וקטלנית. צמד שפות פחות נפוץ יכול להיחשב כנקודת נתונים לזיהוי משתמשים.

במהלך תקופת הניסיון במקור, אנחנו מגבילים את זוגות השפות האפשריים לתרגום כדי להגן על פרטיות המשתמשים. צמדי השפות צריכים לעמוד בקריטריונים הבאים:

  • גם שפת המקור וגם שפת היעד מוגדרות כשפות מועדפות ב-Chrome.
  • לחלופין, אחת מהשפות מוגדרת כשפה מועדפת ב-Chrome, והשפה השנייה היא אחת מהשפות הפופולריות הבאות:
    • אנגלית (en)
    • סינית מנדרינית (zh; פשוטה) או מנדרינית טייוואנית (zh-Hant; מסורתית)
    • יפנית (ja)
    • פורטוגזית (pt)
    • רוסית (ru)
    • ספרדית (es)
    • טורקית (tr)
    • הינדי (hi)
    • וייטנאמית (vi)
    • בנגלית (bn)

עקיפת הגבלות השפה לבדיקה מקומית

כדי ליצור אב טיפוס מקומי, אפשר לעקוף את הבדיקות האלה על ידי הפעלת Chrome עם אפשרות שורת הפקודה --disable-features=TranslationAPIAcceptLanguagesCheck. לחלופין, אפשר להגדיר את chrome://flags/#translation-api לערך Enable without language pack limit.

היכנסו אל chrome://on-device-translation-internals/ כדי להתקין ידנית חבילות שפה ולהסיר אותן.

תרגומים ברצף

התרגומים עוברים עיבוד ברצף. אם שולחים כמויות גדולות של טקסט לתרגום, התרגומים הבאים יחסמו עד שהתרגומים הקודמים יסתיימו.

כדי לקבל את התגובה המהירה ביותר לבקשות התרגום, כדאי לקבץ אותן יחד ולהציג ממשק טעינה, כמו גלגל מסתובב, כדי להעביר את המסר שהתרגום מתבצע.

זמינות של Web worker

במהלך גרסת המקור לניסיון, Translator API נתמך רק מ-thread הראשי. אנחנו מתכוונים לתמוך בו ב-Web Workers ברגע שה-API יהיה זמין לשימוש נרחב.

הדגמה (דמו)

אפשר לראות את Translator API, שמשמש בשילוב עם Language Detector API, באזור הניסוי של Translator ו-Language Detector API.

מאמץ סטנדרטיזציה

אנחנו פועלים כדי להפוך את Translator API לתקן, כדי להבטיח תאימות לדפדפנים שונים.

הצעת ה-API שלנו קיבלה תמיכה מהקהילה והועברה לקבוצת הקהילה של W3C Web Incubator להמשך דיון. צוות Chrome ביקש משוב מקבוצת הארכיטקטורה הטכנית של W3C, וביקש מ-Mozilla ומ-WebKit את עמדותיהם בנושא התקנים.

השתתפות ושיתוף משוב

אתם יכולים להצטרף לתקופת הניסיון המקורית ולשלוח לנו משוב על Translator API כבר עכשיו. המשוב שלכם יכול להשפיע באופן ישיר על האופן שבו אנחנו מפתחים ומטמיעים גרסאות עתידיות של ה-API הזה ועל כל ממשקי ה-AI המובנים של ה-AI.