ترجمات الوسوم المولَّدة بالذكاء الاصطناعي لا تعمل بشكل مثالي

عند التمرير عبر ترجمات الوسوم الألمانية، لاحظت مجموعة من المشكلات التي تبدو ناتجة عن افتقار الذكاء الاصطناعي إلى السياق؛ فهو يعامل الوسوم ككلمات منعزلة بدلاً من مراجع لميزات أو إضافات أو مكونات محددة في Discourse.

ملاحظة: تُكتب الأسماء في اللغة الألمانية دائمًا بحروف كبيرة، لكن الوسوم على منصة “Meta” تُكتب بحروف صغيرة. لذا فإن الترجمات في هذا المنشور غير متسقة من حيث الأحرف الكبيرة والصغيرة — لقد كنت أعود إلى الكتابة الصحيحة بالأحرف الكبيرة في الألمانية بشكل عادي بسبب العادة.

الجزء الممتع أولاً

قبل الخوض في المشكلات العملية، بعض الترجمات مسلية بحد ذاتها:

  • composer → “Komponist” — هذا يشير إلى الشخص الذي يؤلف الموسيقى
  • auto-bump → “automatische-erhöhung” — “زيادة تلقائية”
  • fully-theme → “vollständig-thematisiert” — “مُعالج بالكامل”
  • raspberry-pi → “Himbeere-pi” (“Himbeere” تعني التوت الأحمر كفاكهة)
  • post-voting → “nach-der-Abstimmung” — “بعد التصويت” (تم تفسير كلمة “post” كبادئة لاتينية وليس كمنشور في المنتدى)
  • tablet → “Tablette” — “قرص دوائي” (وليس الجهاز اللوحي)

نفس الترجمة لوسوم مختلفة

هذه هي المشكلة الأكثر تأثيرًا عمليًا. عندما تحصل وسوم مختلفة على نفس الترجمة، تفقد قدرتها على التمييز بين المواضيع.

  • year-in-review و yearly-review → “Jahresrückblick” — حاليًا يبدو أن اسم الإضافة غير قابل للترجمة (أرى الاسم الإنجليزي في الشريط الجانبي للإدارة وفي قائمة الإضافات المثبتة)، لذا من المرجح أنك ستستخدم المصطلح الإنجليزي للإشارة إلى اسم الإضافة. رغم أنني آمل أن تُترجم أسماء جميع الإضافات يومًا ما، لذا أعتقد أنني سأضيف “Metas” إلى المجموعة التي تجمع مواضيع المراجعة السنوية هنا لفصلها، لتصبح “Metas-Jahresrückblick” (مراجعة السنة الخاصة بـ Meta).
  • surveys و polls → “Umfragen” — أعتقد أن ترجمات الإضافةين متطابقة أيضًا، ولم يلاحظ أحد ذلك حتى الآن. أحتاج إلى التفكير أكثر في حل جيد لهذه المسألة لأنها قد تتعارض بسهولة مع “voting” :exploding_head:
  • docs و documentation → “Dokumentation” — تمامًا كما لم تُترجم “yearly-review docs” إلى الألمانية، فلن أترجم الوسم (في هذه الحالة يبدو أن الترجمة مستبعدة في المستقبل).
  • how-to و tutorial → “Anleitung” — هذه تم إصلاحها بالفعل. لقد وجدت هذا ترجمة لـ https://diataxis.fr/ واقترحت المصطلح[1] المستخدم هناك.

الأسماء العلمية وأسماء المنتجات التي لا يجب ترجمتها

بعض الوسوم تشير إلى أدوات أو أطر عمل أو منتجات محددة. ترجمتها تجعل الميزة غير معروفة.

  • raspberry-pi → “Himbeere-pi” (“raspberry” كفاكهة)
  • mermaid → “Meerjungfrau” (“حورية البحر” ككائن أسطوري وليس أداة رسم المخططات)
  • ember → “Glut” (جمر متوهج من النار)
  • vanilla → “Vanille” (النكهة)
  • onebox → “einzige-box” — “صندوق واحد فقط”
  • intercom → “Gegensprechanlage” (جهاز اتصال داخلي مثل جرس الباب — رغم أن intercom-widget تُرجم بشكل صحيح)
  • passkey → “Passwort” — “كلمة مرور” (المفتاح المميز ليس كلمة مرور تحديدًا)
  • perspective-api → “Perspektiven-api”
  • backups → “Sicherungen”
  • design-experiment → “Experimententwurf” — يمكن أن يكون “تجربة تصميم” أو “تجربة مسودة”، أفكر في الثانية لأن الأولى تتطلب الاحتفاظ بكلمة “design”، والتحدث عن المسودات شائع جدًا في Discourse.

ترجمات كلمة “Discourse”

تم ترجمة معظم الوسوم التي تشير إلى “Discourse” بحيث لم تعد تتضمن اسم البرنامج. الاستثناء الوحيد هو discourse-hub.

ترجمة كلمة “Theme” بشكل خاطئ باستمرار إلى “Thema” (موضوع)

هذه مشكلة منهجية عبر جميع الوسوم المتعلقة بالمظاهر (themes). في الألمانية، تُترجم كل من “theme” و “topic” إلى “Thema”، لكن في سياق Discourse هما شيئان مختلفان جدًا. هذا يجعل وسوم المظاهر تبدو وكأنها تتعلق بمواضيع نقاش محددة.

  • theme-welcome → “Willkommens-Thema” (تُقرأ كـ “موضوع ترحيبي”، مثل الخيط الثابت الافتراضي للترحيب)
  • theme-creator → “Themenersteller” — “منشئ الموضوع”
  • horizon-theme → “Horizont-Thema”
  • meta-theme-feedback → “Meta-Themen-Feedback”
  • foundation-theme → نفس النمط
  • fully-theme → “vollständig-thematisiert” — “مُعالج بالكامل”

هذا يؤثر على جميع الوسوم في مجموعة Official Themes.

ترجمات افتقرت إلى السياق

  • composer → “Komponist” — هذا يشير إلى الشخص الذي يؤلف الموسيقى، بالمقارنة مع حقل الإدخال الذي نسميه عادةً “Editor” في الألمانية.
  • tablet → “Tablette” — “قرص دوائي” أو “حبة”.
  • copy-post → “kopierbeitrag” — “رسوم النسخ” (المشكلة في تركيبة الكلمات. “Beitrag” للمنشور صحيحة، لكن لأن “copy” لم تُترجم كفعل، فإنها تُقرأ وكأن “Beitrag” تُستخدم بمعنى “رسوم” هنا).

اسم أو فعل

تمت ترجمة بعض الميزات كأفعال بدلاً من أسماء

  • chat → “plaudern” — “للدردشة”
  • search → “suchen” — “للبحث”

“post” تُفسر كبادئة لاتينية وليس كمنشور في المنتدى

  • post-voting → “nach-der-Abstimmung” — “بعد التصويت”
  • post-badges → “nach-Abzeichen” — “بعد الشارات”

نتائج من وسوم إنجليزية غير واضحة

  • hosted-support → “gehosteter-support” (يُقرأ وكأن الدعم يُستضاف بدلاً من الدعم لعملاء الاستضافة)

اختصار

  • pm-dropdown (نفس الشيء في الألمانية) بدون سياق، لم يتم استبدال الحرف m (message) بـ n (Nachricht).

ترجمات لا تتطابق مع مصطلحات واجهة Discourse الخاصة

هذه الترجمات صحيحة لغويًا بالألمانية، لكن واجهة Discourse تستخدم مصطلحات مختلفة. هذا يجعل العثور على الوسوم أصعب بشكل حدسي، خاصة للمستخدمين الذين يتنقلون بناءً على لغة الواجهة.

  • impersonate → “nachahmen” — “تقليد” (لكن الواجهة تستخدم Nutzersicht أو Nutzerrolle)
  • staged-users → “Staging-Benutzer” (لكن الواجهة تقول vorbereitete Benutzer)
  • advertising → “Werbung” (لكن الواجهة تشير إلى Anzeigen)
  • assign → “zuweisen” (لكن ترجمة الإضافة تستخدم zuordnen)
  • hot-topics → “Top-Themen” (تمت ترجمتها كـ “مواضيع رئيسية”، وهي في الواقع قائمة مختلفة في Discourse)
  • read-only → “nur lesbar”
  • bootstrap-mode → “Bootstrap-Modus” (لكن المترجمين اختاروا في الأصل Starthilfemodus)
  • post-notices → “Nachrichten” — “رسائل/أخبار” (قد تكون مضللة لأن الرسائل ميزة مختلفة، و"official notice" تستخدم Mitteilung في الواجهة)
  • about-page → “über-Seite” (هذه ترجمة حرفية. لكن الترجمة الألمانية عادةً تكون شيئًا مثل “صفحة من نحن”. كلمة Über لا تعني فقط “حول” بل أيضًا “فوق”.)
  • auto-bump → “automatische-erhöhung” — “زيادة تلقائية”
  • tags → “Etiketten” (لكن tag-groups ومعظم الوسوم التي تحتوي على tag تستخدم “tag”، والمصطلح المستخدم في Crowdin هو Schlagwort)

ترجمات مقطوعة

هذه مشكلة مختلفة — ليست خطأ في الترجمة، بل نتيجة لأن الأسماء المركبة في الألمانية أطول بكثير من نظيراتها الإنجليزية، مع وجود حد أقصى لعدد أحرف الوسم.

  • content-security-policy → “inhalts-sicherheitsrichtl” (مقطوعة، يجب أن تكون inhalts-sicherheitsrichtlinie)
  • ai-custom-prompt → “ai-benutzerdefinierte-auf” (مقطوعة في منتصف الكلمة، يجب أن تكون ai-benutzerdefinierte-aufforderung)
  • custom-category-boxes → “benutzerdefinierte-katego” (مقطوعة في منتصف الكلمة، يجب أن تكون benutzerdefinierte-kategorie-boxen، في هذه الحالة كلمة box مفقودة تمامًا من الترجمة)

الوسوم التي تحتوي على “custom” تصبح طويلة بسهولة لأن كلمة “benutzerdefiniert” طويلة جدًا.

أمثلة إضافية

تقترح هذه الأمثلة أن عملية الترجمة تحتاج إلى مزيد من السياق — مثلاً معرفة أي إضافة أو ميزة ينتمي إليها الوسم، والوصول إلى ترجمات واجهة Discourse الحالية كمرجع. يسعدني سماع ما إذا كان الآخرون قد لاحظوا أنماطًا مماثلة في لغات أخرى.


@nat (بناءً على طلب شخصي)


  1. Lernunterlagen ↩︎

6 إعجابات

شكرًا لك @Moin، سأقوم بالتحقق من هذا وتحسين نصوصنا :smiling_face:

أيضًا، لطيف جدًا :grinning_face_with_smiling_eyes:

شكرًا على الضحك :hugs:

4 إعجابات

@nat ماذا لو منحنا الوكيل الوصول إلى أداة القراءة، حتى يتمكن من جمع السياق بنفسه؟

سيكون ذلك مكلفًا جدًا للمشاركات، ولكنه رخيص نسبيًا ويزيد من الجودة عبر جميع النماذج لمرة واحدة مثل الوسوم والفئات.

3 إعجابات

حسناً، هذه فكرة جيدة @falco.

طريقة أخرى فكرت فيها كانت تمرير وصف الوسم كسياق إضافي عند ترجمة اسم الوسم. ربما تكون هذه الطريقة أكثر قابلية للتنبؤ، ما رأيك؟

4 إعجابات

قد يكون الوصول إلى قائمة المصطلحات في كراودين مفيدًا جدًا للروبوت الذي يقوم بالترجمة (ليس لجميع المواقع، ولكن بشكل خاص لـ Meta). إذا تم الإشارة هناك إلى أننا نترجم “composer” إلى “المحرر”، ومع معرفة الذكاء الاصطناعي بذلك، فيمكنه استخدام هذه المعلومة في الوسوم، وكذلك في عناوين المواضيع والمنشورات.

لقد قمتُ مرة بإصلاح مصطلح “composer” في Introducing our new composer, making writing on Discourse easier than ever مما أدى إلى تقديمي لملاحظات حول تعديل الترجمات هنا: Feedback on the composer when translating a post to German لكن الموضوع تم تعديله بعد أن قمت بذلك، ولا يبدو أن الترجمة السابقة تُستخدم كسياق، لذا فإن المنشور يذكر “composer” مرة أخرى. (عادةً لا يظهر مؤلف الموسيقى في المنشورات؛ بل تظهر نصوص قصيرة مثل عناوين المواضيع والوسوم فقط.)

في Meta، غالبًا ما لا يضيف الوصف الكثير من السياق. فجميع الأوصاف الخاصة بمكونات السمات، على سبيل المثال، تحتوي ببساطة على رابط إلى موضوع المكون، وليس الوصف القصير من بداية الموضوع.

فكرة رائعة، لنفعل الأمرين معًا!

الفكرة هي استخدام Meta كحقل اختبار ونموذج لما قد يواجهه عملاؤنا في الواقع، مما يجعل الميزة أفضل للجميع.

سيكون الحصول على ترجمة مثالية في Meta أمرًا في غاية السهولة ببساطة باستخدام نموذج لغوي كبير (LLM) الأكثر تكلفة ومنحه إمكانية الوصول إلى أدوات مثل الوصول إلى الكود المصدري والبحث عبر الويب.

لا أعتقد أن أي نموذج سيختار نفس الترجمات التي اختارها المترجمون الألمان لواجهة Discourse. فكلمة “Mitarbeiter” هي ترجمة مثالية لكلمة “staff”. إن حقيقة أن بعض المترجمين قرروا قبل سنوات أن هذا المصطلح لا يناسب منتديات الهواة الصغيرة — حيث تشير كلمة “staff” إلى الموظفين المدفوعين الأجر — وبالتالي اختاروا كلمة “Team”، هو أمر لا يمكن لأي ذكاء اصطناعي تخمينه، لأنه ببساطة ليس الترجمة الصحيحة. وهذا بالضبط المكان الذي يمكن أن يساعد فيه قاموس Crowdin: فبدونه، لن تتطابق المصطلحات المولدة بالذكاء الاصطناعي أبدًا مع ما يراه المسؤولون فعليًا في الواجهة — ليس لأن الذكاء الاصطناعي غير قادر على الترجمة، بل لأنه لا يتخذ نفس قرارات التوطين التي اتخذها المترجمون البشريون. إنه الفرق بين الترجمة والتوطين.
وهذا ينطبق أيضًا على مصطلحات أخرى مثل “bootstrap mode” أو “impersonation”.

سيختارها، لأنه سيكون لديه إمكانية الوصول إلى نفس الخيار تمامًا في ملفات config/locales/**/*.yml كمرجع.

بالتأكيد، وللمجموعات القابلة للعد الصغيرة، مثل الفئات والوسوم، فإن منح الوكيل إمكانية الوصول إلى الترجمات الحالية، التي تعد جزءًا من الكود المصدري، سيساعد في ترسيخها.

لا يمكننا فعل ذلك للمشاركات، لأن التكلفة ستكون باهظة جدًا، لكنه خيار متاح للمواقع الصغيرة أو للعملاء الذين لديهم ميزانيات ترجمة أكبر.

إذن، ربما يجب عليك تعطيل الترجمة بالذكاء الاصطناعي لـ Documentation و News and Events > Announcements :wink: لا أعتقد أنه من الممكن ضمان فائدة هذه الترجمات، خاصةً لأن التعديلات المقترحة لا ترفع الموضوع، لذا لا توجد طريقة سهلة لملاحظة تحديث موضوع ما.

بشكل عام، التكلفة هي السبب الذي دفعني لاقتراح استخدام القائمة الموحدة للمصطلحات بدلاً من الملفات التي تحتوي على جميع الترجمات، لأنني أتوقع أن تحتوي تلك القائمة على الخيارات الأكثر صلة مرة واحدة دون إضافة كل نصوص.

هذا ليس كيف يعمل؛ يمكن للوكيل البحث في الكود عن قطع تحتوي على تطابقات، وهو لا يقوم بتحميل الملف بالكامل إلى السياق أبدًا.

هذا يشبه إلى حد ما إخراج الطفل مع ماء الاستحمام، أليس كذلك؟

لقد تحققت للتو من الرابط Calendar subscription URLs for external calendar apps في اللغة البرتغالية (البرازيل)، ويبدو أن الترجمة ممتازة، وهي أفضل بكثير من عدم وجود ترجمة على الإطلاق.

سيكون هناك دائمًا مجال للتحسين في سير عمل الترجمة الآلية غير الخاضعة للإشراف، وقد قام @nat بالفعل بتحسينه اليوم بفضل ملاحظاتك!

لا يتوقع أحد أن تكون الترجمة مثالية، وMeta هي المكان الذي يمكننا فيه تبني الميزات مبكرًا وإظهار ما هو ممكن في Discourse لمستخدمينا وعملائنا.