vsamovarov/laravel-localizer

为 Laravel 提供非常简单的本地化

dev-master 2021-01-04 10:31 UTC

This package is auto-updated.

Last update: 2024-09-04 17:56:50 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

简单的 Laravel 本地化。本地化值从 URL 中提取。

  • 可翻译路由
  • 可以在 URL 中隐藏默认的本地化
  • 支持缓存
  • 支持命名路由

安装

使用 Composer 安装

composer require vsamovarov/laravel-localizer

... 选项

php artisan vendor:publish --provider="VSamovarov\LaravelLocalizer\LocalizerServiceProvider"

用法

路由分组

Laravel Localizator 为每个本地化创建路由分组,并预设 'prefix' 和 'as' 参数。

使用宏,使语法类似于路由组声明。

例如

routes/web.php

Route::localizedGroup([],
    function () {
        Route::get('/','Controller@metod')->name('home');
        Route::get('article/about','Controller@metod')->name('about');
    }
);

将为预定义的语言 en, ru, uk 创建路由

默认情况下,URL 中的语言前缀会被隐藏。

可以通过配置文件中的 hideDefaultLocaleInURL 选项来改变行为。

那么将创建这样的路由

在主页上的额外路由,重复了默认本地化的页面

翻译后的路由

您可以将您的路由进行翻译。例如...

http://example.com/en/article/about, http://example.com/ru/statya/o-nas(俄语)

... 将重定向到同一控制器/视图。

需要为相应的本地化创建翻译文件,默认为 routes.php,在其中为每个 URL 的 设置翻译。

如果未找到匹配,则段将保持不变。

例如

// resources/lang/ru/routes.php
return [
     "article" => "statya",
     "about" => "o-nas" ,
];
// routes/web.php
Route::localizedGroup([],
    function () {
        Route::get('article/about','Controller@metod')->name('about');
    }
);

将为预定义的语言 en, ru 创建路由

请注意,不需要任何额外的代码来翻译路由。

命名路由

命名路由可以通过辅助函数方便地获取

$url = t_route('about');
$url = t_route('article', ['id'=>'24']); //с параметрами
$url = t_route('article', [],'ru'); //с указаной локалью

这简化了需要指定复杂前缀的构造

// $url = t_route('article', ['id'=>'24']);
$url = route(app('localizer')->getNamePrefix() . app()->getLocale() . '.' .'article', ['id'=>'24']);

配置

库的配置位于配置文件 'config/laravel-localizer.php' 中

本地化在 'supportedLocales' 部分,通过数组定义。例如

    'supportedLocales' => [
        'uk'          => ['name' => 'Ukrainian', 'script' => 'Cyrl', 'native' => 'українська', 'regional' => 'uk_UA'],
        'en'          => ['name' => 'English', 'script' => 'Latn', 'native' => 'English', 'regional' => 'en_GB'],
        'ru'          => ['name' => 'Russian', 'script' => 'Cyrl', 'native' => 'русский', 'regional' => 'ru_RU'],
    ],

数组中的第一个将被设置为默认语言。

中间件

应用程序的本地化通过 'LocalizerMiddleware' 中间件按 URL 确定。

中间件会自动安装到 'web' 组

不需要对代码进行任何额外操作.

许可

MIT 许可证(MIT)。请参阅 许可文件 获取更多信息。