netcore/translations

Laravel 数据库存储翻译,方便CRUD操作

v1.0.50 2018-09-05 17:49 UTC

README

默认情况下,Laravel的翻译保存在resources文件夹下的语言文件中。这使得标准的CRUD操作非常繁琐,因此我们决定最好将所有翻译存储在数据库中。这样做的好处有

  1. 方便的CRUD操作和优秀的后台UI
  2. 如果编辑了文件系统中的语言文件,可以避免GIT冲突
  3. 性能仍然很出色。数据库只访问一次,然后翻译被缓存
  4. 可以将翻译导入/导出为Excel文件,以便存储在Google表格或本地

screenshot

安装

使用composer安装此包

composer require netcore/translations --dev

将我们的服务提供者添加到config/app.php文件中的"providers"数组

\Netcore\Translator\ServiceProvider::class

运行迁移以创建"translations"和"languages"表

php artisan migrate

将路由添加到Src/Route/RouteServiceProvider.php。选择允许管理员编辑翻译的中介

Route::group([
    'middleware' => ['web', 'isAdmin'],
    'namespace'  => null,
    'prefix'     => 'admin',
    'as'         => 'admin.'
], function (Router $router) {
    \Netcore\Translator\Router::adminRoutes($router);
});

该包使用缓存标签。您可以查看Laravel文档以了解更多有关缓存标签的信息。https://laravel.net.cn/docs/5.4/cache#cache-tags

其中一个选项是使用redis。

首先,通过运行以下composer命令安装redis包。

composer require predis/predis

然后您需要将.env文件中的缓存驱动程序更改为redis,如下所示

CACHE_DRIVER=redis

发布配置文件以定义您的Admin布局以扩展,翻译ACP UI等

php artisan vendor:publish --tag=config

如何从实时服务器下载翻译到开发环境

我们经常希望从实时服务器获取翻译的精确副本,无论是到开发环境还是我们的本地服务器。为了做到这一点,我们必须在Src/Route/RouteServiceProvider.php中公开API路由

Route::group([
    'middleware' => ['api'],
    'namespace'  => null,
    'prefix'     => 'api',
    'as'         => 'api.'
], function ($router) {
    Router::apiRoutes($router);
});

之后,将此.env变量指向您的实时服务器

NETCORE_TRANSLATIONS_DOWNLOAD_FROM=https://project.eu/api/translations/index

然后在您的开发或本地机器上运行 php artisan translations:download

是否经过实战测试?

此包已经在许多Netcore项目中经过实战测试。我们终于厌倦了将代码复制到新项目中,因此代码已被提取为可安装的包。

未来计划

  1. 单元测试
  2. 为不同的Laravel版本创建不同的分支
  3. 使用Vue.js重写ACP UI