yii2 gridview 列 headers 未翻译
yii2 gridview column headers not translated
目前在使用由 Yii 自己提供的 GridView 小部件时获取 headers 翻译时出现问题。
页面和项目指示器以及页面的所有其他功能正在翻译中,当我在没有 GridView 小部件的情况下构建此 table 时,一切都很好。但是现在在手动做了一些 tables 之后我想看看是否有人知道这个问题的解决方案。
总结一下:
- i18N 在整个网站上运行正常
- 翻译不适用于 GridView 小部件
- 翻译正在处理例如 ActiveForm
- 所有 headers 都已添加到正确的消息文件中。
这里是对应的代码:
//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'),],
.......
],
]) ?>
目前在使用由 Yii 自己提供的 GridView 小部件时获取 headers 翻译时出现问题。
页面和项目指示器以及页面的所有其他功能正在翻译中,当我在没有 GridView 小部件的情况下构建此 table 时,一切都很好。但是现在在手动做了一些 tables 之后我想看看是否有人知道这个问题的解决方案。
总结一下:
- i18N 在整个网站上运行正常
- 翻译不适用于 GridView 小部件
- 翻译正在处理例如 ActiveForm
- 所有 headers 都已添加到正确的消息文件中。
这里是对应的代码:
//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'),],
.......
],
]) ?>