موقع بأكثر من لغة

  • refat

السلام عليكم,

ماهي الطريقة الصحيحة أو المناسبة لبرمجة موقع بعدة لغات؟

أيجب تخزين اللغة المختارة في ال cookies أو ال session أو ال url أو subdomain؟

شكراً مقدماً.


من الممكن للمستخدم تسجيل الدخول للموقع على أكثر من متصفح فلحفظ اللغة المختارة أنصح بوجودها في قاعدة البيانات

لأن ملفات ال cookies هي محلية للمتصفح أما session من الممكن أن تنتهي مدتها ..

المكان الرئيسي هو قاعدة البيانات ثم احفظ تفضيل اللغة بعدة مستويات و تستطيع اختبار القيمة اذا كانت موجودة أو لا في cookies او session .. واستدعائها بشكل اسرع وإلا ستكون في قاعدة البيانات ..

أين نحفظ ملفات الترجمة?.هذا يعتمد على المنصة التي تقوم بالبرمجة بها.

مثلا wordpress يوفر آلية سهلة للتحكم باللغة,

أما اذا كنت تبرمج باستخدام Laravel فلها طريقة معينة مثل تعريف ملفات الترجمة بوضع associative array

تحوي مفتاح مشترك في جميع اللغات (جميع ملفات اللغات) و تقابلها النص الذي نريد عرضة للمستخدم في كل ملف منها

أنصح باستخدام مكتبةmcamara:

كما يمكنك عن طريق ال URL ولكن لا أنصحك بالطريقة ال Static لأنه بهذه الحالة ستقوم بتكرار الملفات ..

مقال مفيد :

انا اعمل على اطار عمل خاص بي للتدريب ولفهم الية عمل الاطارات.

سأكون سعيد ان القيت نظرة على المشروع بشكل عام واعطيتني رأيك. اما مجلدات الترجمة فستجدها في resources/languages/

ماهي مجلدات الترجمة ارجو الشرح اكثر

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

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

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)";  // => أهلا بك في حسوب

تسلم اخي لقد فهمت جزاك الله خيرا