【问题标题】:Change default behavior of the translation function in Laravel更改 Laravel 中翻译功能的默认行为
【发布时间】:2021-02-04 21:59:22
【问题描述】:

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

有办法吗?

【问题讨论】:

  • 密钥必须完全是“不存在的密钥”或者它代表任何未找到的翻译?我写了我的答案,但现在我不知道这是否是你的意思。

标签: php laravel translation multilingual


【解决方案1】:

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

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

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

【讨论】:

  • 该死,我会尽快尝试
  • 但我仍然应该使用__() 函数吗?我不应该做一些类似将此提供程序绑定到引导方法中的某个接口的事情吗?......
  • 是的,您应该像以前一样使用,但是,当没有找到翻译时(if(empty($trans)) 行),将返回字符串“STRING NOT FOUND”。
  • 不知何故无法正常工作...我使用的是 6.x,也许这是用于其他版本的?
  • 嗯,我不确定,它是在 7.x 上测试的,尝试在函数 get 的第一行添加类似 echo 123; die 的内容,看看是否出现“123” .关于预期的行为,是否正确?它应该对任何未找到的翻译显示“STRING NOT FOUND”,对吧?
猜你喜欢
  • 2016-05-13
  • 2019-01-21
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2019-04-24
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多