Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • How to create multilingual translated routes in Laravel 4.x

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 269
    Comment on it

    Now there are n number of site which we have to make multilingual. In Laravel we have the facility to make our site multilingual. In Laravel 4.x we will also make multilingual routes.There are few steps we have to follow to create multilingual translated routes in Laravel 4.x is

    Step 1:

    First we have to go to app/lang. Then we have to create here translations for your routes for each language. You need to create 3 routes.php files - each in separate language directory (pl/en/fr) because you want to use 3 languages

    Example:

    For Polish:

    <?php
    
    // app/lang/pl/routes.php
    
    return array(
    
        'contact' => 'kontakt',
        'about'   => 'o-nas'
    );
    

    For English:

    <?php
    
    // app/lang/en/routes.php
    
    return array(
        'contact' => 'contact',
        'about'   => 'about-us'
    );
    
    For French:
    
    <?php
    
    // app/lang/fr/routes.php
    
    return array(
        'contact' => 'contact-fr',
        'about'   => 'about-fr'
    );
    

    Second step:

    Go to app/config/app.php file.

    You should find line:

    'locale' => 'en',
    

    and change it into language that should be your primary site language (in your case Polish):

    'locale' => 'pl',
    

    You also need to put into this file the following lines:

    /** * List of alternative languages (not including the one specified as 'locale') */

    'alt_langs' => array ('en', 'fr'),
    

    /** * Prefix of selected locale - leave empty (set in runtime) */

    'locale_prefix' => '',
    

    Third step

    Go to your app/routes.php file and put their content (that's the whole content of app/routes.php file):

    // app/routes.php

    /*
    |--------------------------------------------------------------------------
    | Application Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register all of the routes for an application.
    | It's a breeze. Simply tell Laravel the URIs it should respond to
    | and give it the Closure to execute when that URI is requested.
    |
    */
    
    
    /*
     *  Set up locale and locale_prefix if other language is selected
     */
    if (in_array(Request::segment(1), Config::get('app.alt_langs'))) {
    
        App::setLocale(Request::segment(1));
        Config::set('app.locale_prefix', Request::segment(1));
    }
    
    
    /*
     * Set up route patterns - patterns will have to be the same as in translated route for current language
     */
    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();
    
            }
        );
    
    });
    

    Fourth step: So now you can open app/start/global.php file and create here 301 redirection for unknown urls:

    // app/start/global.php
    
    App::missing(function()
    {
       return Redirect::to(Config::get('app.locale_prefix'),301);
    });
    

    By this way we can create multilingual routes using Laravel 4.x.

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: