addgod / laravel-translation-manager
管理 Laravel 翻译
Requires
- php: ^7.1.3|^8
- illuminate/support: ^5.5|^6|^7|^8|^9|^10
- illuminate/translation: ^5.5|^6|^7|^8|^9|^10
- symfony/finder: ^3|^4|^5|^6
Requires (Dev)
- orchestra/testbench: ~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0
- phpunit/phpunit: ~7.0|^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-05 16:08:38 UTC
README
这是一个翻译管理器,既可以替换 Laravel 内置的翻译管理器,使其在数据库中运行,也可以用于导出翻译文件,以便将它们提交到 Git。
目前,该工具没有网络界面,但即将推出。
安装
在 composer.json 中添加此包,并运行 composer update(或直接运行 composer require addgod/laravel-translation-manager
)
"addgod/laravel-translation-manager": "^1"
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组
'Addgod\TranslationManager\ManagerServiceProvider',
您需要为此包运行迁移
$ php artisan vendor:publish --provider="Addgod\TranslationManager\ManagerServiceProvider" --tag=migrations
$ php artisan migrate
您需要发布此包的配置文件。这将添加 config/translation-manager.php
文件,您可以在此配置此包。
$ php artisan vendor:publish --provider="Addgod\TranslationManager\ManagerServiceProvider" --tag=config
Laravel >= 5.2
默认情况下,配置文件仅包括 auth
中间件,但 Laravel 5.2 的最新更改使得只有在路由包括 web
中间件时才能访问会话变量。为了使此包在 Laravel 5.2 上运行,您必须将路由/中间件设置从默认的
'route' => [
'prefix' => 'translations',
'middleware' => 'auth',
],
改为
'route' => [
'prefix' => 'translations',
'middleware' => [
'web',
'auth',
],
],
注意: 这仅在 Laravel 5.2(及更高版本)中需要。
使用方法
网络界面
要使用此翻译管理器,您需要创建自己的网络界面。尽管网络界面即将推出。
导入命令
导入命令将在 app/lang 中搜索所有字符串并将其加载到数据库中,以便您轻松管理它们。
$ php artisan translations:import
来自 app/lang/locale.json 文件的翻译字符串将被导入到 _json 组。
注意:默认情况下,仅添加新字符串。保留数据库中已存在的翻译。如果您想用文件中的值替换所有值,请添加 --replace
(或 -R
)选项: php artisan translations:import --replace
在源代码中查找翻译
查找命令/按钮将在 app 目录中的所有 php/twig 文件中搜索,查看它们是否包含翻译函数,并尝试提取组/项名称。找到的键将被添加到数据库中,以便轻松翻译。这可以通过网络界面或 Artisan 命令完成。
$ php artisan translations:find
如果您的项目使用翻译字符串作为键,这些键将被存储到 _json 组。
导出命令
导出命令将数据库内容写回到 app/lang php 文件中。这将覆盖现有翻译并删除所有注释,因此在使用之前请务必备份您的数据。提供组名以定义您要发布的组。
$ php artisan translations:export <group>
例如,当您有 2 个区域(en/nl)时,运行 php artisan translations:export reminders
将写入 app/lang/en/reminders.php
和 app/lang/nl/reminders.php
要将翻译字符串作为键导出到 JSON 文件,请使用 --json
(或 -J
)选项: php artisan translations:import --json
。这将从 _json 组导入所有条目。
清理命令
清理命令将搜索所有 NULL 翻译并将其删除,以便您的界面更加整洁。注意:空翻译永远不会导出。
$ php artisan translations:clean
重置命令
重置命令简单地将数据库中的所有翻译清除,以便您可以从新导入开始(通过新导入)。在使用之前,请确保导出您的工作(如果需要的话)。
$ php artisan translations:reset
检测缺失的翻译
大多数翻译可以通过使用查找命令(见上方)找到,但在你有动态键(变量/自动表单等)的情况下,'监听'缺失的翻译可能会有所帮助。为了检测缺失的翻译,我们可以将 Laravel TranslationServiceProvider 替换为自定义提供者。在你的 config/app.php 文件中,注释掉原始的 TranslationServiceProvider,并添加此包中的提供者
//'Illuminate\Translation\TranslationServiceProvider',
'Addgod\TranslationManager\TranslationServiceProvider',
这将扩展翻译器,并在找不到密钥时创建新的数据库条目,这样你就可以访问使用它们的页面。这样它就会显示在网页界面中,可以被编辑,稍后导出。你不应该在生产环境中使用此功能,仅用于开发中翻译视图,然后只需切换回即可。
待办事项
此包仍在开发中,但将在网页界面完成时结束测试版。
- Add a webinterface
- Seed existing languages (https://github.com/caouecs/Laravel-lang)
- Suggestions are welcome :)