Home > Backend Development > PHP Tutorial > How to Create Multilingual Translated Routes in Laravel?

How to Create Multilingual Translated Routes in Laravel?

Barbara Streisand
Release: 2024-11-04 03:01:30
Original
209 people have browsed it

How to Create Multilingual Translated Routes in Laravel?

Creating Multilingual Translated Routes in Laravel

In Laravel applications, you can create multilingual routes that depend on the selected language, allowing for a user-friendly navigation experience.

Step 1: Configure Language Directories and Translations

Create three separate language directories under app/lang (e.g., pl, en, fr). In each directory, create a file named routes.php that contains the translated route names:

<code class="php">// app/lang/pl/routes.php
return array(
    'contact' => 'kontakt',
    'about' => 'o-nas'
);</code>
Copy after login
<code class="php">// app/lang/en/routes.php
return array(
    'contact' => 'contact',
    'about' => 'about-us'
);</code>
Copy after login
<code class="php">// app/lang/fr/routes.php
return array(
    'contact' => 'contact-fr',
    'about' => 'about-fr'
);</code>
Copy after login

Step 2: Configure Language Settings

In app/config/app.php:

  • Set 'locale' to your default language (e.g., 'pl').
  • Include the list of alternative languages in 'alt_langs' (e.g., ['en', 'fr']).
  • Leave 'locale_prefix' empty for the default language prefix.
<code class="php">'locale' => 'pl',
'alt_langs' => ['en', 'fr'],
'locale_prefix' => '',</code>
Copy after login

Step 3: Define Route Patterns and Language-Dependent Group

In app/routes.php:

  • If the first segment of the URL matches an alternative language, update the locale and locale_prefix.
  • Set route patterns based on the current language translations.
  • Create a route group with the language prefix applied.
<code class="php">if (in_array(Request::segment(1), Config::get('app.alt_langs'))) {

    App::setLocale(Request::segment(1));
    Config::set('app.locale_prefix', Request::segment(1));
}

foreach(Lang::get('routes') as $k => $v) {
    Route::pattern($k, $v);
}

Route::group(array('prefix' => Config::get('app.locale_prefix')), function() {

    Route::get('/', function () {
        return "main page - ".App::getLocale();
    });

    Route::get('/{contact}/', function () {
        return "contact page ".App::getLocale();
    });

    Route::get('/{about}/', function () {
        return "about page ".App::getLocale();
    });

});</code>
Copy after login

Step 4: Handle Unknown URLs

In app/start/global.php:

  • Redirect any unknown URLs to the correct language prefix with a 301 status code:
<code class="php">App::missing(function() {
   return Redirect::to(Config::get('app.locale_prefix'), 301);
});</code>
Copy after login

By implementing these steps, you will create dynamic routes that adapt to the selected language, ensuring a seamless user experience across multiple languages.

The above is the detailed content of How to Create Multilingual Translated Routes in Laravel?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template