Erfan pirikhah
5 سال پیش توسط Erfan pirikhah مطرح شد
4 پاسخ

دو زبانه کردن سایت با لاراول

سلام دوستان
من دارم یک سایت دوزبانه ایجاد میکنم مشکلی که دارم اینکه یک دکمه درست کردم برای تغییر زبان ولی کار نمیکنه

کد view

@if (app()->getLocale()=='fa')

                            <form action="{{route('lang.en')}}" method="get">

                                <button class="btn 
                                 btn-success font-14">English</button>
                            </form> 
                        @else

                            <form action="{{route('lang.fa')}}" method="get">

                                <button class="btn  btn-primary font-14">فارسی</button>
                            </form> 

                        @endif

کد Route

Route::get('/lang-fa', 'BlogController@langFa')->name('lang.fa');
Route::get('/lang-en', 'BlogController@langEn')->name('lang.en');
کد Controller

public function langFa()
{   
    App::setLocale('fa');
    return redirect()->back();
}

public function langEn()
{      App::setLocale('en');       
    return redirect()->back();
}

ثبت پرسش جدید
داود خانی
تخصص : برنامه نویس لاراول و متخصص سئو...
@davoodkhany 5 سال پیش مطرح شد
2

سلام تو بلید من از این کد استفاده کرده بودم پیدا کردم گذاشتم گفتم شاید به کارتون بیاد:

      <div class="languages">
            <select class="form-control badge-light" onchange="location=this.value">
                <option value="/en" {{ app()->getLocale()=='en'? 'selected' :'' }}>EN</option>
                <option value="/fa" {{ app()->getLocale()=='fa'? 'selected' :'' }}>FA</option>
            </select>
        </div>

سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 5 سال پیش آپدیت شد
3

این هلیپر فاکشن رو از کجا اوردی؟! تویی blade میشه استفاده کرد؟!!

app()->getLocale()

من معمولا از سمت کنترلر زبان رو میریزم تویی یک متغییر یا سشن بعدش تویی ویو ازش استفاده میکنم

session()->put('locale', $locale);

یک راهنمایی شما وقتی داری از Localization لاراول استفاده میکنی نیازی نیست تویی view اینجور کد بزنی
طبق مستندات لاراول شما میتونی برای هر زبان یک فایل php با اطلاعات بازگشتی جیسون بسازی و استفاده بکنی (نمونه اش بصورت پیش فرض هست برای en که فایل های auth.php, pagination.php, passwords.php, validation.php هستند خودتون هم میتونین بسازین)

/resources
    /lang
        /en
            messages.php
        /fa
            messages.php

فایل messages.php

?php

// resources/lang/en/messages.php

return [
    'btnEng' => 'English'
];

که تویی روت وقتی کاربر زبانش رو انتخاب کرده

Route::get('welcome/{locale}', function ($locale) {
    App::setLocale($locale);

    //
});

براش setLocale رو ست میکنی و جیسون رو طبق زبان دریافت میکنی

<button class="btn  btn-primary font-14">@lang('messages.btnEng')</button>

داود خانی
تخصص : برنامه نویس لاراول و متخصص سئو...
@davoodkhany 5 سال پیش مطرح شد
2

سلام تو بلید من از این کد استفاده کرده بودم پیدا کردم گذاشتم گفتم شاید به کارتون بیاد:

      <div class="languages">
            <select class="form-control badge-light" onchange="location=this.value">
                <option value="/en" {{ app()->getLocale()=='en'? 'selected' :'' }}>EN</option>
                <option value="/fa" {{ app()->getLocale()=='fa'? 'selected' :'' }}>FA</option>
            </select>
        </div>

Erfan pirikhah
@erfan.pirikhah1 5 سال پیش مطرح شد
1

@davoodkhany
مرسی درست شد :)


داود خانی
تخصص : برنامه نویس لاراول و متخصص سئو...
@davoodkhany 5 سال پیش مطرح شد
1

موفق باشید مهندس


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

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