yii2 gridview 列 headers 未翻译

yii2 gridview column headers not translated

目前在使用由 Yii 自己提供的 GridView 小部件时获取 headers 翻译时出现问题。

页面和项目指示器以及页面的所有其他功能正在翻译中,当我在没有 GridView 小部件的情况下构建此 table 时,一切都很好。但是现在在手动做了一些 tables 之后我想看看是否有人知道这个问题的解决方案。

总结一下:

这里是对应的代码:

//Controller-Action
$releaseQuery = new Query();
    $releaseQuery->
    select("`amount` AS 'Amount', 
            `created` AS 'Created',
            `user`.`email` AS 'User',
            `cinema`.`name` AS 'Cinema',
            `date` AS 'Date'")->
    from("`release`")->
        join('left join', '`user`', '`release`.`created_by` = `user`.`id`')->
        join('left join', '`cinema`', '`release`.`cinemaid` = `cinema`.`id`');
    $dataProvider = new ActiveDataProvider([
        'query' => $releaseQuery,
        'pagination' => [
            'pageSize' => 50,
        ],
    ]);

// View
<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            'Amount:currency',
            'Created',
            'User',
            'Cinema',
            'Date',
        ],
    ]) ?>

检查您的模型中的 attributeLabel 中是否有 i18n

喜欢这个示例(如果没有,您必须添加或将它们添加到 gridview 的标签参数中)

public function attributeLabels()
{
    return [
        'name' => Yii::t('app', 'Name'),
        'type' => Yii::t('app', 'Type'),
        'description' => Yii::t('app', 'Description'),
        'rule_name' => Yii::t('app', 'Rule Name'),
        'data' => Yii::t('app', 'Data'),
        'created_at' => Yii::t('app', 'Created At'),
        'updated_at' => Yii::t('app', 'Updated At'),
    ];
}

如果您使用 gii 生成模型,请记住设置 i18n 复选框

如果您在查询中使用新的列名,这些将成为 gridview 中的属性,您必须使用适当的翻译功能管理相关标签

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['attribute' => 'Amount',
         'label' => Yii::t('app', 'Amount'),],
        .......

    ],
]) ?>