dongrim/laravel-localization

为 Laravel 提供简单的本地化

v1.0.1 2022-07-11 12:24 UTC

This package is auto-updated.

Last update: 2024-09-11 17:30:51 UTC


README

为 Laravel 提供简单的 i18n 本地化。

该软件包提供以下功能

  • 从浏览器检测语言
  • 智能重定向(将区域设置保存到会话中)
  • 智能路由(只定义一次路由,无论使用多少种语言)
  • 可选隐藏 URL 中的默认区域设置

目录

Laravel 兼容性

安装

通过 composer 安装软件包: composer require dongrim/laravel-localization

配置文件

为了编辑默认配置,您可以执行

php artisan vendor:publish --provider="Dongrim\LaravelLocalization\LaravelLocalizationServiceProvider"

之后,将创建 config/localization.php

配置选项如下

  • useAcceptLanguageHeader 如果为真,则自动从浏览器检测语言。
  • hideDefaultLocaleInURL 如果为真,则不在 URL 中显示默认区域设置。
  • driver 支持两种驱动程序来访问区域设置的列表(默认:配置文件)
    • 配置文件 config/localization.php
    • 数据库
  • supportedLocales 应用程序的语言(默认:英语 & 西班牙语)。
  • localesMapping 重命名 URL 区域设置。

注册中间件

您可以在 app/Http/Kernel.php 文件中注册软件包中间件

<?php namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {
    /**
    * The application's route middleware.
    *
    * @var array
    */
    protected $routeMiddleware = [
        /**** OTHER MIDDLEWARE ****/
        'localize' => \Dongrim\LaravelLocalization\Middleware\LocalizationMiddleware::class,
    ];
}

使用

将以下内容添加到您的路由文件中

// routes/web.php

Route::group([
    'prefix' => Localization::prefix(),
    'middleware'=>['localize']
], function(){
	/** ADD ALL LOCALIZED ROUTES INSIDE THIS GROUP **/
	Route::get('/', function(){
		return View::make('welcome');
	})->name('welcome');

    Route::get('test',function(){
		return View::make('test');
	})->name('test');
});

/** OTHER PAGES THAT SHOULD NOT BE LOCALIZED **/

本地化数据库

如果您想从数据库中获取区域设置列表,请更改 config/localization.php 。

  • 指定驱动程序
  • 设置模型命名空间
  • 设置区域键。然后在负责此列表的模型中
  • trait Dongrim\LaravelLocalization\Traits\Localizable

例如

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Dongrim\LaravelLocalization\Traits\Localizable;
use Dongrim\LaravelLocalization\Contracts\Localization as LocalizationContract;

class Localization extends Model implements LocalizationContract
{
    use Localizable;
}

推荐

使用命名路由以更轻松地访问 URL 本地化。

<a href="route('welcome')">Welcome</a>
<a href="route('test')">Test</a>

除了默认区域设置之外的语言将自动添加到 URL 中

// when current locale en and default locale en

    http://site.com/
    http://site.com/test

// when current locale es and default locale en 

    http://site.com/es
    http://site.com/es/test  

辅助工具

此软件包包含辅助工具。

区域设置集合

所有可用区域设置的列表

<ul>
    @foreach(locales() as $locale)
     {{ $locale }}
    @endforeach
</ul>

默认区域设置

当您设置 useAcceptLanguageHeader = true 时,要查找默认语言,您需要使用

@dump(default_locale())

缓存路由

要缓存您的路由,请使用

php artisan route:clear