danilovl/translator-bundle

Symfony 扩展包,提供系统翻译的简单管理。

安装: 32

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 1

开放问题: 0

类型:symfony-bundle

v0.1.4 2024-08-16 19:17 UTC

This package is auto-updated.

Last update: 2024-09-16 19:27:42 UTC


README

phpunit downloads latest Stable Version license

TranslatorBundle

关于

Symfony 扩展包提供了一种简单的方式来管理系统翻译。

功能

  • 将 YAML 翻译保存到数据库表中。
  • 生成缓存翻译的命令。
  • 将翻译从 YAML 同步到数据库表的命令。
  • 将翻译从数据库表同步到 YAML 的命令。
  • EasyAdmin 接口来管理翻译。
  • 当在管理面板中更改翻译时,自动刷新缓存。

要求

  • PHP 8.3 或更高版本
  • Symfony 7.0 或更高版本
  • MySQL
  • EasyAdmin
  • 仅支持 YAML 翻译文件扩展名和 MySQL 数据库。

1. 安装

使用 Composer 安装 danilovl/translator-bundle

composer require danilovl/translator-bundle

如果未自动添加,请将 TranslatorBundle 添加到您的应用程序的扩展包中

<?php
// config/bundles.php

return [
    // ...
    Danilovl\TranslatorBundle\TranslatorBundle::class => ['all' => true]
];

2. 配置

2.1 扩展包配置选项

在您的 packages 文件夹中创建 danilovl_translator.yaml

danilovl_translator:
  enabled: true
  enabledAutoAdminRefreshCache: true
  locale: [en, ru]
  domain: [messages,validators]

2.2 Doctrine 实体映射

packages 文件夹中的 doctrine.yaml 中添加实体映射。

orm:
  auto_generate_proxy_classes: '%kernel.debug%'
  mappings:
    Danilovl\TranslatorBundle:
      is_bundle: false
      type: attribute
      dir: "%kernel.project_dir%/vendor/danilovl/translator-bundle/src/Entity/"
      prefix: 'Danilovl\TranslatorBundle\Entity'

然后通过命令更新您的数据库模式。

php bin/console doctrine:schema:update --force
php bin/console doctrine:schema:update --dump-sql

2.2 Easy admin

将路由添加到您的项目路由 routes.yaml

_danilovl_translator_admin_dashboard:
  resource: "@TranslatorBundle/Resources/config/routing.yaml"

如果有 URL 前缀 /translator 存在于项目中。

_danilovl_translator_admin_dashboard:
  prefix:   /danilovl
  resource: "@TranslatorBundle/Resources/config/routing.yaml"

管理界面将在 URL /translator/admin 上可用。

3. 使用命令

配置 danilovl_translator 中可用的参数 localedomain

您不能使用提供的参数以外的任何参数。

3.1 生成翻译

生成缓存翻译。

php bin/console danilovl:translator:generate-translation
php bin/console danilovl:translator:generate-translation --locale=en
php bin/console danilovl:translator:generate-translation --locale=en --locale=ru

3.2 将翻译迁移到数据库

删除数据库中的所有翻译并插入新的。

命令有参数 strategy,值为 full|only-new|git-diff|database-diff

命令有选项 mode,值为 migrate|dumplocaledomain

默认情况下 modemigratedump 显示 SQL 查询。

php bin/console danilovl:translator:migration-to-database full

php bin/console danilovl:translator:migration-to-database full migrate
php bin/console danilovl:translator:migration-to-database full migrate --locale=en
php bin/console danilovl:translator:migration-to-database full --locale=en
php bin/console danilovl:translator:migration-to-database full --locale=en --domain=messages
php bin/console danilovl:translator:migration-to-database full --domain=messages

php bin/console danilovl:translator:migration-to-database full --mode=dump
php bin/console danilovl:translator:migration-to-database full --mode=dump --locale=en
php bin/console danilovl:translator:migration-to-database full --mode=dump --domain=messages
php bin/console danilovl:translator:migration-to-database full --mode=dump --locale=en --locale=ru --domain=messages

仅插入数据库中尚不存在的新翻译。

php bin/console danilovl:translator:migration-to-database only-new

php bin/console danilovl:translator:migration-to-database only-new --locale=en
php bin/console danilovl:translator:migration-to-database only-new --locale=en --locale=ru --domain=messages
php bin/console danilovl:translator:migration-to-database only-new --domain=messages

php bin/console danilovl:translator:migration-to-database only-new --mode=dump
php bin/console danilovl:translator:migration-to-database only-new --mode=dump --locale=en
php bin/console danilovl:translator:migration-to-database only-new --mode=dump --locale=en -domain=messages

通过 git diff 生成 updatedeleteinsert SQL 查询。比较当前文件与最后一个版本。

php bin/console danilovl:translator:migration-to-database git-diff
 
php bin/console danilovl:translator:migration-to-database git-diff --locale=en
php bin/console danilovl:translator:migration-to-database git-diff --locale=en --domain=messages

php bin/console danilovl:translator:migration-to-database git-diff --mode=dump
php bin/console danilovl:translator:migration-to-database git-diff --locale=en

通过比较当前文件与数据库生成 updatedeleteinsert SQL 查询。

php bin/console danilovl:translator:migration-to-database database-diff
 
php bin/console danilovl:translator:migration-to-database database-diff --locale=en
php bin/console danilovl:translator:migration-to-database database-diff --locale=en --domain=messages

php bin/console danilovl:translator:migration-to-database database-diff --mode=dump
php bin/console danilovl:translator:migration-to-database database-diff --locale=en

3.3 从数据库迁移翻译到文件

生成翻译 YAML 文件。

命令有选项 strategy,值为 flatten|dotNestedmode,值为 migrate|dumplocaledomain

默认情况下 strategyflatten

默认情况下 modemigratedump 显示 yaml 内容。

php bin/console danilovl:translator:migration-from-database
php bin/console danilovl:translator:migration-from-database --strategy=flatten
php bin/console danilovl:translator:migration-from-database --strategy=dotNested

php bin/console danilovl:translator:migration-from-database --strategy=flatten --locale=en
php bin/console danilovl:translator:migration-from-database --strategy=flatten --locale=en --locale=ru --domain=messages
php bin/console danilovl:translator:migration-from-database --strategy=flatten --domain=messages

php bin/console danilovl:translator:migration-from-database --strategy=flatten --mode=dump
php bin/console danilovl:translator:migration-from-database --strategy=dotNested --mode=dump --locale=en
php bin/console danilovl:translator:migration-from-database --strategy=dotNested --mode=dump --locale=en -domain=messages

3.4 更改翻译文件格式

格式 flatten

app.text.common.A: A
app.text.common.B: B
app.text.common.C: C
php bin/console danilovl:translator:transform-to-format messages.en.yaml flatten

格式 dotNested

app:
  text:
    common:
      A: A
      B: B
      C: C
php bin/console danilovl:translator:transform-to-format messages.en.yaml dotNested

3.5 更改翻译文件顺序

顺序 ASC

app.text.common.B: B
app.text.common.A: A
app.text.common.C: C
php bin/console danilovl:translator:transform-to-format messages.en.yaml flatten ASC

结果

app.text.common.A: A
app.text.common.B: B
app.text.common.C: C

顺序 DESC

app.text.common.B: B
app.text.common.A: A
app.text.common.C: C
php bin/console danilovl:translator:transform-to-format messages.en.yaml flatten DESC

结果

app.text.common.C: C
app.text.common.B: B
app.text.common.A: A

许可证

TranslatorBundle 是开源软件,采用 MIT 许可证