lakridserne/laravel-translation-manager

管理 Laravel 翻译

1.1 2023-12-21 15:19 UTC

This package is auto-updated.

Last update: 2024-09-21 17:26:33 UTC


README

这是一个翻译管理器,它可以替换laravel自带的数据库翻译管理器,或者用于导出翻译文件以便在GIT中进行检查。

目前还没有网络界面,但即将推出。

安装

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

"lakridserne/laravel-translation-manager": "^1"

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

'Lakridserne\TranslationManager\ManagerServiceProvider',

需要运行此包的迁移

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

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

$ php artisan vendor:publish --provider="Lakridserne\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.phpapp/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',
'Lakridserne\TranslationManager\TranslationServiceProvider',

这将扩展翻译器,每当找不到键时,都会创建一个新的数据库条目,因此你必须访问使用它们的页面。这样,它就会在web界面中显示出来,可以编辑,然后稍后导出。你不应该在生产环境中使用此功能,只应在开发中翻译视图,然后只需切换回。

待办事项

此包仍在开发中,但完成web界面后,将退出测试版。

- Add a webinterface
- Seed existing languages (https://github.com/caouecs/Laravel-lang)
- Suggestions are welcome :)