ericlagarda / laravel-translation-manager-google-translate
使用Google翻译管理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
- stichoza/google-translate-php: ~3.2
- symfony/finder: ~2.3|~3.0
README
这是一个基于Barryvdh Package的版本,用于添加Google翻译。基于这个分支。
你还可以在xeditable popover的另一个按钮上手动编辑翻译后的文本。
对于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 ericlagarda/laravel-translation-manager-google-translate
)
"ericlagarda/laravel-translation-manager-google-translate": "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中添加。您可以在配置中设置路由的group参数。您可以更改路由的前缀或filter/middleware。如果您想进行完全自定义,可以扩展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
清理命令
清理命令将搜索所有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/Laravel4-lang)
- Suggestions are welcome :)