在Laravel中,从数据库中翻译字符串名称的最有效方法是什么


What is the most effective way to translate string names from database in Laravel

我目前正在用语言选择构建一个小型社交网络。我的问题是,我不知道的是,我在数据库中保存了用户组。

id  name    
1   Model   
2   Photographer 
3   Makeup artist

我选择这些并将其放入我的注册表格

<div class="form-group">
            {{ Form::label('group', Lang::get('auth.group'), array("class" => "col-lg-3 control-label ")) }}
            <div class="col-lg-8">
             <select class="col-lg-12" name="group_id[]" id="" multiple size="6" >
                @foreach($groups as $group)
                    <option value="{{ $group->id }}">{{ $group->name }}</option>
                @endforeach
             </select>
            </div>
        </div>

但我完全不知道如何翻译这些,我使用的是Laravel's Localization

有人能给我一个提示吗?

如果要本地化来自数据库的字符串,则必须将键存储到数据库表中。然后,在你的观点中,你会像在拉拉威尔通常做的那样进行翻译。

数据库表将具有以下结构(注意,除了名称之外,您还将存储一个密钥):

-------------------------------------------
| ID | Name          | NameKey            |
===========================================
| 1  | Model         | group.model        |
| 2  | Photographer  | group.photographer |
| 3  | Makeup Artist | group.makeupartist |
-------------------------------------------

这个名字不是强制性的,但当密钥不清楚时,它很有用。

然后您的视图,而不是呈现名称,您将呈现本地化的密钥:

<option value="{{ $group->id }}">{{ Lang::get($group->nameKey) }}

另一个建议是使用名称本身作为关键字,但当两个相同的单词在一种语言中有不同的含义,但在另一种语言里却写得不同时,这可能会产生问题。