更改 Laravel 中翻译函数的默认行为

问题描述

出于调试目的,我希望每次调用 __('non-existing-key') 时都能看到打印的内容,例如 STRING NOT FOUND,以便我可以抓取我的网站并搜索该特定字符串...

有没有办法做到这一点?

解决方法

app/Extended中创建两个文件(如果文件夹不存在,则必须创建):

ExtendedTranslationServiceProvider.php

<?php

namespace App\Extended;

use Illuminate\Translation\TranslationServiceProvider;

class ExtendedTranslationServiceProvider extends TranslationServiceProvider
{
    public function register()
    {
        $this->registerLoader();
        $this->app->singleton('translator',function ($app) {
            $loader = $app['translation.loader'];
            $locale = $app['config']['app.locale'];
            $trans = new ExtendedTranslator($loader,$locale);
            $trans->setFallback($app['config']['app.fallback_locale']);
            return $trans;
        });
    }
}

ExtendedTranslator.php

<?php

namespace App\Extended;

use Illuminate\Translation\Translator;

class ExtendedTranslator extends Translator
{
    public function get($key,array $replace = [],$locale = null,$fallback = true)
    {
        $trans = parent::get($key,$replace,$locale,$fallback);
        if(parent::get($key,[],$fallback) === $key){
          return 'STRING NOT FOUND';
        }
        return $trans;
    }
}

并在 app.php 上的 providers 数组中添加一个新项目:

'providers' => [
    ...
    App\Extended\ExtendedTranslationServiceProvider::class,]