rkgrep/locales

Laravel 的地区管理包。

v0.1 2015-06-29 07:23 UTC

This package is auto-updated.

Last update: 2024-09-18 17:42:59 UTC


README

一个缺失的地区管理包。

安装

您可以使用 composer 安装 Locales。目前只有 *dev-master * 版本可用。

composer require rkgrep/locales:dev-master@dev

在您的应用程序配置中启用服务提供者(app.php

// ...

rkgrep\Locales\LocaleServiceProvider::class

// ...

配置

基本地区配置位于 locales.php 配置文件中。您可以使用 artisan vendor:publish 命令将默认配置复制到您的应用程序配置路径。

Locales 目前支持 3 种存储配置地区的方式:配置、数据库和 Eloquent。

将首选方式设置到 driver 键。

// ...

'driver' => 'database',

// ...

配置驱动

配置驱动使用 locales.php 来列出可用的地区。默认配置了英文地区。

每个地区应该有一个唯一的键来定义其在应用程序中使用的主体代码类型。例如,一个 ISO 639‑1 两位字母代码。其他地区代码可以在 locales 数组中定义。在 names 数组中定义人类可读的地区名称,其中建议始终存在 nativei18n

// ...

'en' => [
    'locales' => ['en', 'en_US', 'en-US', 'en-us', 'eng', 'English', 1033],
    'names' => [
        'native' => 'English',
        'i18n' => 'English (US)'
    ],
],
'ru' => [
    'locales' => ['ru', 'ru_RU', 'ru-RU', 'ru-ru', 'rus', 'Russian', 1049],
    'names' => [
        'native' => 'Русский',
        'i18n' => 'Russian'
    ],
],

// ...

数据库驱动

数据库驱动使用一个表来存储地区及其值。

表名在 locales.phptable 键中配置。

// ...

'table' => 'locales',

// ...

您可以使用 artisan locales:table 命令向您的应用程序添加一个基本迁移。它使用配置的表名,因此您不需要检查它。请注意,该命令不会导出 composer 自动加载,因此您应该运行 composer dump-autoload 以使迁移工作。

基本模式不使用自增字段。相反,它有一个 code 列作为主键。

Eloquent 驱动

Eloquent 驱动返回一个地区模型实例,因此它可以进一步通过关系连接到其他模型,并像任何其他模型一样进行定制。

通过在 locales.php 中提供 model 键来更改默认模型类。

// ...

'model' => \rkgrep\Locales\EloquentLocale::class,

// ...

用法

服务提供者在您的应用程序中存储一个 Manager 到 locales 服务键。您可以通过调用 app('locales') 助手在任何地方获取它。

检索活动地区

活动地区通过应用程序的 getLocale() 方法的调用解析。如果提供的键不可用,则管理器尝试获取后备地区。

$locale = app('locales')->active(); // A Locale contract or null is returned.

您还可以使用 rkgrep\Locales\Contracts\Locale 类型提示通过依赖注入获取活动地区。

use rkgrep\Locales\Contracts\Locale;

// ...

public function getIndex(Locale $locale)
{
    // Your controller
}

通过代码检索地区

使用 retrieveByCode 方法获取一个地区。

$english = app('locales')->retrieveByCode('en');

检索地区列表

使用 getList 方法获取一个由代码或名称键控的列表。

$codes = app('locales')->getList(); // ['en' => 'en', 'ru' => 'ru]
$native = app('locales')->getList('names.native'); // ['en' => 'English (US)', 'ru' => 'Русский']

使用地区

每个驱动程序都返回一个 rkgrep\Locales\Contracts\Locale 接口实现。

许可证

Locales 包是一个开源软件,根据 MIT 许可证 发布。