أبرز المستجدات
يدعم موقع foura.ai الآن ست لغات. تم استخراج الموقع، وواجهة Dashboard، وصفحات التسويق التسع، وترجمتها، وإعادة ربطها لتقديم اللغة المحلية الصحيحة بناءً على URL. افتح خريطة الموقع في متصفح وستظهر كجدول منسق بدلاً من ملف XML خام.
ما الجديد
الموقع يتحدث ست لغات
الإنجليزية، والبلغارية، والألمانية، والبولندية، والفيتنامية، والصينية. يعني توجيه بادئة URL أن كل لغة محلية توجد في مسار خاص بها: /de/ و /pl/ و /zh/ وما إلى ذلك. يخدم المسار المجرد اللغة الإنجليزية، ويعيد /en/ التوجيه إليه بحيث لا يوجد سوى URL أساسي (canonical) واحد لكل صفحة إنجليزية. تتيح لك أيقونة الكرة الأرضية في شريط التنقل العلوي التبديل، ويستمر اختيارك عبر الصفحات.
يقوم العرض من جانب الخادم (Server-side rendering) بالعمل الأكبر لتحسين SEO. تأتي كل صفحة الآن مع سمة lang صحيحة، ومجموعة hreflang كاملة، وبيانات Open Graph التعريفية الخاصة باللغة المحلية، وعنوان <title> ووصف <meta description> مترجمين للغة المحلية. تعرض خريطة الموقع كل URL عبر كل لغة محلية. محركات البحث التي تفضل لغة محلية على أخرى (يريد Baidu اللغة الصينية، وتريد النسخة البولندية من محرك البحث اللغة البولندية) تحصل الآن على الصفحة الصحيحة في أول عملية زحف.
تعمل صيغ الجمع في ICU بالطريقة التي تتوقعها. تبقى عبارة "1 API key" مفردة، وتتحول "2 API keys" إلى الجمع، وتتغير القاعدة حسب اللغة. تحتوي اللغة البولندية على ثلاث صيغ للجمع، والإنجليزية على صيغتين، والصينية على صيغة واحدة. يستخدم محلل وقت التشغيل Intl.PluralRules، وهو API مدمج في المتصفح، لذلك لم يتم شحن أي شيء إضافي إلى حزمتك البرمجية.
وإذا كنت تقرأ باللغة الإنجليزية، فلن يتغير شيء بشكل مرئي. ستبقى عناوين URL الخاصة بك في مكانها.
تعريب واجهة مستخدم Playground
يتبع الآن ما يقرب من 80 سلسلة نصية في أداة Playground (الملصقات، والتلميحات، والنصوص النائبة، وتلميحات الأدوات) اللغة المحلية التي حددتها. يظل المحتوى التقني باللغة الإنجليزية عن قصد: أسماء طرق HTTP، ونماذج الكود، ومفاتيح JSON، وأسماء header، ورموز الحالة، والقيم التي تلصقها في request، كلها تُقرأ بالطريقة نفسها في كل لغة محلية. تتحدث واجهة المستخدم (UI) المحيطة بها لغتك، بينما تظل البيانات المنقولة باللغة الإنجليزية.
هذا الفصل مهم. يمكن لأي شخص يقوم بتصحيح أخطاء request عبر فريق لا يشارك لغة أولى مشتركة أن ينسخ جسم request ويطابقه مع الوثائق دون حدوث انحراف في الترجمة.
عرض خريطة الموقع كجدول
ضع https://foura.ai/sitemap.xml في علامة تبويب المتصفح وسترى جدولاً منسقاً بالمظهر الداكن لـ FourA بدلاً من ملف XML خام. لقد أضفنا ورقة أنماط XSLT تتعامل مع كل من خرائط المواقع الفردية وفهرس خرائط المواقع.
السبب في حاجتنا إليها: توقفت المتصفحات عن عرض خرائط المواقع المترجمة كشجرة منسقة مدمجة بمجرد ظهور إدخالات اللغة المحلية البديلة <xhtml:link>. كان الخيار إما شحن خريطة موقع بدون بدائل (وفقدان إشارة SEO التي تربط اللغات المحلية معاً) أو عرض التنسيق الخاص بنا. لذلك اخترنا الخيار الثاني. تتجاهل برامج الزحف ورقة الأنماط وتحلل XML كما كان من قبل، لذلك لا يتغير شيء بالنسبة لها.
خريطة الموقع هي صفحة حقيقية على موقع حقيقي. ويجب أن تبدو كذلك.
خلف الكواليس
تأتي الترجمات من خط أنابيب مؤتمت (automated pipeline). نحن نعتمد فقط السلاسل النصية المصدر باللغة الإنجليزية، وعند الدمج في الفرع الرئيسي (main)، يولد خط الأنابيب كل لغة محلية أخرى ويعتمد النتيجة. تتم تعديلات النصوص في مكان واحد وتنتشر عبر ست لغات.
هناك إصلاح لخطأ برمجى واحد يستحق الذكر. قام أول نشر مترجم بشحن نصوص نائبة للترجمة الخام لفترة وجيزة إلى بيئة الإنتاج (كنت لترى home.h1a حيث يجب أن يكون العنوان الرئيسي) لأن مرحلة البناء كانت تفتقد إلى دليل اللغات المحلية (locales directory). لقد ثبتنا الإصلاح وجعلنا عملية البناء تقرأ دليل اللغات المحلية قبل إنتاج الحزمة، حتى لا يتكرر هذا الأمر.
الموقع الذي يشحن بست لغات هو، من الناحية الهيكلية، ستة مواقع مختلفة. تستفيد محركات البحث، وقارئات الشاشة، والعميل في وارسو الذي يبحث على Google باللغة البولندية، عندما تصل اللغة المحلية الصحيحة إلى URL الصحيح مع البيانات التعريفية الصحيحة. تظل البيانات المنقولة كما هي، وتلبي الواجهة احتياجات كل قارئ أينما كان.