padosoft / laravel-translation-manager
管理Laravel翻译
Requires
- php: >=5.4.0
- illuminate/support: 5.x|6.x|7.x|^8.0|^9.0|^10.0|^11.0
- illuminate/translation: 5.x|6.x|7.x|^8.0|^9.0|^10.0|^11.0
- symfony/finder: ~2.3|~3.0|~4.0|~5.0|~6.0|~7.0
Requires (Dev)
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-20 14:24:23 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历史中,且在生产环境中不会引入任何额外开销。
安装
在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
注意:默认情况下,只有新字符串被添加。已存在于数据库中的翻译保持不变。如果你想用文件中的值替换所有值,请添加--replace
(或-R
)选项:php artisan translations:import --replace
在源中查找翻译
查找命令/按钮将搜索应用目录中的所有php/twig文件,以查看它们是否包含翻译函数,并尝试提取组/项目名称。找到的键将被添加到数据库中,以便可以轻松翻译。这可以通过Web界面或Artisan命令完成。
$ php artisan translations:find
导出命令
导出命令将数据库的内容写回到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
。
要导出包的翻译,您可以设置组为package::group。
$ php artisan translations:export package::*
例如,`php artisan translations:expor`
清理命令
清理命令会搜索所有为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 :)