Blade Laravel中的多语言链接

时间:2014-12-01 16:13:42

标签: laravel multilingual blade

我正在翻译使用Blade模板的Laravel网站,并想知道是否有更好的方法来翻译链接,如下所示:

应用/郎/ EN / contact.php:

return [
    '1' => 'text before link',
    '2' => 'link text',
    '3' => 'text after link'
];

应用/视图/ contact.blade.php:

<p>{{ Lang::get('contact.1') }} 
      <a herf="{{URL::route('home')}}">{{ Lang::get('contact.2') }}</a> 
{{ Lang::get('contact.3') }}}</p>

3 个答案:

答案 0 :(得分:10)

这个解决方案怎么样?

刀片模板:

{!! Lang::get('test.test', [ 'url' => 'http://stackoverflow.com/' ]) !!}

<强>郎/ test.php的

<?php
return [
    'test' => '<a href=":url">My Pretty Link</a>'
]

答案 1 :(得分:3)

您可以将URL用作参数,只需要一个翻译条目:

应用/郎/ EN / contact.php

return [
    '1' => 'text before link <a href=":url">link text</a>text after link'
];

应用/视图/ contact.blade.php

<p>{{ Lang::get('contact.1', URL::route('home')) }}</p>

下行:您的翻译中包含HTML

使代码更清晰(但不会以任何方式更改您的翻译)的另一种方法是使用Laravels HTML link helpertrans()Lang::get()的别名

<p>
    {{ trans('contact.1') }}
    {{ link_to_route('home', trans('contact.2')) }}
    {{ trans('contact.3') }}
</p>

答案 2 :(得分:2)

该问题的另一种可能的解决方案:

  • resources / lang / zh-CN / contact.php:

    <?php
    
    return [
        'sentence' => 'please :click here',
        'click' => 'CLICK',
    ];
    
  • 刀片模板:

    @section('click link')
        <a href="{{ url('/contact') }}">
            {{ trans('contact.click') }}
        </a>
    @overwrite
    
    {!! trans('contact.sentence', ['click' => view()->yieldContent('click link')]) !!}