tikweb / laravel-translation-manager
管理 Laravel 翻译
Requires
- php: >=7
- illuminate/support: 5.5.x|5.6.x|5.7.x|5.8.x
- illuminate/translation: 5.5.x|5.6.x|5.7.x|5.8.x
- symfony/finder: ~3.0|~4.0
- tanmuhittin/laravel-google-translate: ^0.11.0
This package is not auto-updated.
Last update: 2024-09-20 09:03:13 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.
- Approval option added.
- Unapproved tab added.
- Pagination option added.
- Storing every file path where this key is used.
- Add Search functionility.
- Individual tab for each lang that only show the empty one.
- Store previous 5 logs.
- Store last update find key in session
这样,翻译可以保存在 git 历史记录中,并且在生产环境中不会引入任何开销。
安装
在您的 composer.json 中要求此包,并运行 composer update(或直接运行 composer require Tikweb/laravel-translation-manager)
composer require Tikweb/laravel-translation-manager
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组
'Tikweb\TranslationManager\ManagerServiceProvider',
您需要为此包运行迁移
$ php artisan vendor:publish --provider="Tikweb\TranslationManager\ManagerServiceProvider" --tag=migrations
$ php artisan migrate
您需要发布此包的配置文件。这将添加 config/translation-manager.php 文件,您可以在其中配置此包。
$ php artisan vendor:publish --provider="Tikweb\TranslationManager\ManagerServiceProvider" --tag=config
为了编辑默认模板,还需要发布视图。视图将放置在 resources/views/vendor/translation-manager。
$ php artisan vendor:publish --provider="Tikweb\TranslationManager\ManagerServiceProvider" --tag=views
路由已在 ServiceProvider 中添加。您可以在配置中设置路由的分组参数。您可以更改前缀或路由的过滤器/中间件。如果需要完全自定义,您可以扩展 ServiceProvider 并覆盖 map() 函数。
此示例将使翻译管理器在 http://yourdomain.com/translations 上可用
如果您想使用 Google Translate API 进行自动翻译
php artisan vendor:publish --provider=Tanmuhittin\LaravelGoogleTranslate\LaravelGoogleTranslateServiceProvider
编辑 config/laravel_google_translate.php 并添加您的 Google Translate API 密钥。
php artisan config:cache
现在您可以使用自动翻译特性了
使用方法
网页界面
当您通过按钮或命令导入翻译后,您可以在网页界面(通过您定义的控制器中的 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>
例如,当您有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',
'Tikweb\TranslationManager\TranslationServiceProvider',
这将扩展翻译器,每当找不到键时,都会创建一个新的数据库条目,这样您就必须访问使用它们的页面。这样,它们就会在Web界面中显示出来,可以编辑并在之后导出。您不应该在生产环境中使用此功能,仅用于开发中翻译视图,然后只需切换回来。