refresh date: 2026-09-25 robots: noindex
الوصف
استخدِم البنية الأساسية chrome.i18n لتنفيذ عملية التدويل في تطبيقك أو إضافتك بالكامل.
عليك وضع جميع السلاسل النصية المرئية للمستخدمين في ملف باسم messages.json. في كل مرة
تضيف فيها لغة جديدة، عليك إضافة ملف رسائل ضمن دليل باسم _locales/_localeCode_، حيث
localeCode هو رمز مثل en للغة الإنجليزية.
في ما يلي التدرّج الهرمي للملفات الخاص بإضافة متوافقة مع لغات متعددة وتتيح استخدام الإنجليزية (en) والإسبانية (es) والكورية (ko):

كيفية توفير الدعم بلغات متعددة
لنفترض أنّ لديك إضافة تتضمّن الملفات الموضّحة في الشكل التالي:

لتوفير هذه الإضافة بلغات متعددة، عليك تسمية كل سلسلة نصية مرئية للمستخدم ووضعها في ملف رسائل. يستخدم بيان الإضافة وملفات CSS ورمز JavaScript اسم كل سلسلة نصية للحصول على نسختها المترجمة.
في ما يلي الشكل الذي ستظهر به الإضافة بعد أن تصبح متوافقة مع لغات متعددة (يُرجى العِلم أنّها ستظل تتضمّن سلاسل باللغة الإنجليزية فقط):
<img "__msg_extname__",="" "default_locale"="" "en".="" "extname"."="" "hello="" _locales="" a="" alt="In the manifest.json file, " and="" been="" 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="" world"="" />
بعض الملاحظات حول عملية التدويل:
- يمكنك استخدام أي من اللغات المتوافقة. إذا كنت تستخدم لغة غير متوافقة، سيتجاهلها 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"، تكون القيمة "left"، وإلا تكون "right". |
@@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" في لغتين فقط. في أي مكان يظهر فيه التصنيف "Colors" لمستخدمي Google Chrome باللغة الإنجليزية في الولايات المتحدة، يظهر التصنيف "Colours" لمستخدمي اللغة الإنجليزية البريطانية. يظهر اسم الإضافة "Hello World" لمستخدمي اللغة الإنجليزية الأمريكية واللغة الإنجليزية البريطانية. بما أنّ اللغة التلقائية هي الإسبانية، سيظهر للمستخدمين الذين يشغّلون Google Chrome بأي لغة أخرى غير الإنجليزية التصنيف "Colores" واسم الإضافة "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:
- رمز التطبيق > خيارات
- انقر على علامة التبويب تفاصيل تقنية
- انتقِل إلى محتوى الويب.
- انقر على تغيير إعدادات الخط واللغة.
- انقروا على علامة التبويب اللغات.
- استخدِم القائمة المنسدلة لضبط لغة Google Chrome.
- إعادة تشغيل Chrome
Mac OS X
لتغيير اللغة على جهاز Mac، عليك استخدام إعدادات النظام المفضّلة.
- من قائمة Apple، اختَر إعدادات النظام المفضّلة (System Preferences).
- ضمن قسم شخصي، اختَر دولي.
- اختيار اللغة والموقع الجغرافي
- إعادة تشغيل Chrome
Linux
لتغيير اللغة على نظام التشغيل Linux، عليك أولاً إغلاق متصفّح Google Chrome. بعد ذلك، اضبط متغيّر بيئة LANGUAGE في سطر واحد وشغِّل Google Chrome. على سبيل المثال:
LANGUAGE=es ./chrome
ChromeOS
لتغيير اللغة على ChromeOS، اتّبِع الخطوات التالية:
- من لوحة النظام، اختر الإعدادات.
- ضمن قسم اللغات والإدخال، اختَر القائمة المنسدلة اللغة.
- إذا لم تكن لغتكم مدرَجة، انقروا على إضافة لغات وأضيفوها.
- بعد إضافة اللغة، انقر على رمز النقاط الثلاث المزيد من الإجراءات بجانب اللغة واختَر عرض 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
يحصل الرمز التالي على اللغات المقبولة من المتصفّح ويعرضها كسلسلة من خلال فصل كل لغة مقبولة بعلامة ",".
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، ما يعني أنّ [percentage] من النص غير معروف لـ CLD
النوع
سلسلة
الطُرق
detectLanguage()
chrome.i18n.detectLanguage(
text: string,
callback?: function,
): Promise<object>
يرصد لغة النص المقدَّم باستخدام CLD.
المعلمات
-
نصي
سلسلة
بيانات أدخلها المستخدم المطلوب ترجمتها
-
callback
الدالة اختيارية
تظهر المَعلمة
callbackعلى النحو التالي:(result: object) => void
-
نتيجة
عنصر
كائن LanguageDetectionResult يحتوي على موثوقية اللغة التي تم التعرّف عليها ومصفوفة من DetectedLanguage
-
isReliable
قيمة منطقية
مدى موثوقية اللغة التي تم التعرّف عليها باستخدام CLD
-
اللغات
object[]
مصفوفة detectedLanguage
-
language
سلسلة
-
النسبة المئوية
الرقم
النسبة المئوية للغة التي تم التعرّف عليها
-
-
-
المرتجعات
-
Promise<object>
الإصدار 99 من Chrome والإصدارات الأحدثلا تتوفّر الوعود إلا في الإصدار Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام عمليات معاودة الاتصال.
getAcceptLanguages()
chrome.i18n.getAcceptLanguages(
callback?: function,
): Promise<LanguageCode[]>
تعرض هذه السمة اللغات المقبولة في المتصفّح. يختلف هذا عن اللغة المستخدَمة في المتصفّح. للحصول على اللغة، استخدِم i18n.getUILanguage.
المعلمات
-
callback
الدالة اختيارية
تظهر المَعلمة
callbackعلى النحو التالي:(languages: string[]) => void
-
اللغات
string[]
مصفوفة LanguageCode
-
المرتجعات
-
Promise<LanguageCode[]>
الإصدار 99 من Chrome والإصدارات الأحدثلا تتوفّر الوعود إلا في الإصدار Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام عمليات معاودة الاتصال.
getMessage()
chrome.i18n.getMessage(
messageName: string,
substitutions?: any,
options?: object,
): string
تعرض هذه الطريقة السلسلة المترجَمة للرسالة المحدّدة. إذا كانت الرسالة غير متوفّرة، يعرض هذا الأسلوب سلسلة فارغة (''). إذا كان تنسيق طلب getMessage() غير صحيح، مثلاً إذا لم يكن messageName سلسلة أو إذا كانت مصفوفة substitutions تحتوي على أكثر من 9 عناصر، يعرض هذا الأسلوب undefined.
المعلمات
-
messageName
سلسلة
اسم الرسالة، كما هو محدّد في ملف
messages.json -
الاستبدالات
أي اختياري
ما يصل إلى 9 سلاسل استبدال، إذا كانت الرسالة تتطلّب ذلك
-
الخيارات
كائن اختياري
الإصدار 79 من Chrome والإصدارات الأحدث-
escapeLt
boolean اختياري
الهروب من
<في الترجمة إلى<ينطبق ذلك على الرسالة نفسها فقط، وليس على العناصر النائبة. قد يختار المطوّرون استخدام هذه السمة إذا كانت الترجمة مستخدَمة في سياق HTML. تنشئ Closure Templates المستخدَمة مع Closure Compiler هذا الإجراء تلقائيًا.
-
المرتجعات
-
سلسلة
رسالة مترجَمة إلى اللغة الحالية
getUILanguage()
chrome.i18n.getUILanguage(): string
تعرض هذه السمة لغة واجهة مستخدم المتصفّح. يختلف هذا عن i18n.getAcceptLanguages الذي يعرض لغات المستخدم المفضّلة.
المرتجعات
-
سلسلة
رمز لغة واجهة مستخدم المتصفّح، مثل en-US أو fr-FR