الوصف
استخدِم بنية chrome.i18n
الأساسية لتنفيذ ميزة الترجمة والتعريب في تطبيقك أو إضافتك بالكامل.
البيان
إذا كانت إحدى الإضافات تحتوي على دليل /_locales
، يجب أن يحدِّد البيان "default_locale"
.
المفاهيم وطريقة الاستخدام
عليك وضع جميع السلاسل المرئية للمستخدم في ملف باسم messages.json
. في كل مرة تتم فيها
إضافة لغة جديدة، تتم إضافة ملف رسائل ضمن دليل باسم /_locales/_localeCode_
، حيث يكون
localeCode رمزًا مثل en
للغة الإنجليزية.
في ما يلي التدرّج الهرمي للملفات لإضافة دولية تتيح استخدام اللغة الإنجليزية (en
) والإسبانية
(es
) والكورية (ko
):
التوافق مع لغات متعدّدة
لنفترض أنّ لديك إضافة تحتوي على الملفات الموضّحة في الشكل التالي:
لتلبية متطلبات الترجمة والنشر في لغات متعددة لهذه الإضافة، عليك تسمية كل سلسلة تظهر للمستخدم ووضعها في ملف الرسائل. يستخدم بيان الإضافة وملفات CSS ورمز JavaScript اسم كل سلسلة للحصول على النسخة المترجَمة منها.
في ما يلي الشكل الذي ستظهر به الإضافة عند نشرها على مستوى دولي (يُرجى العِلم أنّها لا تزال تحتوي على سلاسل برمجية بالانجليزية فقط):
في ما يلي بعض الملاحظات حول نشر التطبيقات على مستوى العالم:
- يمكنك استخدام أي من اللغات المتاحة. إذا كنت تستخدم لغة غير متوافقة، سيتجاهلها Google Chrome.
في ملفات
manifest.json
وCSS، يمكنك الإشارة إلى سلسلة باسم messagename على النحو التالي:__MSG_messagename__
في رمز JavaScript الخاص بتطبيقك أو إضافتك، يمكنك الإشارة إلى سلسلة باسم messagename على النحو التالي:
chrome.i18n.getMessage("messagename")
في كلّ استدعاء
getMessage()
، يمكنك تقديم ما يصل إلى 9 سلاسل لتضمينها في الرسالة. اطّلِع على أمثلة: getMessage لمعرفة التفاصيل.يوفّر نظام الترجمة والتهجين بعض الرسائل، مثل
@@bidi_dir
و@@ui_locale
. اطّلِع على قسم الرسائل المحدّدة مسبقًا للحصول على قائمة كاملة بأسماء الرسائل المحدّدة مسبقًا.في
messages.json
، تحتوي كل سلسلة تظهر للمستخدم على اسم وعنصر "رسالة" وعنصر "وصف" اختياري. الاسم هو مفتاح مثل "extName" أو "search_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_...
التي تسمح لك برصد اتجاه النص. تحتوي الرسائل الأخيرة على أسماء مشابهة للثوابت في
واجهة برمجة التطبيقات 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"، هذا يعني أنّه "يسار"، وإلا، يعني أنّه "يمين". |
@@bidi_end_edge | إذا كان @@bidi_dir هو "ltr"، هذا يعني "يمين"، وإذا لم يكن كذلك، هذا يعني "يسار". |
في ما يلي مثال على استخدام @@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 الإلكتروني". إذا لم تكن لغتك مُدرَجة هنا، اختَر أقرب بديل. على سبيل المثال، إذا كانت اللغة التلقائية لإضافتك هي "de_CH"
، اختَر "de"
في "سوق Chrome الإلكتروني".
رمز اللغة | اللغة (المنطقة) |
---|---|
ar | العربية |
صباحًا | الأمهرية |
bg | البلغارية |
bn | البنغالية |
ca | الكتالانية |
cs | التشيكية |
da | الدانمركية |
de | الألمانية |
el | اليونانية |
en | الإنجليزية |
en_AU | الإنجليزية (أستراليا) |
en_GB | الإنجليزية (بريطانيا العظمى) |
en_US | الإنجليزية (الولايات المتحدة) |
es | الإسبانية |
es_419 | الإسبانية (أمريكا اللاتينية ومنطقة البحر الكاريبي) |
et | الإستونية |
fa | الفارسية |
fi | الفنلندية |
fil | الفلبينية |
fr | الفرنسية |
gu | الغوجاراتية |
هو | العبرية |
hi | الهندية |
ساعة | الكرواتية |
hu | الهنغارية |
id | الإندونيسية |
it | الإيطالية |
ja | اليابانية |
kn | الكانادا |
ko | الكورية |
lt | الليتوانية |
lv | اللاتفية |
ml | المالايالامية |
mr | الماراثية |
ms | الملاوية |
nl | الهولندية |
لا | النرويجية |
pl | البولندية |
pt_BR | البرتغالية (البرازيل) |
pt_PT | برتغالي (البرتغال) |
ro | الرومانية |
ru | الروسية |
sk | السلوفاكية |
sl | السلوفينية |
sr | الصربية |
sv | السويدية |
sw | السواحيلية |
ta | التاميلية |
te | التيلوغوية |
th | التايلاندية |
tr | التركية |
uk | الأوكرانية |
vi | الفيتنامية |
zh_CN | الصينية (الصين) |
zh_TW | الصينية (تايوان) |
البحث عن الرسائل
لست مضطرًا إلى تحديد كل سلسلة لكل لغة متوافقة. ما دام ملف 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 باللغة الإنجليزية (الولايات المتحدة)، يظهر التصنيف "الألوان" لمستخدم يشغّل Google Chrome باللغة الإنجليزية (المملكة المتحدة). يظهر اسم الإضافة "Hello World" لكل من مستخدمي اللغة الإنجليزية في الولايات المتحدة و اللغة الإنجليزية البريطانية. وبما أنّ اللغة التلقائية هي الإسبانية، يظهر للمستخدمين الذين يستخدمون Google Chrome بأي لغة غير الإنجليزية التصنيف "Colores" واسم الإضافة "Hola mundo".
ضبط لغة المتصفّح
لاختبار الترجمات، قد تحتاج إلى ضبط لغة المتصفّح. يوضّح لك هذا القسم كيفية ضبط اللغة في Windows وMac OS و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:
- رمز التطبيق > الخيارات
- اختَر علامة التبويب الميزات الإضافية.
- انتقِل إلى محتوى الويب.
- انقر على تغيير إعدادات الخط واللغة.
- اختَر علامة التبويب اللغات.
- استخدِم القائمة المنسدلة لضبط لغة Google Chrome.
- إعادة تشغيل Chrome
نظام تشغيل Mac
لتغيير اللغة على جهاز Mac، يمكنك استخدام الإعدادات المفضّلة للنظام.
- من قائمة Apple، اختَر System Preferences (إعدادات النظام المفضّلة).
- ضمن قسم الحساب الشخصي، اختَر دولي.
- اختيار اللغة والموقع الجغرافي
- إعادة تشغيل Chrome
Linux
لتغيير اللغة على نظام التشغيل Linux، عليك أولاً إغلاق Google Chrome. بعد ذلك، اضبط متغيّر البيئة LANGUAGE في سطر واحد وافتح Google Chrome. على سبيل المثال:
LANGUAGE=es ./chrome
ChromeOS
لتغيير اللغة على نظام التشغيل ChromeOS، اتّبِع الخطوات التالية:
- من علبة النظام، اختَر الإعدادات.
- ضمن قسم اللغات وأساليب الإدخال، اختَر القائمة المنسدلة اللغة.
- إذا لم تكن لغتك مُدرَجة، انقر على إضافة لغات وأضِفها.
- بعد الإضافة، انقر على رمز القائمة المزيد من الإجراءات الذي يضم 3 نقاط بجانب لغتك واختَر عرض ChromeOS بهذه اللغة.
- انقر على زر إعادة التشغيل الذي يظهر بجانب اللغة المحدّدة لإعادة تشغيل ChromeOS.
أمثلة
يمكنك العثور على أمثلة على النشر على نطاق عالمي في الدليل examples/api/i18n. للحصول على مثال كامل، يُرجى الاطّلاع على examples/extensions/news. للحصول على أمثلة أخرى وللحصول على مساعدة في عرض الرمز المصدر، يُرجى الاطّلاع على عيّنات.
getMessage()
تحصل التعليمة البرمجية التالية على رسالة مترجَمة من المتصفّح وتعرضها كسلسلة. ويؤدي ذلك إلى استبدال عنصرَين نائبَين في الرسالة بالسلسلتَين "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."
}
}
}
لمزيد من المعلومات عن العناصر النائبة، يُرجى الاطّلاع على صفحة الرسائل المتعلّقة باللغة. لمعرفة تفاصيل عن
استدعاء getMessage()
، يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات.
getAcceptLanguages()
يحصل الرمز التالي على accept-languages من المتصفّح ويعرضها كسلسلة من خلال فصل كل accept-language بفاصل ",".
function getAcceptLanguages() {
chrome.i18n.getAcceptLanguages(function(languageList) {
var languages = languageList.join(",");
document.getElementById("languageSpan").innerHTML = languages;
})
}
لمعرفة التفاصيل حول استدعاء getAcceptLanguages()
، يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات.
detectLanguage()
يرصد الرمز البرمجي التالي ما يصل إلى 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)
، يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات.
الأنواع
LanguageCode
رمز لغة وفقًا لمعيار ISO، مثل en
أو fr
للحصول على قائمة كاملة باللغات المتوافقة مع هذه الطريقة، راجِع kLanguageInfoTable. بالنسبة إلى اللغة غير المعروفة، سيتم عرض und
، ما يعني أنّ [النسبة المئوية] من النص غير معروفة لخدمة CLD.
النوع
سلسلة
الطُرق
detectLanguage()
chrome.i18n.detectLanguage(
text: string,
callback?: function,
)
يرصد لغة النص المقدَّم باستخدام ميزة "التعرّف على اللغات".
المعلمات
-
نص
سلسلة
سلسلة إدخال المستخدم المطلوب ترجمتها
-
ردّ الاتصال
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(result: object) => void
-
نتيجة
عنصر
عنصر LanguageDetectionResult الذي يحتوي على موثوقية اللغة التي تم رصدها وصفيف DetectedLanguage
-
isReliable
قيمة منطقية
موثوقية اللغة التي رصدها "التعرّف الآلي على اللغة"
-
اللغات
object[]
صفيف detectedLanguage
-
اللغة
سلسلة
-
النسبة المئوية
الرقم
النسبة المئوية للغة التي تم التعرّف عليها
-
-
-
المرتجعات
-
Promise<object>
Chrome 99 والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى دالة الاستدعاء.
getAcceptLanguages()
chrome.i18n.getAcceptLanguages(
callback?: function,
)
تحصل على لغات القبول للمتصفّح. يختلف ذلك عن اللغة التي يستخدمها المتصفّح. للحصول على اللغة، استخدِم i18n.getUILanguage
.
المعلمات
-
ردّ الاتصال
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(languages: string[]) => void
-
اللغات
string[]
مصفوفة LanguageCode
-
المرتجعات
-
Promise<LanguageCode[]>
Chrome 99 والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى دالة الاستدعاء.
getMessage()
chrome.i18n.getMessage(
messageName: string,
substitutions?: any,
options?: object,
)
تحصل على السلسلة المترجَمة للرسالة المحدّدة. إذا لم تكن الرسالة متوفّرة، تعرض هذه الطريقة سلسلة فارغة (''). إذا كان تنسيق طلب getMessage()
غير صحيح، على سبيل المثال، إذا لم تكن messageName سلسلة أو إذا كان صفيف substitutions يتضمّن أكثر من 9 عناصر، تعرض هذه الطريقة undefined
.
المعلمات
-
messageName
سلسلة
اسم الرسالة، كما هو محدّد في ملف
messages.json
-
الاستبدالات
أيّ اختياري
ما يصل إلى 9 سلاسل بديل، إذا كانت الرسالة تتطلّب أيًّا منها
-
الخيارات
العنصر اختياري
Chrome 79 والإصدارات الأحدث-
escapeLt
منطقي اختياري
احذف
<
في الترجمة إلى<
. لا ينطبق ذلك إلا على الرسالة نفسها، وليس على العناصر النائبة. قد يحتاج المطوّرون إلى استخدام هذا الخيار إذا تم استخدام الترجمة في سياق HTML. تُنشئ نماذج Closure المستخدَمة مع Closure Compiler هذا تلقائيًا.
-
المرتجعات
-
سلسلة
الرسالة المترجَمة للغة الحالية
getUILanguage()
chrome.i18n.getUILanguage()
تحصل على لغة واجهة مستخدم المتصفّح. يختلف ذلك عن i18n.getAcceptLanguages
الذي يعرض لغات المستخدم المفضّلة.
المرتجعات
-
سلسلة
رمز لغة واجهة مستخدم المتصفّح، مثل en-US أو fr-FR