stephanesoares/laravel-translator-manager

翻译您的laravel应用程序

1.1.3 2024-03-18 09:59 UTC

This package is auto-updated.

Last update: 2024-09-18 11:03:50 UTC


README

这是一个用于管理Laravel翻译文件的包。它不会替换翻译系统,只将PHP文件导入数据库,并通过Web界面进行编辑。工作流程将是

- 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历史记录中,并且不会在生产中引入任何开销。

Screenshot

安装

在composer.json中添加此包并运行composer update(或直接运行composer require stephanesoares/laravel-translation-manager

composer require stephane/laravel-translation-manager

更新composer后,将ServiceProvider添加到config/app.php中的providers数组

StephaneSoares\TranslationManager\ManagerServiceProvider::class,

您需要为此包运行迁移。

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

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

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

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

$ php artisan vendor:publish --provider="StephaneSoares\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

现在您可以使用自动翻译特性

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(以及更高版本)中需要。

使用方法

Web界面

当您已经通过按钮或命令导入了翻译后,您可以在Web界面(在控制器定义的URL上)查看它们。您可以通过点击翻译来打开一个编辑字段。只需点击保存,它就会保存:)当一个翻译在不同的区域设置中尚未创建时,您也可以直接编辑它来创建它。

您还可以通过Web界面的按钮导入/导出翻译。对于发布翻译,请确保您的应用程序可以写入语言目录。

您还可以使用以下命令。

导入命令

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

$ php artisan translations:import

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

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

在源中查找翻译

查找命令/按钮将在app目录中的所有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',
'StephaneSoares\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 :)