Laravel 本地化:可选占位符

Laravel localization: optional placeholders

Laravel 中,您可以在本地化文件中使用占位符,因此,如果您有一个 welcome.php 文件设置了以下规则:

'welcome' => 'Welcome, :name. Everything alright in :city?',

然后您使用它来打印一条消息:

echo trans('messages.welcome', ['name' => 'Dayle', 'city' => 'Boston']);

你会看到这个:

Hello, Dayle! Everything alright in Boston?

这里:name是一个占位符。我的问题是:您能否使这些占位符成为可选的,即如果它们的值为 null,将显示不同的文本?在上面的例子中,如果我们跳过 trans 函数中的 city 参数,我想看到这个:

Hello, Dayle!

我会做另一种逻辑,创建多个 trans。所以:

'welcome' => 'Welcome, :name. Everything alright in :city?',
'welcome2' => 'Welcome, :name',

if(is_null($city){
   echo trans('messages.welcome2', ['name' => 'Dayle']);
}
else{
   echo trans('messages.welcome', ['name' => 'Dayle', 'city' => 'Boston']);
}

如何使用 trans_choice 函数作为 switch 语句?

echo trans_choice('messages.welcome', intval(isset($city)))

然后您可以像这样使用翻译文件:

'welcome' => '{0} Welcome :name! | {1} Welcome :name ! Everything alright in :city?'