您应该使用后备语言。见docs
您还可以配置“备用语言”,当
活动语言不包含给定的语言行。像
默认语言,备用语言也在
app/config/app.php配置文件:
'fallback_locale' => 'en',
它肯定会花费您在后备内联中编写与在并行翻译文件中编写后备一样多的时间,就像您在翻译键中编写一样。最终花费在考虑替代方法而不是仅仅做它上的时间将可以忽略不计。
如果你真的想要一个内联后备,那么你需要创建一个新的辅助方法来做一些不同的事情。所以准备好迎接一些自制的美味吧。
让我们创建一个可以在任何视图中使用的新函数。我将使用Joseph Sibler描述的方法。在app 内创建一个名为helpers.php 的文件。然后将其添加到autoload 对象中的composer.json 中files 数组下的"app/helpers.php"。不知道我的意思是什么?看他的回答。添加后,运行composer dump-autoload。
现在,让我们添加一个trans_fb() 方法,它将采用trans() 方法的所有参数,但也有一个回退。我将定义这个方法,使得前两个参数是必需的(键和回退)。
如果 Laravel 找不到翻译键(它在 resources/lang/en/auth.php 中搜索,例如 auth.failed 作为键),它将使用回退,并为原始方法传递任何其他可选参数。
<?php
if (! function_exists('trans_fb')) {
/**
* Translate the given message with a fallback string if none exists.
*
* @param string $id
* @param string $fallback
* @param array $parameters
* @param string $domain
* @param string $locale
* @return \Symfony\Component\Translation\TranslatorInterface|string
*/
function trans_fb($id, $fallback, $parameters = [], $domain = 'messages', $locale = null)
{
return ($id === ($translation = trans($id, $parameters, $domain, $locale))) ? $fallback : $translation;
}
}
然后你可以像这样在模板中使用它:
{{ trans_fb("i.love.laravel", "I love Laravel!") }}