在laravel的trans()中检查行是否存在

Koe*_* B. 2 translation laravel laravel-4

让我们说我lang/en/general.php有多个翻译行,例如:

"token" => "This password reset token is invalid.",

"sent" => "Password reminder sent!",

"reset" => "Password has been reset!",
Run Code Online (Sandbox Code Playgroud)

但在我的lang/de/general.php这些线路中缺失.

所以后来,当我使用Lang::get('general.token')或简单trans('general.token')

英文版将返回

此密码重置令牌无效.

并且德语(de)版本将返回

general.token

有没有什么方法可以处理'翻译未找到'功能,比如过滤器但不为它创建一个特殊的类?例如,当一行没有翻译时,我想抛出一个异常.

提前致谢!

Mar*_*łek 14

trans在当前的 Laravel 版本中,您可以像这样使用助手:

@if (trans()->has('general.token'))
   {{ trans('general.token') }}
@endif
Run Code Online (Sandbox Code Playgroud)


K.T*_*ess 12

你可以使用Lang::has()如下,这里是文档

if (\Lang::has('general.token')) {

    // line exists.

} else {

   // line not exist.

}
Run Code Online (Sandbox Code Playgroud)


Kyo*_*bul 6

这个问题有点老了,但根据 5.8 版,您可以简单地检查如下:

array_key_exists('your-word-key', trans('your-file'))
Run Code Online (Sandbox Code Playgroud)

或者

array_key_exists('your-word-key', trans('your-file.array_key'))
Run Code Online (Sandbox Code Playgroud)

嵌套翻译