'locale' => 'en', الي 'locale' => 'ar' هذا الحقل يعني اللغة الافتراضية للتطبيق
'fallback_locale' => 'en', الي 'fallback_locale' => 'ar',في حالة لم يتم العثور علي اللغة أعرض هذه اللغة
الذهاب الي مجلدresources/lang/en ونسخ المحتوي الذي بداخلة الي مجلد جديد بنفس الاسم(ar) الذي تم تغييرة في الخطوة السابقة وسوف تجد بهذا المجلد أربعة ملفات وهم كالتالي
(auth) رسائل المصادقة التي تعرض للمستخدم
(pagination) في حال كان هناك محتوي يلزم التنقل بين الصفحات
(passwords) كلمات المرور
(validation)التحقق من المدخلات ورسائل الخطأ
: النقتطين
سواء كنت تعمل في ملفات لارافيل الافتراضية التي يتم تحميلها مع التطبيق لاول مرة أو أي سكربت أخر لا يتم ترجمتها لانها تحمل قيمة متغير .session()->flash('message_key',trans('رسالة الخطأ أو النجاح مثلا'));
session()->flash('message_key',trans('site.message_success'));
php artisan make:middleware Language
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; class Language { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // if (Session()->has('applocale') AND array_key_exists(Session()->get('applocale'), config('languages'))) { App::setLocale(Session()->get('applocale')); } else { // This is optional as Laravel will automatically set the fallback language if there is none specified App::setLocale(config('app.fallback_locale')); } return $next($request); } }
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Language::class,
],
<?php return [ 'en' => 'English', 'fr' => 'Français', 'es' => 'Spanish' ];
php artisan make:controller LanguageController
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Redirect; class LanguageController extends Controller { public function switchLang($lang) { if (array_key_exists($lang, Config::get('languages'))) { Session::put('applocale', $lang); } return Redirect::back(); } }
Route::get('lang/{lang}', ['as' => 'lang.switch', 'uses' => 'App\Http\Controllers\LanguageController@switchLang']);
<li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> {{ Config::get('languages')[App::getLocale()] }} </a> <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> @foreach (Config::get('languages') as $lang => $language) @if ($lang != App::getLocale()) <a class="dropdown-item" href="{{ route('lang.switch', $lang) }}"> {{$language}}</a> @endif @endforeach </div> </li>
@error('أسم رسالة التحقق') <p class="tex-danger"> {{$message}} </p> @enderror
أي محتوي نصي تريد ترجمته بداخل ملف بالأسم site مثلا
{{__('site.any_string_you_want_to_translate')}}