سید احمد
1 سال پیش توسط سید احمد مطرح شد
1 پاسخ

مشکل در روت های چند زبانه در لاراول

سلام، وقتتون بخیر
قبل اینکه این سوال رو بپرسم؛ هم پرسش های قبلی رو خوندم و هم چند داکیومنت

به روش های مختلفی اومدم چند زبانگی در لاراول رو بررسی کردم؛ یکیش با سیشن بود بدون اینکه url تغییر کنه، مثلا:
الان سایت اینطوری هست آدرسش: site.ir که پیشفرض فارسی باشه، حالا با سیشن ها میومدن و site.ir/en رو که صدا میزدن کاربر رو هدایت میکرد به site.ir که زبان سایت تغییر میکرد.

وب سایت های خارجی چند زبانه رو که می دیدم همگی اینطوری بودن که تو url حالا بستگی به زبان url تغییر میکرد، مثلا الان site.ir/us , site.ir/tk و ... که فکر میکنم این راه بهترین باشه

و اما طوری که من ساختم و مشکلی که باهاش دارم:
الان به این صورت اومدم چندزبانه ای رو آوردم:
این روت اصلی من هست:

Route::get('/{locale?}', function ($locale = null) {
    if (isset($locale)  && in_array($locale, config('app.available_locales'))) {
        App::setLocale($locale);
    }
     return view('landing');
});

متغیر avaibale_locales رو هم تو app.php تعریف کردم به این صورت:

'available_locales' => [
        'English' => 'en',
        'Farsi' => 'fa',
    ],

مشکل اول:
الان زبان سایت رو به صورت پیشفرض، فارسی هست، پس وقتی آدرس سایت رو اینطوری میزنم site.ir زبان فارسی لود میکنه، اینطوری وارد میکنم site.ir/en زبان انگلیسی رو لود میکنه
تو این حالت 404 سایت از کار افتاده، چون بعد از آدرس سایت الان هر کاراکتری که وارد نمیکنم؛ صفحه اصلی سایت لود میشه مثلا site.ir/sadasdas هر کاراکتری که میزنم، روت اصی باز میشه

مشکل دوم:
الان من یک روت دارم مثلا به اسم contact خب این رو میام اینطوری باز میکنم site.ir/contact باز میشه، ولی وقتی میام نسخه انگلیسی رو وارد میکنم site.ir/en/contact کار نمیکنه و خطای 404 دریافت میکنم.
باید سگمنت تعریف کنم ولی نمیدونم چطوری

کاری که میخوام انجام بدم این باشه که الان زبان سایت فارسی هست که قشنگ همه روت ها لود میشه
ولی میخوام زبان انگلیسی به این صورت باشه site.ie/en/.... هر چی روت داشتم که آدرس هاش رو میزنم انگلیسی بشه

ممنون میشم راهنمایی کنید.


ثبت پرسش جدید
Nariman Tatari
@nariman.tatari 1 سال پیش آپدیت شد
0

منم خیلی دنبال این داستانه بودم ولی از لحاظ سئو بعدا به مشکل خوردم صفحات زبان رو حتما ریدایرکت کن به /fa یا مثلا /en از دامنه اصلی فقط برای ریدایرکت کردن به زبان ها استفاده‌کن تا جایی که من پیش رفتم یک زیان اصلی که برای سایتت داری مثلا فارسی اون رو هم ریدایرکت کنی بهتره /fa حالا بعد این که این کارهارو بکنی تازه قسمت سایت مپ و این داستانهات هستش


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام