السلام عليكم,
ماهي الطريقة الصحيحة أو المناسبة لبرمجة موقع بعدة لغات؟
أيجب تخزين اللغة المختارة في ال cookies أو ال session أو ال url أو subdomain؟
شكراً مقدماً.
من الممكن للمستخدم تسجيل الدخول للموقع على أكثر من متصفح فلحفظ اللغة المختارة أنصح بوجودها في قاعدة البيانات
لأن ملفات ال cookies هي محلية للمتصفح أما session من الممكن أن تنتهي مدتها ..
المكان الرئيسي هو قاعدة البيانات ثم احفظ تفضيل اللغة بعدة مستويات و تستطيع اختبار القيمة اذا كانت موجودة أو لا في cookies او session .. واستدعائها بشكل اسرع وإلا ستكون في قاعدة البيانات ..
أين نحفظ ملفات الترجمة?.هذا يعتمد على المنصة التي تقوم بالبرمجة بها.
مثلا wordpress يوفر آلية سهلة للتحكم باللغة,
أما اذا كنت تبرمج باستخدام Laravel فلها طريقة معينة مثل تعريف ملفات الترجمة بوضع associative array
تحوي مفتاح مشترك في جميع اللغات (جميع ملفات اللغات) و تقابلها النص الذي نريد عرضة للمستخدم في كل ملف منها
أنصح باستخدام مكتبةmcamara:
كما يمكنك عن طريق ال URL ولكن لا أنصحك بالطريقة ال Static لأنه بهذه الحالة ستقوم بتكرار الملفات ..
مقال مفيد :
تقوم إطارات العمل على تخصيص مسار ضمن مجلد المشروع نضع فيه ترجمة للمفاتيح الخاصة بترجمة القوائم و رسائل النجاح و الخطأ و معظم النصوص الثابتة في المشروع التي تتطلب ترجمة.
يكون لكل لغة مجلد أو ملف باسم اختصار اللغة ليتم ربطه مع المشروع عند تغيير اللغة حيث يتم قراءة قيم الترجمة للنصوص و عرض اللغة التي يطلبها المستخدم... وإن افترضنا أن المجلد التالي خاص بتجميع ترجمة المشروع
resources/languages/
سنضع فيه عدة ملفات خاصة للغات مثل عربي و انكليزي و فرنسي و اسباني ..
resources/languages/ar.php resources/languages/en.php resources/languages/fr.php resources/languages/es.php
لكل ملف من السابق وإن افرضنا أن ملف PHP سيكون فيه مصفوفة ترابطية مفاتيحها هي أكواد للنصوص المراد ترجمتها
مثلاً في en.php
return [ "welcome" => "welcome to Hsoub" ]
العربي ar.php
return [ "welcome" => "أهلا بك في حسوب" ]
وضمن برمجة التطبيق، يتم تحديد رمز اللغة مثلاً en فيتم قراءة ملف en.php و عرض النص المقابل للمفتاح للمستخدم
load_translation_file('ar'); echo "translate('welcome)"; // => أهلا بك في حسوب
التعليقات