codanux/multi-language

Repository files navigation

Latest Version on PackagistBuild StatusQuality ScoreTotal Downloads

You can install the package via composer:

composer require codanux/multi-language
php artisan vendor:publish --provider="Codanux\MultiLanguage\MultiLanguageServiceProvider"

To detect and change the locale of the application based on the request automatically:

config/multi-language.php

'middleware' => [
    'web' => [
        \Codanux\MultiLanguage\DetectRequestLocale::class
    ]
],
class Post extends Model // implements HasMedia
{
    use HasLanguage;
    // use InteractsWithMedia, MediaTrait { MediaTrait::getMedia insteadof InteractsWithMedia; }
}
Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->locale(); // added
});
Route::localeResource('post', 'PostController')->names('post');
or
Route::locale('post.index', 'PostController@index');
Route::locale('post.show', 'PostController@show');
Route::locale('post.create', 'PostController@create');
Route::locale('post.create', 'PostController@store')->method('POST');
Route::locale('post.edit', 'PostController@edit');
Route::locale('post.edit', 'PostController@update')->method('PUT');
Route::locale('post.destroy', 'PostController@destroy')->method('DELETE');


Route::locale('dasard', function () {
    return view('dasard');
})
->name('home');

Route::group(['localePrefix' => 'admin.prefix'], function (){

    Route::locale('admin.dasard', function () {
        return view('admin.dasard');
    });

});
routeLocalized('post.show', $post)

| Method    | URI           | Name          | Action                              |
|-----------|---------------|---------------|-------------------------------------|
| GET\|HEAD | posts/{post}  | en.post.show  | App\Http\Controllers\PostController@show |
| GET\|HEAD | tr/postlar/{post} | tr.post.show | App\Http\Controllers\PostController@show |
public function index()
{
    // locale scope
    $posts = (new Post())->newQuery()->locale()->get();
}

public function store(Request $request)
{
    $post = Post::create([
       'name' => 'Post en',
       'locale' => 'en',
   ]);

    Post::create([
       'name' => 'Post tr',
       'locale' => 'tr',
       'locale_slug' => 'post-1',
       'translation_of' => $post->translation_of
    ]);
    
    Post::localeSlug('post-1', 'tr')->first(); // Post tr
    
    Post::localeSlug('post-1', 'en')->first(); // Post en
}

public function show(Post $post)
{
    return view('post.show', compact('post'));
}
post.index
    <x-links component="jet-nav-link"></x-links>

post.show
    <x-links :translations=['post' => $post]></x-links>
    
    //category/{category}/posts/{post}

    // route model translations ['category' => $category, 'post => $post]
1. config/multi-language.php

'fortify' => [
    'routes' => true,
],

'jetstream' => [
    'routes' => true,
]

2. Default Router İgnore

class FortifyServiceProvider extends ServiceProvider
{
    public function register()
    {
        Fortify::ignoreRoutes();
    }
}

class JetstreamServiceProvider extends ServiceProvider
{
   public function register()
   {
       Jetstream::ignoreRoutes();
   }
}
composer test

Please see CHANGELOG for more information what has changed recently.

Please see CONTRIBUTING for details.

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

The MIT License (MIT). Please see License File for more information.

This package was generated using the Laravel Package Boilerplate.

About

Laravel Multi Language Package

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published