PHP code example of mphpmaster / laravel-translatable

1. Go to this page and download the library: Download mphpmaster/laravel-translatable library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

mphpmaster / laravel-translatable example snippets


$book = Book::first();
echo $book->translate('en')->title; // English

App::setLocale('en');
echo $book->title; // English

App::setLocale('fr');
echo $book->title; // French

$book = Book::first();
echo $book->translate('en')->title; // English

$book->translate('en')->title = 'English Lang';
$book->save();

$book = Book::first();
echo $book->translate('en')->title; // English Lang

$data = [
  'author' => 'name',
  'en' => ['title' => 'English'],
  'fr' => ['title' => 'French'],
];
$book = Book::create($data);

echo $book->translate('fr')->title; // French

'supported-locales' => ['en', 'nl', 'fr'],

'supported-locales' => [
  'en' => 'example.com',
  'nl' => 'nl.example.com',
  'fr' => 'fr.example.com',
],

'omit_url_prefix_for_locale' => null

protected $middlewarePriority = [
    \Illuminate\Session\Middleware\StartSession::class, // <= after this
    //...
    \mPhpMaster\Translatable\Middleware\SetLocale::class,
    //...
    \Illuminate\Routing\Middleware\SubstituteBindings::class, // <= before this
];

'use_locale_middleware' => true

protected $middlewareGroups = [
    'web' => [
        \Illuminate\Session\Middleware\StartSession::class, // <= after this
        //...
        \mPhpMaster\Translatable\Middleware\SetLocale::class,
        //...
        \Illuminate\Routing\Middleware\SubstituteBindings::class, // <= before this
    ],
];

Route::localized(function () {

    Route::get('about', AboutController::class.'@index')
        ->name('about')
        ->middleware(\mPhpMaster\Translatable\Middleware\SetLocale::class);

    Route::group([
        'as' => 'admin.',
        'middleware' => [\mPhpMaster\Translatable\Middleware\SetLocale::class],
    ], function () {

        Route::get('admin/reports', ReportsController::class.'@index')
            ->name('reports.index');

    });

});

'use_localizer' => true

Route::localized(function () {

    Route::get('about', AboutController::class.'@index')
        ->name('about');

}, [
    'supported-locales' => ['en', 'nl', 'fr'],
    'omit_url_prefix_for_locale' => null,
    'use_locale_middleware' => false,
]);

// Not localized
Route::get('home', HomeController::class.'@index')
    ->name('home');

// Localized
Route::localized(function () {

    Route::get('about', AboutController::class.'@index')
        ->name('about');

    Route::name('admin.')->group(function () {
        Route::get('admin/reports', ReportsController::class.'@index')
            ->name('reports.index');
    });

});

Route::fallback(function () {
    return response()->view('errors.404', [], 404);
})->middleware(\mPhpMaster\Translatable\Middleware\SetLocale::class);

$url = route(app()->getLocale().'.admin.reports.index');

$url = route('admin.reports.index'); // current locale
$url = route('admin.reports.index', [], true, 'nl'); // dutch URL

route($name, $parameters = [], $absolute = true, $locale = null)

app()->setLocale('en');
app()->getLocale(); // 'en'

$url = route('home'); // /home (normal routes have priority)
$url = route('about'); // /en/about (current locale)

// Get specific locales...
// This is most useful if you want to generate a URL to switch language.
$url = route('about', [], true, 'en'); // /en/about
$url = route('about', [], true, 'nl'); // /nl/about

// You could also do this, but it kinda defeats the purpose...
$url = route('en.about'); // /en/about
$url = route('en.about', [], true, 'nl'); // /nl/about

return redirect()->route('home'); // non-localized route, redirects to /home
return redirect()->route('about'); // localized route, redirects to /en/about (current locale)

return redirect(route('about', [], true, 'nl')); // localized route, redirects to /nl/about

$current = \Route::localizedUrl(); // /en/books/en-slug
$en = \Route::localizedUrl('en'); // /en/books/en-slug
$nl = \Route::localizedUrl('nl'); // /nl/books/nl-slug

use mPhpMaster\Translatable\ProvidesRouteParameters;
use Illuminate\Database\Eloquent\Model;

class Book extends Model implements ProvidesRouteParameters
{
    public function getRouteParameters($locale = null)
    {
        return [
            $this->id,
            $this->getSlug($locale) // Add this method yourself of course :)
        ];
    }
}

$current = \Route::localizedUrl(); // /en/books/en-slug
$en = \Route::localizedUrl('en'); // /en/books/en-slug
$nl = \Route::localizedUrl('nl'); // /nl/books/nl-slug

$nl = \Route::localizedUrl('nl'); // Wrong: /nl/books/en-slug
$nl = \Route::localizedUrl('nl', [$book->getSlug('nl')]); // Right: /nl/books/nl-slug

$signedUrl = URL::signedRoute('reset.password', ['user' => $id], now()->addMinutes(30));

$signedUrl = URL::signedRoute($name, $parameters, $expiration, true, 'nl');

// lang/nl/routes.php
return [
    'about' => 'over',
    'us' => 'ons',
];

Route::localized(function () {

    Route::get(Lang::uri('about/us'), AboutController::class.'@index')
        ->name('about.us');

});

class Book extends \Illuminate\Database\Eloquent\Model
{
    public function getRouteKey()
    {
        $slugs = [
            'en' => 'en-slug',
            'nl' => 'nl-slug',
        ];

        return $slugs[app()->getLocale()];
    }
}

Route::localized(function () {

    Route::get('books/{book}', BooksController::class.'@show')
        ->name('books.show');

});

app()->setLocale('en');
app()->getLocale(); // 'en'

$book = new Book;

$url = route('books.show', [$book]); // /en/books/en-slug
$url = route('books.show', [$book], true, 'nl'); // /nl/books/nl-slug

public function resolveRouteBinding($value)
{
    // Perform the logic to find the given slug in the database...
    return $this->where('slug->'.app()->getLocale(), $value)->firstOrFail();
}
bash
php artisan vendor:publish --provider="mPhpMaster\Translatable\LocalizedRoutesServiceProvider" --tag="config"

resources
 ??? lang
      ??? en
      ?    ??? routes.php
      ??? nl
           ??? routes.php
bash
php artisan route:cache