xodock / laravel-translation-manager
管理 Laravel 翻译
Requires
- php: >=5.4.0
- illuminate/support: 5.0.x|5.1.x|5.2.x|5.3.x|5.4.x
- illuminate/translation: 5.0.x|5.1.x|5.2.x|5.3.x|5.4.x
- symfony/finder: ~2.3|~3.0
This package is not auto-updated.
Last update: 2024-09-24 21:08:39 UTC
README
对于 Laravel 4,请使用 0.1 分支!
这是一个用于管理 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 历史记录中,并且在生产环境中不会引入额外的开销。
安装
在你的 composer.json 中添加此包并运行 composer update(或直接运行 composer require barryvdh/laravel-translation-manager)
"barryvdh/laravel-translation-manager": "0.2.x"
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组
'Barryvdh\TranslationManager\ManagerServiceProvider',
你需要为此包运行迁移
$ 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 可用
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
在源代码中查找翻译
查找命令/按钮将在应用目录中搜索所有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.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',
'Barryvdh\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 :)