عادةً ما تكون أفضل طريقة لإضافة لغة جديدة إلى Discourse هي إنشاء طلب سحب (pull request) كما هو موضح في “How to add a new language”.
الدليل التالي مخصص لك إذا كنت ترغب في استخدام لغة لا يمكن إضافتها إلى النواة (core) في الوقت الحالي.
إضافة ترميز لغة يمتد لترميز لغة موجود
لنفترض أنك تريد إضافة ترميز لغة إسباني للمكسيك (es_MX). يشحن Discourse بالفعل ترميز لغة إسباني (es)، لذا فهذا سهل للغاية.
يجب أن يبدو هيكل دليل المكوّن الإضافي (plugin) الخاص بك كما يلي:
custom-locales
├── assets
│ └── locales
│ └── es_MX.js.erb
├── config
│ └── locales
│ ├── client.es_MX.yml
│ └── server.es_MX.yml
└── plugin.rb
plugin.rb
أنت تضيف اللغة الجديدة عن طريق استدعاء register_locale.
-
المعامل الأول مطلوب ويجب أن يكون رمز اللغة.
-
يمكن حذف
name(الاسم الإنجليزي لترميز اللغة) وnativeName(الاسم المعروض في واجهة المستخدم)، إذا كان رمز اللغة موجودًا فيnames.yml. -
fallbackLocaleهو رمز اللغة الذي يجب استخدامه كنسخة احتياطية للترجمات المفقودة وقواعد الجمع.
# name: custom-locales
# about: An example plugin for adding new locales.
# version: 1.0
register_locale("es_MX", name: "Spanish (Mexico)", nativeName: "Español (México)", fallbackLocale: "es")
.js.erb
محتوى assets/locales/es_MX.js.erb بسيط للغاية – تأكد من استبدال رمز اللغة بداخله بالرمز الذي تحتاجه.
//= require locales/i18n
<%= JsLocaleHelper.output_locale(:es_MX) %>
ملفات الترجمة في config/locales
تحتوي الملفات config/locales/client.es_MX.yml و config/locales/server.es_MX.yml على الترجمات التي تريد استخدامها. لست بحاجة إلى توفير جميع الترجمات التي يحتاجها Discourse. سيتم استخدام الترجمات الإنجليزية في حالة وجود ترجمات مفقودة.
إضافة ترميز لغة جديد
إضافة ترميز لغة جديد تمامًا، لا ينبغي أن يعتمد على ترميز لغة موجود، يتطلب عملاً إضافيًا قليلاً.
يجب أن يبدو هيكل دليل المكوّن الإضافي (plugin) الخاص بك كما يلي:
custom-locales
├── assets
│ └── locales
│ └── foo.js.erb
├── config
│ └── locales
│ ├── client.foo.yml
│ └── server.foo.yml
├── lib
│ └── javascripts
│ └── locale
│ ├── message_format
│ │ └── foo.js
│ └── moment_js
│ └── foo.js
│ └── moment_js_timezones
│ └── foo.js
└── plugin.rb
plugin.rb
أنت تضيف اللغة الجديدة عن طريق استدعاء register_locale.
-
المعامل الأول مطلوب ويجب أن يكون رمز اللغة.
-
يمكن حذف
name(الاسم الإنجليزي لترميز اللغة) وnativeName(الاسم المعروض في واجهة المستخدم)، إذا كان رمز اللغة موجودًا فيnames.yml، وإلا فيجب عليك تعيينهما أيضًا. -
يصف
pluralقواعد الجمع للغة. ألقِ نظرة علىplurals.rbللحصول على الإلهام. أيضًا، يمكنك حذف هذا المعامل إذا كانplurals.rbيحتوي بالفعل على رمز لغتك.
# name: custom-locales
# about: An example plugin for adding new locales.
# version: 1.0
register_locale(
"foo",
name: "Foo",
nativeName: "Foo Bar",
plural: {
keys: [:one, :other],
rule: lambda { |n| n == 1 ? :one : :other }
}
)
.js.erb
محتوى assets/locales/foo.js.erb بسيط للغاية – تأكد من استبدال رمز اللغة بداخله بالرمز الذي تحتاجه.
//= require locales/i18n
<%= JsLocaleHelper.output_locale(:foo) %>
ملفات الترجمة في config/locales
تحتوي الملفات config/locales/client.foo.yml و config/locales/server.foo.yml على الترجمات التي تريد استخدامها. لست بحاجة إلى توفير جميع الترجمات التي يحتاجها Discourse. سيتم استخدام الترجمات الإنجليزية في حالة وجود ترجمات مفقودة.
الأسئلة الشائعة
لا يقوم Discourse بتحميل ترميز اللغة الخاص بي. ما الخطأ؟
تأكد من تمكين المكوّن الإضافي، وأنك سجلت ترميز اللغة بشكل صحيح، وأن جميع الملفات المطلوبة موجودة وتحتوي على رمز اللغة الصحيح في اسم الملف. لا يقوم Discourse بتحميل ترميزات اللغات عند اكتشاف ملفات مفقودة.
هذا المستند يتم التحكم في إصداره - اقترح تغييرات على github.