在另一个键

时间:2017-06-12 04:33:43

标签: php laravel laravel-5.4

语言文件     

return [

/*
|--------------------------------------------------------------------------
| CUSTOM Language Lines
|--------------------------------------------------------------------------
| 
|  
|
*/

'title_equipment' => 'Equipment',
'title_equipment_new' => 'Add new '.('custom.title_equipment'), 

];

上面是我用laravel 5.4创建的新语言文件。我想在title_equipment变量中使用title_equipment_new变量。 我尝试了上述方法并在刀片模板中测试了输出,但它返回变量的键,这意味着它无法使用。

我的观点

<h1 class="page-header">
    <small>{{ __('custom.title_equipment_new') }} </small>
</h1>

请注意custom是新语言文件的文件名。

3 个答案:

答案 0 :(得分:0)

它返回变量的键而不是任何文本,因为您没有像__()trans()那样调用函数来翻译文本。您只能用括号括起您的文字,这不会影响文字。

如果您使用函数__()trans(),它通常会翻译现有密钥,但在语言文件中,您可能会在\laravel\framework\src\Illuminate\Filesystem\Filesystem.php中获得异常,因此它可以没有可能。

答案 1 :(得分:0)

通常,特别是当您将翻译文件外包给将为您翻译的公司时,最好使用Mx = { {0, 0, 0, 0, 0, 0} , {0, -0.0003, -0.0035, 0, 0.0035, 0.0003} , {0, -0.0090, -0.0903, 0, 0.0903, 0.0090} , {0, -0.0229, -0.2292, 0, 0.2292, 0.0229} , {0, -0.0090, -0.0903, 0, 0.0903, 0.0090} , {0, -0.0003, -0.0035, 0, 0.0035, 0.0003} }; 插入这些项目。这意味着要翻译的字符串具有整个上下文,因为语言具有完全不同的构造句子的方式。

我会推荐这个翻译文件

sprintf

然后在您的刀片模板中

'title_equipment' => 'Equipment',
'title_equipment_new' => 'Add new %s.', 

实际翻译的示例可能是

sprintf(__('custom.title_equipment_new'), __('custom.title_equipment'));

法语翻译文件可能是(我使用谷歌翻译)

'buy_car' => 'Buy %s car', // %s refers to colour
'car_colour_red' => 'Red',

但您的刀片模板仍然是:

'buy_car' => 'Acheter une voiture %s',
'car_colour_red' => 'rouge',

你不可能有这样的东西

sprintf(__('custom.buy_car'), __('custom.car_colour_'.$colour));

答案 2 :(得分:0)

要获取最新信息,可以使用更新版本的Laravel在您的语言字符串中定义占位符:

'title_equipment' => 'Equipment',
'title_equipment_new' => 'Add new :equipment.',

用法为:

__('title_equipment_new', [ 'equipment' => __('title_equipment') ])

您还可以将不同的单词/短语插入到字符串内的不同位置。

有关详细信息,请参见以下文档:Laravel docs on localization