Blade Laravel中的多语言链接

Wil*_*urb 4 multilingual laravel blade

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

应用程序/郎/ EN/contact.php:

return [
    '1' => 'text before link',
    '2' => 'link text',
    '3' => 'text after link'
];
Run Code Online (Sandbox Code Playgroud)

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

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

小智 10

这个解决方案怎么样?

刀片模板:

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

郎/ test.php的

<?php
return [
    'test' => '<a href=":url">My Pretty Link</a>'
]
Run Code Online (Sandbox Code Playgroud)


luk*_*ter 5

您可以使用 URL 作为参数,并且只需要一个翻译条目:

应用程序/语言/en/contact.php

return [
    '1' => 'text before link <a href=":url">link text</a>text after link'
];
Run Code Online (Sandbox Code Playgroud)

应用程序/视图/contact.blade.php

<p>{{ Lang::get('contact.1', URL::route('home')) }}</p>
Run Code Online (Sandbox Code Playgroud)

缺点:您的翻译中有 HTML

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

<p>
    {{ trans('contact.1') }}
    {{ link_to_route('home', trans('contact.2')) }}
    {{ trans('contact.3') }}
</p>
Run Code Online (Sandbox Code Playgroud)

  • “但不会以任何方式改变您的翻译” 这并不完全正确。不同的语言有不同的句子顺序,所以每种语言的`contact.1`、`contact.2`和`contact.3`的内容都会不同。所有链接都需要所有 3 个,因为一些英语句子可能只以链接结尾,但不同的语言可能希望将链接放在中间。 (2认同)