用于在刀片文件中翻译的语法?

问题描述 投票:0回答:2
{{ __('A propos') }}

or

@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); } }
laravel localization laravel-localization
2个回答
3
投票
因此,我们可以使用此功能使用键和奖金执行翻译,还可以用

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); ?>";
        });
    }
}


2
投票
一旦创建指令,启用自动完成:

在IDE设置中,转到
Languages & Frameworks > PHP > Blade

禁用复选框
Use default settings

然后切换到

Directives

选项卡,然后添加新指令,并使用设置:

    名:
  1. tr

    prefix:

    <?php echo __(
  2. Suffix:

    ); ?>

  3. 	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.