stevegrunwell/lost-in-translation

揭示Laravel应用程序中缺失的翻译和本地化字符串

v1.0.0 2017-10-17 03:06 UTC

This package is auto-updated.

Last update: 2024-08-29 04:43:04 UTC


README

Build Status Coverage Status

Lost in Translation旨在帮助开发者在Laravel应用程序中定位未提供翻译的本地化字符串(请参阅Laravel本地化文档)。

安装

Lost in Translation可以通过Composer安装到您的Laravel项目中。

$ composer require stevegrunwell/lost-in-translation

默认情况下,这将用添加了额外逻辑的子类替换默认的TranslationServiceProvider类,当找不到翻译时。要恢复默认行为(即使在生产环境中),请参阅下面的“配置”部分。

配置

默认情况下,Lost in Translation将使用两种方式捕捉缺失的翻译:

  1. APP_DEBUG为true的环境中,如果应用程序尝试加载未定义的翻译,将找到LostInTranslation\MissingTranslationException
  2. 缺失的翻译将写入到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事件有四个值得注意的公共属性:

  1. $key - 未找到的翻译键。
  2. $replacements - 传递给翻译调用的任何替换。
  3. $locale - 正在使用的区域。
  4. $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事件文档