انتقل إلى المحتوى

قم بتعيين اللغات المحلية للواجهة في UE

سجل كيفية تحقيق تعدد اللغات المحلية في UE.

إذا كنت غير مألوف بقائمة إضافات UE، فأنصح بالنظر فيها بشكل مبسّط أولاً: قائمة محرر إضافات UEue- Expand menu using path form

ترجمة النص إلى اللغة العربية: هذا النص معتمد على الإضافة: UE.EditorPlus

شرح الوظائف

يمكن لـ UE أن يتمتع بأدواته الخاصة التي تسمح بتنفيذ اللغات المتعددة، على سبيل المثال، يمكننا تحقيق التعريب لقوائم المحرر:

القائمة باللغة الصينية:

القائمة بالإنجليزية:

بيان الشيفرة

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

  • يتم تعريف النطاق الكامل للملفات أولاً عن طريق تعريف ماكرو يُسمى LOCTEXT_NAMESPACE ، حيث يكون المحتوى هو اسم مساحة الأسماء التي يوجد بها النصوص متعددة اللغات الحالية، بعد ذلك يُمكن استخدام LOCTEXT لتعريف النصوص في الملف، وأخيرًا يتم إلغاء ماكرو LOCTEXT_NAMESPACE في نهاية الملف:
// #define LOCTEXT(InKey, InTextLiteral)

#define LOCTEXT_NAMESPACE "EditorPlusTools"
LOCTEXT("Key", "Content");
#undef LOCTEXT_NAMESPACE

استخدام طريقة تعريف محلية، باستخدام NSLOCTEXT ، عند تعريف النص يرافقه معلمة الفضاء الاسم:

// #define NSLOCTEXT(InNamespace, InKey, InTextLiteral)

NSLOCTEXT("EditorPlusTools", "Key", "Content");

يقوم أداة UE بجمع جميع النصوص التي تحتاج إلى ترجمة عن طريق البحث عن ظهور ماكرو LOCTEXT و NSLOCTEXT.

استخدم الأداة لترجمة النص

لنفترض أن لدينا الشفرة التالية لتعريف النص:

#define LOCTEXT_NAMESPACE "EditorPlusTools"
// register path node loctext
FEditorPlusPath::GetNodeByPath("/MenuTest")->SetFriendlyName(LOCTEXT("MenuTest", "MenuTest"))->SetFriendlyTips(LOCTEXT("MenuTestTips", "MenuTestTips"));
FEditorPlusPath::GetNodeByPath("/MenuTest/<SubMenu>SubMenu1")->SetFriendlyName(LOCTEXT("SubMenu1", "SubMenu1"))->SetFriendlyTips(LOCTEXT("SubMenu1Tips", "SubMenu1Tips"));
FEditorPlusPath::GetNodeByPath("/MenuTest/<SubMenu>SubMenu1/<SubMenu>SubMenu1")->SetFriendlyName(LOCTEXT("SubMenu1", "SubMenu1"))->SetFriendlyTips(LOCTEXT("SubMenu1Tips", "SubMenu1Tips"));
FEditorPlusPath::GetNodeByPath("/<Hook>Help/<MenuBar>MenuTest/<SubMenu>SubMenu1/<Section>Section1")->SetFriendlyName(LOCTEXT("Section1", "Section1"))->SetFriendlyTips(LOCTEXT("Section1Tips", "Section1Tips"));
#undef LOCTEXT_NAMESPACE

ابدأ بتشغيل أداة الترجمة، افتح إعدادات المحرر تحرير - تفضيلات المحرر، وحدد عام - وظائف تجريبية - Tools - عنصر اختيار الترجمة

ثم قم بفتح أداة الترجمة الأدوات - لوحة التحكم في التعريب:

قم بإنشاء هدف جديد (يمكنك وضعه تحت "اللعبة" الافتراضية، الهدف الجديد لسهولة إدارة ونقل هذه النصوص المترجمة).

قم بتعيين معلمات الهدف، حيث سيتم تغيير اسمي هنا إلى EditorPlusTools، وسيكون نوع التحميل محرر، وسيتم الحصول على البيانات من النص وإضافتها إلى دليل الإضافات، والاعتمادات المستهدفة هي Engine, Editor، أما بقية الإعدادات فستبقى كما هي.

يرجى إضافة اللغات لضمان توفر الصينية (المبسطة) والإنجليزية كخيارين، وتأكيد عرض zh-Hans و en عند تمرير الماوس فوق اسم اللغة بالواحدة، كما يُرجى تحديد اللغة الإنجليزية (لأن النصوص معرّفة بالإنجليزية في رمزنا، ونحتاج هنا لجمع هذه النصوص باللغة الإنجليزية):

الرجاء جمع النصوص التالية:

سيظهر صندوق تقدم جمع البيانات ، انتظر حتى يتم جمعها بنجاح، وسيظهر علامة صح باللون الأخضر:

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

افتح النص، وسوف تجد القسم الذي لم يُترجم يحتوي على محتوى. أدخل النص المُترجم في الجانب الأيمن من النص الإنجليزي. بمجرد اكتمال الترجمة، احفظ التغييرات وأغلق النافذة.

الرجاء تقديم النص الذي ترغب في ترجمته.

ترجمة هذا النص إلى اللغة العربية:

أخيراً، النص المُترجم:

سيتم وضع بيانات الترجمة في المجلد Content\Localization\EditorPlusTools، حيث ستكون هناك مجلد لكل لغة، يمكن رؤية ملفين في مجلد zh-Hans، وهما ‏.archive‏ لتجميع النصوص وترجمتها و ‏.locres‏ بعد ترجمتها.

وضع النص المترجم في دليل الإضافة

قمنا بوضع النصوص المترجمة التي تم إنشاؤها بواسطة الإضافة في الدليل الخاص بالمشروع. نحتاج إلى نقل هذه النصوص إلى داخل الإضافة لتسهيل نشرها مع الإضافة.

انقل دليل Content\Localization\EditorPlusTools إلى دليل الإضافات تحت مجلد المكونات الإضافية Plugins\UE.EditorPlus\Content\Localization\EditorPlusTools عندي.

قم بتعديل ملف تكوين المشروع DefaultEditor.ini، وأضف المسار الجديد:

[Internationalization]
+LocalizationPaths=%GAMEDIR%Plugins/UE.EditorPlus/Content/Localization/EditorPlusTools

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

ملاحظات

أثناء عملية إنشاء بيانات الترجمة، واجهت بعض المشاكل، وفيما يلي تلخيص للأمور التي ينبغي الانتباه لها:

  • يجب تعريف النصوص داخل الكود باستخدام المحددات LOCTEXT و NSLOCTEXT، ويجب أن تكون النصوص ثوابت سلاسل لكي يقوم نظام التشغيل بجمعها. لا يمكن أن يحتوي اسم الهدف المترجم على الرموز ".". يجب ألا تحتوي أسماء الدلائل في "Content\Localization\" على "."، لأن محرك Unreal Engine سيقوم بقص الجزء الذي يسبق النقطة ".". وهذا قد يؤدي إلى فشل قراءة Unreal Engine للنص المترجم بسبب خطأ في الاسم. بالنسبة لملحقات المحرر، من الضروري التحقق من ما إذا كانت في وضع سطر الأوامر IsRunningCommandlet() ثم عدم إنشاء قائمة وواجهة المستخدم SlateUI، لأنه لا يوجد وحدة Slate في وضع سطر الأوامر، مما يمكن أن يؤدي إلى حدوث خطأ عند جمع النصوص Assertion failed: CurrentApplication.IsValid() . إذا واجهت أيضًا خطأ مماثلًا، جرب إضافة هذا التحقق. المعلومات الخطأ بشكل محدد:

    Assertion failed: CurrentApplication.IsValid() [File:E:\UE\ue5.3_git\Engine\Source\Runtime\Slate\Public\Framework\Application\SlateApplication.h] [Line: 255]

Original: https://wiki.disenone.site/ar

This post is protected by CC BY-NC-SA 4.0 agreement, should be reproduced with attribution.

هذه المشاركة تمت ترجمتها باستخدام ChatGPT، يرجى تقديم ملاحظاتيرجى تحديد أي نقص.