chipinside / laravel-translation-manager
管理 Laravel 翻译
Requires
- php: >=8.2
- ext-json: *
- illuminate/database: ^8|^9|^10|^11|^12
- illuminate/support: ^8|^9|^10|^11|^12
- illuminate/translation: ^8|^9|^10|^11|^12
- symfony/finder: ^5|^6|^7
Requires (Dev)
- orchestra/testbench: ^6|^7
Suggests
- tanmuhittin/laravel-google-translate: If you want to translate using Google API
- v0.16.1
- v0.16.0
- v0.15.2
- v0.15.1
- v0.15.0
- v0.14.2
- v0.14.1
- v0.14.0
- v0.13.1
- v0.13.0
- v0.12.1
- v0.12.0
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.1
- v0.10.0
- v0.9.0
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.2
- v0.7.1
- v0.7.0
- dev-master / 0.6.x-dev
- v0.6.6
- v0.6.5
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.10
- v0.5.9
- v0.5.8
- v0.5.7
- v0.5.6
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.0
- v0.2.9
- v0.2.8
- v0.2.7
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
This package is auto-updated.
Last update: 2024-09-28 18:28:50 UTC
README
这是一个用于管理 Laravel 翻译文件的包。它不会替代翻译系统,只是将 php 文件导入数据库并可通过网页界面进行编辑。工作流程如下:
- Import translations: Read all translation files and save them in the database
- Find all translations in php/twig sources
- Optionally: Listen to missing translation with the custom Translator
- Translate all keys through the webinterface
- Export: Write all translations back to the translation files.
这样,翻译可以保存到 git 历史记录中,且不会在生产环境中引入任何开销。
安装
在您的 composer.json 中添加此包并运行 composer update(或直接运行 composer require chipinside/laravel-translation-manager
)
composer require chipinside/laravel-translation-manager
您需要为此包运行迁移。
php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=translations-migrations
php artisan migrate
您需要发布此包的配置文件。这将添加 config/translation-manager.php
文件,您可以在其中配置此包。
php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=translations-config
为了编辑默认模板,还需要发布视图。视图将被放置在 resources/views/vendor/translation-manager
。
php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=translations-views
路由在 ServiceProvider 中添加。您可以在配置中设置路由的组参数。您可以更改前缀或过滤/中间件。如果您想进行完全自定义,您可以扩展 ServiceProvider 并重写 map()
函数。
此示例将使翻译管理器在 http://yourdomain.com/translations
可用
如果您想使用 Google 翻译 API 进行自动翻译,请安装 https://github.com/tanmuhittin/laravel-google-translate
composer require tanmuhittin/laravel-google-translate
php artisan vendor:publish --provider=Tanmuhittin\LaravelGoogleTranslate\LaravelGoogleTranslateServiceProvider
用法
网页界面
当您通过按钮或命令导入翻译后,您可以在网页界面(在您通过控制器定义的 URL 上)查看它们。您可以点击一个翻译,并弹出一个编辑字段。只需点击保存,它就会保存 :) 当翻译尚未在不同的区域创建时,您也可以直接编辑它来创建它。
您还可以使用网页界面的按钮导入/导出翻译。对于发布翻译,请确保您的应用程序可以写入语言目录。
您还可以使用以下命令。
导入命令
导入命令将在 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>
例如,如果您有两个区域(en/nl),则 php artisan translations:export reminders
将写入 app/lang/en/reminders.php
和 app/lang/nl/reminders.php
要将翻译字符串作为键导出为JSON文件,请使用--json
(或-J
)选项:php artisan translations:export --json
。这将导入来自_json组的所有条目。
清理命令
清理命令会搜索所有为NULL的翻译并删除它们,以便您的界面更加简洁。注意:空翻译永远不会被导出。
php artisan translations:clean
重置命令
重置命令会简单地清除数据库中的所有翻译,以便您可以从头开始(通过新的导入)。在执行此操作之前,请确保导出您的工作(如果需要的话)。
php artisan translations:reset
检测缺失的翻译
大多数翻译可以通过使用查找命令(见上方)找到,但对于具有动态键(变量/自动表单等)的情况,监听缺失的翻译可能很有帮助。要检测缺失的翻译,我们可以将Laravel TranslationServiceProvider替换为自定义提供程序。在您的config/app.php
中,取消注释原始TranslationServiceProvider并添加此包中的提供程序
//'Illuminate\Translation\TranslationServiceProvider',
'Barryvdh\TranslationManager\TranslationServiceProvider',
这将扩展翻译器,并在找不到键时创建新的数据库条目,这样您就必须访问使用它们的页面。这样它就会显示在web界面中,可以编辑,然后可以导出。您不应该在生产环境中使用此功能,只应在开发中翻译视图,然后只需切换回。
待办事项
此包仍然是alpha版本。待办事项列表中的几件事情
- Add locales/groups via webinterface
- Improve webinterface (more selection/filtering, behavior of popup after save etc)
- Seed existing languages (https://github.com/caouecs/Laravel-lang)
- Suggestions are welcome :)