Alberto
Alberto

Reputation: 12919

Change default behavior of the translation function in Laravel

For debugging purpose, I would like that whenever I call __('non-existing-key'), to see printed for example STRING NOT FOUND, so that I can crawl my website and search for that specific string...

Are there ways to do it?

Upvotes: 0

Views: 920

Answers (1)

Lucius
Lucius

Reputation: 1333

Create two files in app/Extended (the folder must be created if doesn't exist):

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, [], $locale, $fallback) === $key){
          return 'STRING NOT FOUND';
        }
        return $trans;
    }
}

And add a new item in the providers array, on app.php:

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

Upvotes: 2

Related Questions