{{ __('A propos') }}
@lang('A propos')
我的问题是:您使用哪种方法,为什么?
我真的更喜欢使用
__
辅助功能。如果您深入研究,那么就其功能和灵活性而言,您会发现此辅助功能非常酷。除了接收其他2个参数的翻译字符串外。一个是
replace[]
,另一个是
locale
。
if (! function_exists('__')) {
/**
* Translate the given message.
*
* @param string|null $key
* @param array $replace
* @param string|null $locale
* @return string|array|null
*/
function __($key = null, $replace = [], $locale = null)
{
if (is_null($key)) {
return $key;
}
return trans($key, $replace, $locale);
}
}
2nd参数中传递的值替换翻译。不仅如此,我们还可以选择在
3rdparameter.
中需要在哪种语言中指定哪种语言。第二,我们可以在项目中的任何地方使用Laravel控制器,视图等的任何地方使用此功能。 在另一侧,我们有刀片指令
@lang()
。我在供应商中的任何地方都找不到它的定义,但是我敢肯定,您只能在刀片模板中使用它。此外,它没有像replace[]
辅助功能一样具有
locale
和__()
参数灵活性。
在辩论的结尾,我会真正选择__()
对于任何需要上述方法组合的人(像我一样),只需使用
@tr(...)
指令,例如:@tr('My :app says hello!', ['app' => env('APP_NAME')])
但要在上面的功能,在您的AppServiceProvider.php
文件中(在app/Providers
目录中)执行类似的操作:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Blade::directive('tr', function ($expression) {
return "<?php echo __($expression); ?>";
});
}
}
在IDE设置中,转到
Languages & Frameworks > PHP > Blade
。
禁用复选框
Use default settings
。
然后切换到Directives
tr
prefix:<?php echo __(
Suffix:
); ?>