תיאור
אפשר להשתמש בתשתית chrome.i18n
כדי להטמיע התאמה לשוק הבינלאומי בכל האפליקציה או התוסף.
צריך להכניס את כל המחרוזות הגלויות למשתמש לקובץ בשם messages.json
. בכל פעם
מוסיפים לוקאל חדש, מוסיפים קובץ הודעות לספרייה בשם _locales/_localeCode_
, שבה
localeCode הוא קוד כמו en
לאנגלית.
זוהי היררכיית הקבצים של תוסף בינלאומי שתומכת באנגלית (en
) בספרדית
(es
) וקוריאנית (ko
):
איך לתמוך בכמה שפות
נניח שיש לכם סיומת עם הקבצים המוצגים באיור הבא:
כדי להפוך את התוסף הזה לבינלאומי, צריך לתת שם לכל מחרוזת גלויה למשתמש ולהזין אותה בהודעה חדש. במניפסט של התוסף, בקובצי ה-CSS ובקוד JavaScript נעשה שימוש בשם של כל מחרוזת כדי לקבל את שמותאמת לשוק המקומי.
כך נראה התוסף כשהוא הופך לבינלאומי (שימו לב שעדיין יש לו רק מחרוזות באנגלית):
<img "__msg_extname__",="" "default_locale"="" "en".="" "extname"."="" "hello="" _locales="" a="" Alt="בקובץ המניפסט.json, " and="" כבר="" changed="" chrome.i18n.getmessage("extname").="" defines="" en="" file="" file,="" has="" hello="" in="" item="" javascript="" messages.json="" named="" new="" src="/static/images/i18n-after-1.gif" the="" to="" value="" עולם"="" />
כמה הערות בנוגע לבינלאומיות:
- אפשר להשתמש בכל אחד מהלוקאלים הנתמכים. אם אתה משתמש באזור שאינו נתמך, Google Chrome מתעלם ממנה.
בקובצי
manifest.json
ובקובצי CSS, מתייחסים למחרוזת בשם messagename באופן הבא:__MSG_messagename__
בקוד ה-JavaScript של התוסף או האפליקציה, מתייחסים למחרוזת בשם messagename באופן הבא:
chrome.i18n.getMessage("messagename")
בכל קריאה אל
getMessage()
, אפשר לציין עד 9 מחרוזות שייכללו בהודעה. צפייה דוגמאות: getMessage לפרטים.חלק מההודעות, כמו
@@bidi_dir
ו-@@ui_locale
, מסופקות על ידי ההתאמה לשוק הבינלאומי המערכת. רשימה מלאה של שמות ההודעות המוגדרים מראש מופיעה בקטע הודעות שהוגדרו מראש.ב-
messages.json
, לכל מחרוזת הגלויה למשתמש יש שם – "message" ואופציונלי, "description" שימושי. השם הוא מפתח כמו extName או 'search_string' שמזהה את String. השדה 'הודעה' מציין את ערך המחרוזת בלוקאל הזה. השדה האופציונלי 'תיאור' מספקת עזרה למתרגמים, שייתכן שאינם יכולים לראות את אופן השימוש במחרוזת לתוסף. לדוגמה:{ "search_string": { "message": "hello%20world", "description": "The string we search for. Put %20 between words that go together." }, ... }
מידע נוסף מופיע במאמר פורמטים: הודעות ספציפיות למקום.
ברגע שתוסף או אפליקציה הופכים לבינלאומיים, קל לתרגם אותם. מעתיקים את messages.json
,
לתרגם אותו ולהוסיף את העותק לספרייה חדשה בקטע _locales
. לדוגמה, כדי לתמוך
לספרדית, הועבר עותק מתורגם של messages.json
בקטע _locales/es
. האיור הבא
מציגה את התוסף הקודם עם תרגום חדש לספרדית.
הודעות שהוגדרו מראש
מערכת הבינלאומיות מספקת כמה הודעות מוגדרות מראש כדי לעזור לכם לבצע לוקליזציה. האלה
כוללים את @@ui_locale
, כך שתוכל לזהות את הלוקאל הנוכחי של ממשק המשתמש, וכמה הודעות @@bidi_...
מאפשרות לזהות את כיוון הטקסט. להודעות האחרונות יש שמות דומים לאלו של קבועים
API BIDI (דו-כיווני) של גאדג'טים.
ניתן להשתמש בהודעה המיוחדת @@extension_id
בקובצי ה-CSS ו-JavaScript, גם אם לא
מותאם לשוק המקומי. ההודעה הזו לא פועלת בקובצי מניפסט.
הטבלה הבאה מתארת כל הודעה מוגדרת מראש.
שם ההודעה | תיאור |
---|---|
@@extension_id | מזהה התוסף או מזהה האפליקציה. אפשר להשתמש במחרוזת הזו כדי ליצור כתובות URL למשאבים שבתוך התוסף. גם תוספים שלא מותאמים לשוק המקומי יכולים להשתמש בהודעה הזו. הערה: אי אפשר להשתמש בהודעה הזו בקובץ מניפסט. |
@@ui_locale | המיקום הנוכחי; אפשר להשתמש במחרוזת הזו כדי ליצור כתובות URL ספציפיות ללוקאל. |
@@bidi_dir | כיוון הטקסט של הלוקאל הנוכחי, 'ltr' בשפות הנכתבות משמאל לימין, כמו אנגלית או rtl לשפות מימין לשמאל, כמו יפנית. |
@@bidi_reversed_dir | אם הערך של @@bidi_dir הוא ltr, הערך הוא 'rtl'. אחרת, הוא 'ltr'. |
@@bidi_start_edge | אם הערך של @@bidi_dir הוא ltr, הערך הוא 'left'; אחרת יהיה "נכון". |
@@bidi_end_edge | אם הערך של @@bidi_dir הוא ltr, הערך הוא 'right'. אחרת הוא יהיה "left". |
דוגמה לשימוש ב-@@extension_id
בקובץ CSS כדי ליצור כתובת URL:
body {
background-image:url('chrome-extension://__MSG_@@extension_id__/background.png');
}
אם מזהה התוסף הוא abcdefghijklmnopqrstuvwxyzabcdef, ולאחר מכן השורה המודגשת בקוד הקודם קטע הקוד הופך ל:
background-image:url('chrome-extension://abcdefghijklmnopqrstuvwxyzabcdef/background.png');
דוגמה לשימוש בהודעות @@bidi_*
בקובץ CSS:
body {
direction: __MSG_@@bidi_dir__;
}
div#header {
margin-bottom: 1.05em;
overflow: hidden;
padding-bottom: 1.5em;
padding-__MSG_@@bidi_start_edge__: 0;
padding-__MSG_@@bidi_end_edge__: 1.5em;
position: relative;
}
בשפות הנכתבות משמאל לימין, כמו אנגלית, הקווים המודגשים יהפכו ל:
dir: ltr;
padding-left: 0;
padding-right: 1.5em;
לוקאלים
ניתן לבחור מתוך מגוון לוקאלים, כולל כמה לוקאלים (כמו en
) שמאפשרים תרגום יחיד
לתמוך בכמה וריאציות של שפה (למשל en_GB
ו-en_US
).
מיקומים נתמכים
אפשר להשתמש בכל אחד מהאזורים שנתמכים בחנות האינטרנט של Chrome.
חיפוש הודעות
לא צריך להגדיר כל מחרוזת בכל לוקאל נתמך. כל עוד מיקום ברירת המחדל
לקובץ אחד (messages.json
) יש ערך לכל מחרוזת. התוסף או האפליקציה יפעלו בלי קשר לאופן שבו
ולצמצם את התרגום. כך מערכת התוספים מחפשת הודעה:
- מחפשים בקובץ ההודעות (אם יש) את הלוקאל המועדף של המשתמש. לדוגמה, כש-Google
הלוקאל של Chrome מוגדר לאנגלית בריטית (
en_GB
), קודם המערכת מחפשת את ההודעה ב-_locales/en_GB/messages.json
. אם הקובץ קיים וההודעה מופיעה, המערכת מחפשת המשך קריאה. - אם המיקום המועדף על המשתמש כולל אזור (כלומר, במקום מופיע קו תחתון: _), חיפוש
בלי האזור הזה. לדוגמה, אם קובץ ההודעות
en_GB
לא קיים, או לא מכיל את ההודעה, המערכת מחפשת את קובץ ההודעותen
. אם הקובץ הזה קיים, ההודעה קיימת, המערכת לא מחפשת עוד. - מחפשים בקובץ ההודעות את לוקאל ברירת המחדל. לדוגמה, אם התוסף
"default_locale" מוגדר כ-es, וגם לא
_locales/en_GB/messages.json
וגם לא ההודעה_locales/en/messages.json
מכילה את ההודעה, והתוסף משתמש בהודעה מאת_locales/es/messages.json
.
באיור הבא, מוצגת ההודעה "colores" נמצא בכל שלושת האזורים שבהם התוסף תומך, אבל 'extName' נמצא רק בשניים מהלוקאלים. בכל מקום שבו משתמש מפעיל את Google Chrome בארה"ב אנגלית רואה את התווית 'צבעים', ומשתמש באנגלית בריטית רואה את התווית 'צבעים'. גם אנגלית (ארה"ב) וגם משתמשים באנגלית בריטית רואים את שם התוסף "Hello World". מכיוון ששפת ברירת המחדל היא ספרדית, שמשתמשים ב-Google Chrome בשפה שאינה אנגלית יראו את התווית 'צבעים' ואת התוסף בשם "Hola mundo".
איך מגדירים את הלוקאל של הדפדפן
כדי לבדוק תרגומים, מומלץ להגדיר את הלוקאל של הדפדפן. בקטע הזה מוסבר איך להגדיר הלוקאל ב-Windows, ב-Mac OS X, ב-Linux וב-ChromeOS.
Windows
אפשר לשנות את הלוקאל באמצעות קיצור דרך ספציפי לאזור או ממשק המשתמש של Google Chrome. הגישה של מקשי הקיצור מהירה יותר אחרי שמגדירים אותה, והיא מאפשרת לכם להשתמש בכמה שפות בבת אחת.
שימוש בקיצור דרך ספציפי ללוקאל
כדי ליצור קיצור דרך ולהשתמש בו שמפעיל את Google Chrome עם מקום מסוים:
- יוצרים עותק של קיצור הדרך ל-Google Chrome שכבר נמצא בשולחן העבודה.
- משנים את השם של קיצור הדרך החדש בהתאם ללוקאל החדש.
משנים את המאפיינים של קיצור הדרך כך שבשדה היעד יפורטו
--lang
--user-data-dir
דגלים. היעד אמור להיראות כך:path_to_chrome.exe --lang=locale --user-data-dir=c:\locale_profile_dir
מפעילים את Google Chrome באמצעות לחיצה כפולה על קיצור הדרך.
לדוגמה, כדי ליצור קיצור דרך שמפעיל את Google Chrome בספרדית (es
), אפשר ליצור
קיצור דרך בשם chrome-es
עם היעד הבא:
path_to_chrome.exe --lang=es --user-data-dir=c:\chrome-profile-es
אפשר ליצור כמה קיצורי דרך שרוצים, וכך קל יותר לבדוק בכמה שפות. לדוגמה:
path_to_chrome.exe --lang=en --user-data-dir=c:\chrome-profile-en
path_to_chrome.exe --lang=en_GB --user-data-dir=c:\chrome-profile-en_GB
path_to_chrome.exe --lang=ko --user-data-dir=c:\chrome-profile-ko
שימוש בממשק המשתמש
כך משנים את המיקום באמצעות ממשק המשתמש ב-Google Chrome ל-Windows:
- סמל האפליקציה > אפשרויות
- בוחרים בכרטיסייה מאחורי הקלעים
- גוללים למטה אל Web Content (תוכן מהאינטרנט).
- לוחצים על שינוי הגדרות הגופן והשפה
- בוחרים בכרטיסייה שפות.
- בתפריט הנפתח מגדירים את השפה ב-Google Chrome
- הפעלה מחדש של Chrome
Mac OS X
כדי לשנות את הלוקאל ב-Mac, צריך להשתמש בהעדפות המערכת.
- בתפריט Apple, בוחרים באפשרות System Preferences (העדפות המערכת)
- בקטע אישי בוחרים באפשרות International.
- בחירת השפה והמיקום
- הפעלה מחדש של Chrome
Linux
כדי לשנות את המקום ב-Linux, קודם צריך לצאת מ-Google Chrome. לאחר מכן, הכול בשורה אחת, יש להגדיר את הLANGUAGE משתנה הסביבה ולהפעיל את Google Chrome. לדוגמה:
LANGUAGE=es ./chrome
ChromeOS
כדי לשנות את הלוקאל ב-ChromeOS:
- במגש המערכת, בוחרים באפשרות הגדרות.
- בקטע שפות וקלט, לוחצים על התפריט הנפתח שפה.
- אם השפה שלכם לא מופיעה ברשימה, לוחצים על הוספת שפות ומוסיפים אותה.
- אחרי ההוספה, לוחצים על סמל התפריט (3 נקודות) פעולות נוספות לצד השפה ובוחרים באפשרות הצגת ChromeOS בשפה הזו.
- כדי להפעיל מחדש את ChromeOS, לוחצים על הלחצן הפעלה מחדש שמופיע לצד השפה שנבחרה.
דוגמאות
דוגמאות פשוטות ללוקליזציה זמינה בספרייה examples/api/i18n. עבור דוגמה מלאה: examples/extensions/news. לקבלת דוגמאות אחרות ועזרה את קוד המקור, ראו דוגמאות.
דוגמה: getMessage
הקוד הבא מקבל הודעה מותאמת לשוק המקומי מהדפדפן והוא מציג אותה כמחרוזת. הוא הפונקציה מחליפה שני placeholders בתוך ההודעה במחרוזת 'string1' ו-'string2'.
function getMessage() {
var message = chrome.i18n.getMessage("click_here", ["string1", "string2"]);
document.getElementById("languageSpan").innerHTML = message;
}
כך מספקים מחרוזת יחידה ומשתמשים בה:
// In JavaScript code
status.innerText = chrome.i18n.getMessage("error", errorDetails);
"error": {
"message": "Error: $details$",
"description": "Generic error template. Expects error parameter to be passed in.",
"placeholders": {
"details": {
"content": "$1",
"example": "Failed to fetch RSS feed."
}
}
}
מידע נוסף על placeholders מופיע בדף הודעות ספציפיות למיקום. לפרטים על
קריאה ל-getMessage()
, ראו את הפניית ה-API.
דוגמה: getAcceptLanguage
הקוד הבא מקבל שפות קבלה מהדפדפן ומציג אותן כמחרוזת שמפרידות כל שפה שמתקבלת באמצעות התו ,
function getAcceptLanguages() {
chrome.i18n.getAcceptLanguages(function(languageList) {
var languages = languageList.join(",");
document.getElementById("languageSpan").innerHTML = languages;
})
}
פרטים על קריאה ל-getAcceptLanguages()
מופיעים במאמרי העזרה של ה-API.
דוגמה: IdentityLanguage
הקוד הבא מזהה עד 3 שפות מהמחרוזת הנתונה ומציג את התוצאה באופן הבא: מחרוזות שמופרדות באמצעות שורות חדשות.
function detectLanguage(inputText) {
chrome.i18n.detectLanguage(inputText, function(result) {
var outputLang = "Detected Language: ";
var outputPercent = "Language Percentage: ";
for(i = 0; i < result.languages.length; i++) {
outputLang += result.languages[i].language + " ";
outputPercent +=result.languages[i].percentage + " ";
}
document.getElementById("languageSpan").innerHTML = outputLang + "\n" + outputPercent + "\nReliable: " + result.isReliable;
});
}
מידע נוסף על קריאה ל-detectLanguage(inputText)
זמין במאמרי העזרה של ה-API.
סוגים
LanguageCode
קוד שפה לפי תקן ISO, כמו en
או fr
. לרשימה מלאה של השפות שנתמכות בשיטה הזו: kLanguageInfoTable. עבור שפה לא ידועה, מוחזר und
, כלומר [percentage] מהטקסט לא ידוע ל-CLD
סוג
מחרוזת
שיטות
detectLanguage()
chrome.i18n.detectLanguage(
text: string,
callback?: function,
)
זיהוי השפה של הטקסט שסופק באמצעות CLD.
פרמטרים
-
טקסט
מחרוזת
מחרוזת קלט של משתמשים לתרגום.
-
קריאה חוזרת (callback)
פונקציה אופציונלית
הפרמטר
callback
נראה כך:(result: object) => void
-
תוצאה
אובייקט
אובייקט LanguageDetectionתוצאה שמכיל את המהימנות של langugae ומערך של DetectedLanguage
-
isReliable
בוליאני
אמינות השפה שזוהתה על ידי CLD
-
שפות
object[]
מערך של foundLanguage
-
language
מחרוזת
-
אחוזים
number
אחוז השפה שזוהתה
-
-
-
החזרות
-
Promise<object>
Chrome מגרסה 99 ואילךהבטחות נתמכות רק במניפסט מגרסה V3 ואילך, בפלטפורמות אחרות צריך להשתמש בקריאות חוזרות (callback).
getAcceptLanguages()
chrome.i18n.getAcceptLanguages(
callback?: function,
)
מקבל את השפות הקבילות של הדפדפן. שפה זו שונה מהלוקאל שבו הדפדפן משתמש. כדי לקבל את הלוקאל, משתמשים ב-i18n.getUILanguage
.
פרמטרים
-
קריאה חוזרת (callback)
פונקציה אופציונלית
הפרמטר
callback
נראה כך:(languages: string[]) => void
-
שפות
String[]
מערך של קוד שפה
-
החזרות
-
Promise<LanguageCode[]>
Chrome מגרסה 99 ואילךהבטחות נתמכות רק במניפסט מגרסה V3 ואילך, בפלטפורמות אחרות צריך להשתמש בקריאות חוזרות (callback).
getMessage()
chrome.i18n.getMessage(
messageName: string,
substitutions?: any,
options?: object,
)
הפונקציה מקבלת את המחרוזת שהותאמה עבור ההודעה שצוינה. אם ההודעה חסרה, השיטה הזו מחזירה מחרוזת ריקה ('). אם הפורמט של הקריאה ל-getMessage()
שגוי – לדוגמה, messageName אינו מחרוזת או שמערך subsExchanges כולל יותר מ-9 רכיבים – השיטה הזו מחזירה undefined
.
פרמטרים
-
messageName
מחרוזת
שם ההודעה, כפי שמצוין בקובץ
messages.json
. -
החלפות
כל אופציונלי
עד 9 מחרוזות החלפה, אם נדרשות מחרוזות החלפה.
-
אפשרויות
אובייקט אופציונלי
Chrome מגרסה 79 ואילך-
escapeLt
ערך בוליאני אופציונלי
תו בריחה של
<
בתרגום ל<
. האפשרות מתייחסת רק להודעה עצמה, ולא ל-placeholders. כדאי למפתחים להשתמש באפשרות הזו אם התרגום משמש בהקשר HTML. תבניות סגירה שבהן נעשה שימוש בשילוב עם מהדר החסימות יוצרות זאת באופן אוטומטי.
-
החזרות
-
מחרוזת
ההודעה הותאמה ללוקאל הנוכחי.
getUILanguage()
chrome.i18n.getUILanguage()
מקבל את שפת ממשק המשתמש של הדפדפן. השיטה הזו שונה מ-i18n.getAcceptLanguages
, שבה מוחזרות שפות המשתמש המועדפות.
החזרות
-
מחרוזת
קוד השפה של ממשק המשתמש של הדפדפן, למשל en-US או fr-FR.