danilovl / translator-bundle
Symfony 扩展包,提供系统翻译的简单管理。
Requires
- php: ^8.3
- doctrine/doctrine-bundle: ^2.11
- doctrine/orm: ^2.18
- easycorp/easyadmin-bundle: ^4.9
- symfony/console: ^7.0
- symfony/event-dispatcher: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/http-kernel: ^7.0
- symfony/translation: ^7.0
- symfony/yaml: ^7.0
- twig/twig: ^3.0
Requires (Dev)
- phpunit/phpunit: ^10.2
README
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
中可用的参数 locale
和 domain
。
您不能使用提供的参数以外的任何参数。
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|dump
、locale
、domain
。
默认情况下 mode
是 migrate
,dump
显示 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 生成 update
、delete
、insert
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
通过比较当前文件与数据库生成 update
、delete
、insert
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|dotNested
、mode
,值为 migrate|dump
、locale
、domain
。
默认情况下 strategy
是 flatten
。
默认情况下 mode
是 migrate
,dump
显示 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 许可证。