اذهب إلى المحتوى

السؤال

Recommended Posts

  • 2
نشر

أهلاً بك أخ عبد الواحد .  
يمكن  تنفيذ ذلك بأكثر من طريقة و على أكثر من لغة (javascrept , php) بحيث يقسم الموضوع الى قسمين :- 

  • إتاجه اللغة (من اليمين الى اليسار ،  أو من اليسار الى اليمين) 
  • ترجمة النصوص و الكلمات الموجودة داخل الموقع . 

بحيث عندما يختار المستخدم خيار اللغة العربية يتم تحويله الى خوارزمية تعكس إتجاه الصفحة بحيث تصبح من اليمين الى اليسار و ذلك من خلال استخدام ال html css 

و يتم ايضا تحول النصوص الى اللغة العربية . 

و كذلك يمكنك استخدام إضافات الوردبريس (إذا كنت تعمل على وردبريس ) لإضافة أكثر من لغة على موقعك .  

و هناك طريقة أخرى تستخدم في المواقع الكبيرة التي تحتوي عدد كبير من البيانات و الصفحات  ،  و هي طريقة الـ hosting بحيث يكون لديك نسختين من الموقع (نسخة باللغة العربية و نسخة باللغة الانجليزية ) و عندما يختار المستخدم اللغة العربية يتم تحويله الى مسار الموقع باللغة العربية مثال (mywebsite.com/ar) و الانجليزية يكون بالشكل التالي (mywebsite.com/en)


لتتعرف أكثر قم بقراءة هذا المقال المنشور على حسوب .  

  • 0
نشر (معدل)

على سبيل المثال في php laravel، يتم التعامل مع تغيير لغة الموقع بالإعتماد على قيمة المتغير local الموجود في ملف app.php، و تكون قيمته الإفتراضية en، أي أنه لغة إنجليزية

'locale' => 'en',

لتغيير اللغة في الموقع يجب في البداية أن نوفر التصاميم و ملفات الـ css الخاصة باللغة العربية حتى يكون الموقع متوافق و غير عشوائي، سأشرح لك الآن بالخطوات كيف تتم تلك العملية :

1. نقوم بوضع جميع الروابط الخاصة بملفات الـ css العربية و الإنجليزية في ملف خاص و نقوم بفحص قيمة الـ locale و على أساسها نحدد ما سيتم إستدعاءه ( ملفات اللغة العربية أم الإجليزية )، و هنا سوف نستخدم الدالة getlocale وهي خاصة لإستدعاء قيمة الـ locale من ملف app.php

@if(app()->getlocale() == 'ar')
<link rel="stylesheet" href="{{asset('dist/css/ar.css')}}">
@elseif((app()->getlocale() == 'en') ){
<link rel="stylesheet" href="{{asset('dist/css/en.css')}}">
@endif


2. نقوم بإنشاء route خاص بإختيار اللغة

Route::get('/localization/{lang}','LocalizationController@change')->name('lang');

3. عند طلب هذا الـ route، نقوم بإرسال نوع اللغة المطلوب على شكل string و نقوم بتخزينه في session

  • هنا سنرسل القيمة في الـ route
  <ul class="treeview-menu">
    <li><a href="{{route('local.lang','en')}}"><i class="fa fa-circle-o"></i> English </a></li>
    <li><a href="{{route('local.lang','ar')}}"><i class="fa fa-circle-o"></i> Arabic </a></li>
</ul>
  • هنا يتم تخزين القيمة المرسلة في الـ session
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Session;
class LocalizationController extends Controller
{
    public function change($lang = 'en'){
        Session::put('local',$lang);
        return redirect()->back();
    }
}

4. نقوم بإنشاء middleware، وظيفته هو أن يتحقق من القيمة المرسلة في الـ Session ومن ثم نضع هذه القيمة في ملف الـ app.php للمتغير locale

 public function handle($request, Closure $next)
    {
        if(Session::has('local')){
            app()->setlocale(Session::get('local'));
        }
        return $next($request);
    }

بالتالي عند طلب هذا الـ route و إرسال قيمة جديدة و تخزينها سيتم تحديث الصفحة بالتالي سيتم إستدعاء ملفات الـ css بناءًا على قيمة الـ locale.

تم التعديل في بواسطة ياسين عناية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...