hadefication/polyglot

扩展 Laravel 翻译至 JavaScript。

1.0.8 2018-09-24 08:59 UTC

This package is auto-updated.

Last update: 2024-09-15 02:43:08 UTC


README

Polyglot 创建了一个 blade 指令 @polyglot,您可以将它添加到主 blade 文件中。这将导出一个全局变量 Polyglot,其中存储了您应用程序当前区域设置的翻译键。根对象键基于 Polyglot 配置文件中定义的翻译文件。

安装

  1. composer require hadefication/polyglot
  2. Hadefication\Polyglot\PolyglotServiceProvider::class 添加到您的 config/app.php 中的 providers 数组。对于 5.5 版本及以上,由于引入了包自动发现,此步骤不是必需的。
  3. @polyglot blade 指令添加到您的 master blade 文件中,在 JavaScript 文件上方(可能是在头部或 body 标签结束之前)。

使用方法

安装后,该包将公开一个 Polyglot 变量,其中存储了您当前区域设置的翻译键。

还公开了一个方便的 JavaScript 辅助函数,您可以使用它来翻译翻译键,就像我们在 Laravel 中做的那样。不小心也将其命名为 trans。下面有关于 trans 辅助函数的示例。

示例

无参数

trans('auth.failed');

// Should return the equivalent translation of the supplied key

带参数的翻译

trans('validation.required', {attribute: 'email'});

// Should return the equivalent translation of the supplied key including the supplied params

配置

还包含一个配置文件,用于自定义要加载到 Polyglot 的翻译文件。要发布包含的配置文件,请运行 php artisan vendor:publish

Artisan 命令

还提供了一个 artisan 命令,它将导出一个 JavaScript 文件,其中包含所有收集到的翻译键,包括可导入的路由方法辅助函数。在采用此方法时,不需要包括 @polyglot blade 指令。

php artisan polyglot:dump

上述命令应在您的 /resources/assets/js 目录中生成一个名为 polyglot.js 的 JavaScript 文件。您也可以使用 --path=/path/to/where/the/dump/file/will/be/exported 将文件导出到其他位置。命令应如下所示:php artisan polyglot:dump --path=./resources/assets/js/vendor/polyglot.js

// ES6
import './path/to/polyglot';

// Old School
require('./path/to/polyglot.js');

上述代码应添加到您的 bootstrap 文件中或主 JavaScript 文件中(如果您有一个自定义的入口点)。

Laravel Mix

您还可以通过安装一个 webpack 插件来自动化导出过程,该插件在每次构建时运行简单的 artisan 命令,以确保您在构建中包含了最新的翻译文件。请按照以下步骤操作:

  1. 安装 webpack shell pluginnpm install --save-dev webpack-shell-pluginyarn add --dev webpack-shell-plugin
  2. 将插件包含到您的 webpack.mix.js 文件中
const mix = require('laravel-mix');
const WebpackShellPlugin = require('webpack-shell-plugin');

mix.webpackConfig({
    plugins: [
        new WebpackShellPlugin({ onBuildStart: ['php artisan polyglot:dump'], onBuildEnd: [] }),
    ]
});

....
  1. 完成!这将确保在构建开始时运行 php artisan polyglot:dump,从而获取最新的翻译文件。