stevegrunwell / lost-in-translation
揭示Laravel应用程序中缺失的翻译和本地化字符串
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ~3.0
This package is auto-updated.
Last update: 2024-08-29 04:43:04 UTC
README
Lost in Translation旨在帮助开发者在Laravel应用程序中定位未提供翻译的本地化字符串(请参阅Laravel本地化文档)。
安装
Lost in Translation可以通过Composer安装到您的Laravel项目中。
$ composer require stevegrunwell/lost-in-translation
默认情况下,这将用添加了额外逻辑的子类替换默认的TranslationServiceProvider
类,当找不到翻译时。要恢复默认行为(即使在生产环境中),请参阅下面的“配置”部分。
配置
默认情况下,Lost in Translation将使用两种方式捕捉缺失的翻译:
- 在
APP_DEBUG
为true的环境中,如果应用程序尝试加载未定义的翻译,将找到LostInTranslation\MissingTranslationException
。 - 缺失的翻译将写入到
storage/logs/lost-in-translation.log
。
以上任一功能都可以通过包的配置禁用,使Lost in Translation在生产环境中使用更安全。以下环境变量可以设置这些值:
- TRANS_LOG_MISSING
- 确定是否记录缺失的翻译。默认为“true”。
- TRANS_ERROR_ON_MISSING
- 当翻译缺失时,应该抛出
MissingTranslationException
异常吗?默认为“false”。
要覆盖包配置,运行以下命令将配置复制到您的应用目录的config/
目录中:
$ php artisan vendor:publish --provider="LostInTranslation\Providers\TranslationServiceProvider"
这将创建一个新文件在config/lostintranslation.php
,在这里可以设置您应用的默认值。
扩展
当找到缺失的翻译时,将触发一个LostInTranslation\MissingTranslationFound
事件。这个事件使得在遇到缺失翻译时执行某些操作(发送电子邮件、打开GitHub问题等)变得容易。
首先,在您的应用程序中创建一个新的事件监听器;在这个例子中,我们使用app/Listeners/NotifyOfMissingTranslation.php
。
<?php namespace App\Listeners; use LostInTranslation\Events\MissingTranslationFound; class NotifyOfMissingTranslation { /** * Handle the event. * * @param MissingTranslationFound $event * * @return void */ public function handle(MissingTranslationFound $event) { // Do something with the event. } }
MissingTranslationFound
事件有四个值得注意的公共属性:
$key
- 未找到的翻译键。$replacements
- 传递给翻译调用的任何替换。$locale
- 正在使用的区域。$fallback
- 如果定义,则为回退区域。
然后,在app/Providers/EventServiceProvider.php
中,添加以下代码以将NotifyOfMissingTranslation
注册为在发生MissingTranslationFound
事件时的回调:
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ 'LostInTranslation\Events\MissingTranslationFound' => [ 'App\Listeners\NotifyOfMissingTranslation', ], ];
有关事件监听器的更多信息,请参阅Laravel事件文档。