maodk87 / omt-translation-manager
OMT 翻译管理
Requires
- php: >=7
- illuminate/support: ^5.5|^6
- illuminate/translation: ^5.5|^6
- symfony/finder: ^3|^4
- tanmuhittin/laravel-google-translate: ^1.0.2
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- dev-master / 0.5.x-dev
- 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
- 0.1.x-dev
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-branch_omt_translation_manager
- dev-revert-252-master
- dev-feat-search
This package is auto-updated.
Last update: 2024-09-11 14:38:23 UTC
README
安装
在 composer.json 中要求此包,并运行 composer update(或直接运行 composer require maodk87/omt-translation-manager
)
composer require maodk87/omt-translation-manager
更新 composer 后,将 ServiceProvider 添加到 config/app.php
中的 providers 数组
'Omt\TranslationManager\ManagerServiceProvider',
您需要为此包运行迁移。
$ php artisan vendor:publish --provider="Omt\TranslationManager\ManagerServiceProvider" --tag=migrations
$ php artisan migrate
您需要发布此包的配置文件。这将添加 config/translation-manager.php
文件,您可以在其中配置此包。
$ php artisan vendor:publish --provider="Omt\TranslationManager\ManagerServiceProvider" --tag=config
为了编辑默认模板,视图也需要发布。视图将被放置在 resources/views/vendor/translation-manager
。
$ php artisan vendor:publish --provider="Omt\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 {tenant_id}
来自 app/lang/locale.json 文件中的翻译字符串将被导入到 _json 组。
注意:默认情况下,只有新字符串被添加。数据库中已有的翻译保持不变。如果您想用文件中的值替换所有值,请添加 --replace
(或 -R
)选项:php artisan translations:import {tenant_id} --replace
在源中查找翻译
查找命令/按钮将在 app 目录中的所有 php/twig 文件中搜索,查看是否包含翻译函数,并尝试提取组/项目名称。找到的键将被添加到数据库中,以便您可以轻松翻译。这可以通过 Web 界面或 Artisan 命令完成。
$ php artisan translations:find {tenant_id}
如果您的项目使用翻译字符串作为键,这些字符串将被存储到 _json 组。
导出命令
导出命令会将数据库内容写回app/lang php文件中。这将覆盖现有翻译并删除所有注释,所以在使用前请确保备份您的数据。提供组名以定义您想发布的组。
$ php artisan translations:export {tenant_id} <group>
例如,当您有2个语言环境(en/nl)时,使用php artisan translations:export {tenant_id} reminders
将会写入app/lang/en/reminders.php
和app/lang/nl/reminders.php
要将翻译字符串作为键导出到JSON文件,请使用--json
(或-J
)选项:php artisan translations:export {tenant_id} --json
。这将导入来自_json组的所有条目。
清理命令
清理命令将搜索所有NULL翻译并将其删除,从而使您的界面更干净。注意:空翻译永远不会被导出。
$ php artisan translations:clean {tenant_id}
重置命令
重置命令简单地清除了数据库中的所有翻译,因此您可以从头开始(通过新的导入)。在执行此操作之前,请确保需要导出您的工作。
$ php artisan translations:reset {tenant_id}
检测缺失的翻译
大多数翻译可以通过使用查找命令(见上方)找到,但在您有动态键(变量/自动表单等)的情况下,监听缺失的翻译可能会有所帮助。要检测缺失的翻译,我们可以用自定义提供程序替换Laravel TranslationServiceProvider。在您的config/app.php
中,注释掉原始的TranslationServiceProvider并添加此包中的一个。
//'Illuminate\Translation\TranslationServiceProvider',
'Omt\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 :)