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

How to Create Multilingual Translated Routes in Laravel?

Barbara Streisand
Barbara StreisandOriginal
2024-11-04 03:01:30155browse

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>
<code class="php">// app/lang/en/routes.php
return array(
    'contact' => 'contact',
    'about' => 'about-us'
);</code>
<code class="php">// app/lang/fr/routes.php
return array(
    'contact' => 'contact-fr',
    'about' => 'about-fr'
);</code>

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>

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>

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>

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!

Statement:
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