簡體   English   中英

如何在 Laravel 5 中翻譯集合?

[英]How to translate collections in Laravel 5?

我正在使用pluck 方法來檢索值。 如何翻譯這些值? (這些值是選擇輸入字段的選項)

$relationtypes = Relationtype::pluck('name', 'id');

我的關系類型是:供應商、客戶等。

我還找到了一個更方便的解決方案:

$relationtypes = RelationType::pluck('name', 'id')->map(function ($item, $key) {
    return trans('labels.' . $item . '');
});

將此傳遞給您的視圖,您可以使用:

{!! Form::select('relationtypes[]', $relationtypes, 
    isset($relation) ? $relation->relationtypes->pluck('id')->toArray() : 0, ['class' => 'form-control']) !!}

希望這可以幫助其他人!

您的控制器方法可能如下所示:

public function index () {
  $relationtypes = Relationtype::pluck('name', 'id');

  // A better place for this might be a middleware
  App::setlocale('your-locale'); 

  return view('relationtypes.index, compact('relationtypes'));
}

在您看來,迭代它們:

<select>
   @foreach (types as type)
     <option value="{{ type.id }}">{{ trans(type.name) }}</option>
   @endforeach
</select>

如果您想使用trans函數翻譯值,您需要事先在resources\\lang\\<locale>\\<file>.php

例如,讓我們對數據庫中的值進行映像:

| id | name       |
|----|------------|
| 1  | slug-one   |
| 2  | slug-two   |
| 3  | slug-three |

然后在resources\\lang\\nl\\slugs.php

return [
  'slug-one' => 'whatever translation for slug-on in nl',
  // ...
];

這種方法適用於非動態值,如果您的值是動態的,則翻譯可能必須在某些 db 字段中,例如: name_nlname_en也許?

但是已經有很多軟件包可以解決這個問題。

我們可以創建自定義 Collection 方法。

Collection::macro('translate', function ($prefix) {
    return $this->map(function ($item) use ($prefix) {
        return trans($prefix . $item);
    });
});

在 AppServiceProvider 中。

和用法:

Model::pluck('code_name', 'id')->translate('system.code.')->implode(',');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM