jorisvanw / laravel-translation-manager

管理 Laravel 翻译

v0.14.2 2024-09-08 12:12 UTC

README

这是一个由 Barry vd. Heuvel 和 贡献者 创建的 Laravel Translation Manager 的分支,原始地址为 Laravel Translation Manager

这是一个用于管理 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 barryvdh/laravel-translation-manager

composer require barryvdh/laravel-translation-manager

您需要为此包运行迁移。

php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=migrations
php artisan migrate

您需要发布此包的配置文件。这将添加文件 config/translation-manager.php,您可以在此处配置此包。

php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=config

为了编辑默认模板,还需要发布视图。视图将被放置在 resources/views/vendor/translation-manager 中。

php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=views

路由已在 ServiceProvider 中添加。您可以在配置中设置路由的组参数。您可以更改路由的前缀或过滤器/中间件。如果您想要完全自定义,可以扩展 ServiceProvider 并重写 map() 函数。

此示例将使翻译管理器在 http://yourdomain.com/translations 可用

如果您想使用 Google Translate API 进行自动翻译,请安装 https://github.com/tanmuhittin/laravel-google-translate

composer require tanmuhittin/laravel-google-translate
php artisan vendor:publish --provider=Tanmuhittin\LaravelGoogleTranslate\LaravelGoogleTranslateServiceProvider

中间件 / 认证

默认情况下,配置文件仅包括 auth 中间件,但 Laravel 5.2 的最新更改使得只有在您的路由包含 web 中间件时才能访问会话变量。为了使此包在 Laravel 5.2 上工作,您必须将路由/中间件设置从默认

    'route' => [
        'prefix' => 'translations',
        'middleware' => 'auth',
    ],

更改为

    'route' => [
        'prefix' => 'translations',
        'middleware' => [
	        'web',
	        'auth',
		],
    ],

注意: 这仅适用于 Laravel 5.2(及以上版本)

使用方法

网页界面

当您通过按钮或命令导入翻译后,可以在网页界面(控制器定义的 URL 上)查看它们。您可以通过点击翻译来弹出编辑字段。只需点击保存即可保存 :) 如果翻译尚未在其他区域创建,您也可以直接编辑它以创建它。

您还可以使用网页界面的按钮导入/导出翻译。为了发布翻译,请确保您的应用程序可以写入语言目录。

您还可以使用以下命令。

导入命令

导入命令将遍历 app/lang 并将所有字符串加载到数据库中,以便您可以轻松管理它们。

php artisan translations:import

来自 app/lang/locale.json 文件的翻译字符串将被导入到 _json 组中。

注意:默认情况下,只有新字符串被添加。数据库中已有的翻译保持不变。如果您想用文件中的值替换所有值,请添加 --replace(或 -R)选项: php artisan translations:import --replace

在源中查找翻译

查找命令/按钮将在应用目录中搜索所有php/twig文件,查看它们是否包含翻译函数,并尝试提取组/项目名称。找到的键将被添加到数据库中,以便可以轻松翻译。这可以通过Web界面或通过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.phpapp/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界面中出现,可以编辑并在以后导出。你不应该在生产环境中使用这个,只在开发中用来翻译你的视图,然后切换回来。

集成

DeepL

你可以使用DeepL Laravel来让包(自动)翻译字符串。

待办事项

此包仍然是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 :)