kelvinsouza/translate

Laravel 自动翻译

1.1.25 2020-11-12 20:39 UTC

README

该库使用 Google Translate API 和/或 AWS Translate API 来自动翻译请求的术语,并将它们记录在缓存(redis)中以供查询。该库还包括一个管理面板,您可以在其中更改自动翻译的术语。

安装

可以使用包管理器添加到 "require" 对象中安装此包

"require": {
    "kelvinsouza/translate": "dev-master"
}

或通过控制台

composer require kelvinsouza/translate

配置

在您的 config/app.php 文件中添加提供者和别名

...
Translate\Providers\TranslateProvider::class,


...
'Translate' => \Translate\Translate::class,

发布配置文件

php artisan vendor:publish --tag=config

发布视图

php artisan vendor:publish --tag=views

发布迁移

php artisan vendor:publish --tag=migrations

要管理翻译,只需在您的文件中添加路由即可。
您可以通过在路由文件中添加以下行来添加公开路由(当没有身份验证或验证时)

Route::get('/translate/manager/{translate_lang?}', '\Translate\Http\Controllers\TranslateManager@index');

如果要在之前验证访问,可以像以下示例中那样调用控制器

Route::get('/translate/manager/{translate_lang?}', function ($translate_lang=null) {
   if (! Auth::check()) return redirect('/auth/login');
   return app('\Translate\Http\Controllers\TranslateManager')->index($translate_lang);
});

您还可以使用 artisan 命令来搜索代码中的新术语,自动翻译术语或更新缓存。

搜索新术语

php artisan translate:update

翻译尚未自动翻译的术语

php artisan translate:auto {lang}

更新缓存

php artisan translate:sync

使用方法

要翻译术语,请调用 "_t(...)" 辅助函数

_t('Termo para tradução');

您可以在翻译中使用变量

_t('Olá {nome_usuario}', [$nome_usuario]);

要翻译 .js 文件,您需要在页面的 <head> 中添加以下行

<script src="/translate/js/{{ Translate::getLocale() }}"></script>

以及以下代码在一个 .js 文件或页面的 <head> 内部的 <script> 标签中

function _t(key) {
    if (typeof Lang != 'object' || typeof Lang[key] != 'string') return key;
    return Lang[key];
}

注意:在 .js 文件中对 _t() 函数的调用不会自动翻译术语。在这种情况下,您需要使用 Translate Manager 或 artisan 命令来定位并翻译术语。

许可

此存储库代码是开源软件,根据 MIT 许可证授权