webo3 / laravel-translator

此包添加了 artisan 命令来扫描/导出/导入翻译。

dev-master / 1.0.x-dev 2021-10-02 17:53 UTC

This package is auto-updated.

Last update: 2024-09-29 05:28:22 UTC


README

该包通过 artisan 命令帮助您管理翻译。在 Laravel >= 5.5 中启用自动发现。

对于 Laravel < 5.5

您需要在 app.php 中注册提供者

webO3\Translator\Providers\TranslatorServiceProvider::class,

配置

您需要指定您希望使用扩展来管理的语言。

要创建 config/webo3-translator.php 文件,请使用以下命令

php artisan vendor:publish --provider=webO3\\Translator\\Providers\\TranslatorServiceProvider --tag=config

扫描和提取翻译

该包通过扫描源代码中的翻译功能 __() 来工作。

翻译:scan 命令会扫描 app 和 resources 文件夹中的文件中的 __() 函数,以下扩展名:*.php, *.js, *.vue。然后,它将为每个启用的语言创建一个文件到 resources/lang/{language}.json,其中包含所有翻译键/值对。

默认情况下,Laravel 会加载 JSON 文件来翻译源代码中使用的字符串。

要扫描和提取翻译,请使用以下命令

php artisan translations:scan

导出翻译

为了帮助翻译,我们使用一个脚本,将所有 JSON 内容导出为 .csv 文件,然后我们可以将其共享在 Excel 或其原始 CSV 格式中。在文件中,我们将有多个列,一个用于键,一个用于语言。键是我们 __() 函数中使用的字符串。如果翻译不存在,它将使用该键。以下是一个示例,如果我们的配置文件中启用了法语和英语语言。

当我们向翻译人员发送此文件时,我们需要告诉他们不要触摸键列,这是我们的翻译参考。如果键中存在错误,无关紧要,只需在语言列中更正即可。

要创建 translations.csv 文件,请使用以下命令

php artisan translations:export

导入翻译

现在我们已经翻译了 CSV 文件,将其放回并使用以下命令导入

php artisan translations:import

在 Vue 中使用翻译文件

为了能够在 Vue 中使用 JSON 文件,我们需要添加一个 NPM 包。(vue-i18n)

npm install vue-i18n --save-dev

在 app.js 文件中添加以下内容。

// Load translations
let text_fr = require('../lang/fr.json');
let text_en = require('../lang/en.json');

// Define the current locale
let locale = 'en';

// Init VueI18n
import VueI18n from 'vue-i18n';
Vue.use(VueI18n);
window.i18n = new VueI18n({
    locale: locale,
    silentTranslationWarn: true,
    messages: {
        "en": text_en,
        "fr": text_fr
    }
});

然后可以使用 VueI18n 使用函数 $t() 或 i18n.t() 来翻译我们的 VueJs 模板。

i18n.t('This is an example key.')

或者在 Vue 模板中

<a :title="$t('This is an example key.')">{{ $t('This is an example key.') }}</a>