كيف يمكن تعريب (جعلها متعددة اللغات) الشارات والمجموعات؟ أثناء الإعداد، لاحظت أن عناوين الشارات والمجموعات لا تتغير مع لغة السمة. كيف يمكنني جعل الشارات والمجموعات تتبع تبديل السمة؟
القدرة على تدويل الشارات والمجموعات المخصصة لموقع متعدد اللغات غير موجودة بعد - في الوقت الحالي، لا يمكن تدويل المنشورات والفئات والوسوم إلا.
حسنًا، شكرًا لك. ولكن لماذا تتغير الأوسمة (badges) على هذا الموقع (meta.discourse.org) لغتها مع السمة (theme)؟ هل هذا بسبب ميزة الترجمة؟ أقترح أن يضيف الفريق الرسمي إعدادات تخصيص متعددة اللغات للأوسمة والمجموعات والوسوم (tags)؛ وإلا فلن يتمكن المستخدمون متعددو اللغات من فهم محتوى الأوسمة والمجموعات والوسوم.
هناك بعض الشارات المبتدئة (seeded badges) في كل موقع والتي تتم عولمتها (i18n) من خلال Crowdin.
تخزن الشارات المخصصة الاسم/الوصف كنص عادي في قاعدة البيانات. عندما يتم استدعاء I18n.t (ميزة التدويل) باستخدام مفتاح مثل badges.my_custom_badge.name، لا يوجد تطابق للترجمة، لذا يتم الرجوع إلى قيمة قاعدة البيانات المخزنة - نفس النص لجميع اللغات.
هناك حل بديل حيث يمكن للمسؤولين إضافة ترجمات يدويًا لمفاتيح الشارات المخصصة لكل لغة.
يمكنك تخصيص نصوص موقعك على \u003cyour site\u003e/admin/customize/site_texts.
بعض الخطوات الملموسة لك
- إنشاء الشارة
- انتقل إلى /admin/badges → شارة جديدة (New Badge)
- قم بتعيين الاسم والوصف والأيقونة وما إلى ذلك كالمعتاد
- البحث عن مفتاح التدويل (i18n key)
- نمط المفتاح هو
badges.{snake_case_name}.name snake_case_nameهو اسم الشارة بأحرف صغيرة مع استبدال المسافات بشرطات سفلية- لذا “Pokémon Master” →
badges.pokémon_master.name
- إضافة تجاوزات الترجمة
- انتقل إلى /admin/customize/site_texts
- ابحث عن
badges.pokémon_master - سترى مفاتيح مثل:
badges.pokémon_master.namebadges.pokémon_master.descriptionbadges.pokémon_master.long_description
- قم بالتبديل إلى اللغة الهدف (مثل 简体中文)، انقر على المفتاح، وأدخل النص المترجم
- كرر لكل لغة
- قم بالتبديل بين اللغات في القائمة المنسدلة، وأضف ترجمات لكل لغة تحتاجها
.name- عنوان الشارة.description- وصف قصير يظهر على بطاقات الشارة.long_description- الوصف الكامل الذي يظهر في صفحة تفاصيل الشارة
english
japanese
مرحبًا! شكرًا على الرد! كيف يتم تنفيذ الخطوة الثانية للعثور على “مفتاح i18n”، لم أتمكن من العثور على موقع مفتاح i18n.
أنت لا “تجدها” حقًا، بل تستنتجها من الاسم الذي ستطلقه على الشارة. (سأقوم بتحديث الخطوة الثانية لاستخدام “استنتاج” بدلاً من “إيجاد”)
لذا، إذا استخدمت “مكتشف الأخطاء” (Bug Finder) كاسم للشارة، فسيكون المفتاح هو badges.bug_finder.name
لا أعرف لسبب ما، في /admin/customize/site_texts، بغض النظر عما أبحث عنه، تظهر رسالة “لم يتم العثور على نصوص موقع مطابقة”، هل تعرف ما هو السبب في ذلك؟
أوه، أعتذر، أحتاج إلى تصحيح خطواتي السابقة!
لا يمكن لصفحة مسؤول نصوص الموقع (/admin/customize/site_texts) العثور إلا على المفاتيح الموجودة بالفعل في ملفات ترجمة Discourse. لذا للأسف، مفاتيح الشارات المخصصة مثل badges.pokémon_master.name غير موجودة هناك، والبحث عنها سيعيد لا شيء (وهذه هي المشكلة التي تواجهها).
لقطات الشاشة التي شاركتها كانت من إعداد قمت فيه بإنشاء إدخالات الترجمة عبر وحدة تحكم Rails. خطوات واجهة المستخدم الإدارية التي قدمتها لن تعمل كما هي مكتوبة. آسف للإرباك. ما ينجح بالفعل إذا كان لديك وصول إلى وحدة التحكم، يمكنك إنشاء تجاوزات للترجمة للشارات المخصصة:
# نمط المفتاح هو: badges.{name_in_snake_case}.{name|description|long_description}
# على سبيل المثال لشارة تسمى "Pokemon Master":
TranslationOverride.upsert!("zh_CN", "badges.pokemon_master.name", "宝可梦大师")
TranslationOverride.upsert!("zh_CN", "badges.pokemon_master.description", "你的描述")
بمجرد إنشائها عبر وحدة التحكم، ستظهر الترجمة في /admin/customize/site_texts ويمكن تحريرها من هناك للمضي قدمًا.
إذا لم يكن لديك وصول إلى وحدة التحكم، فهذا غير ممكن حاليًا. لا يتم دعم ترجمة الشارات المخصصة كما ذكر @awesomerobot.
لقد حللت هذه المشكلة باستخدام إضافة صغيرة (GitHub - canbekcan/discourse-localized-badges · GitHub). يمكنك إنشاء مستودع GitHub خاص بك باستخدام هذا الكود وتعديل ملفات اللغة. لا تحتاج إلى ترحيل قاعدة البيانات، ولكن إذا كنت بحاجة إلى ذلك، فراجع مجلد db أو احذفه.
تعمل الإضافة عن طريق إضافة جميع معلومات اللغة إلى config → locales. هناك بعض الملفات ويمكنك إنشاء ملفات لغتك الخاصة. بعد الانتهاء من الترجمة، تحتاج إلى إضافة مستودعك إلى ملف app.yml (إذا كنت تستخدم Docker) ثم إعادة البناء. كما ذكر @nat أعلاه، قم فقط بتسمية الأوسمة الجديدة باسم badges.your_badge.name. ستظهر تلقائيًا الاسم العادي كما عرّفته في ملفات اللغة. عند تحديث ملفات اللغة الحالية، يمكنك التحديث من لوحة الإدارة بدلاً من إعادة بناء التطبيق.
يمكنك التحقق من هيكل الملفات وإنشاء ملفات لغتك الخاصة في مجلد locales، لكن الملفات حساسة جدًا فيما يتعلق بـ المسافات ![]()
ملاحظة: هذه هي حلّي لمشكلة لغات الأوسمة. إذا كان هناك حل أفضل، فأنا مستعد للاستماع ![]()


