【问题标题】:What is the most effective way to translate string names from database in Laravel在 Laravel 中从数据库中翻译字符串名称的最有效方法是什么
【发布时间】:2013-07-31 09:43:21
【问题描述】:

我目前正在构建一个带有语言选择功能的小型社交网络。 我的问题是我一无所知的是我在数据库中保存了用户组。

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

有人可以给我一个提示吗?

【问题讨论】:

  • 除了您的组的名称之外,我会更改它以添加一个新列,该列将包含一个键,即:group.modelgroup.photographer... 然后使用 Laravel 的本地化,我将只翻译它。

标签: php laravel translation


【解决方案1】:

如果要本地化来自数据库的字符串,则必须将键存储到数据库表中。然后在您的视图中,您可以像通常在 Laravel 中那样进行翻译。

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

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

这个名字不是我必须的,但是当密钥不是很清楚时它是有用的。

然后你的视图,而不是呈现 name,你将呈现本地化的键:

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

另一个建议是使用名称本身作为键,但是当两个相同的单词在一种语言中具有不同的含义时,可能会出现问题,但在另一种语言中却是不同的。

【讨论】:

    猜你喜欢
    • 2017-11-18
    • 2010-10-17
    • 2013-03-03
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2021-02-02
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多