我的数据库中有一个表,其中有一个name
字段,我想翻译其中的内容。我正在使用lajax/翻译管理器,它运行得很好。当我想按name
对GridView(或其他小部件)中的数据进行排序时,问题就来了。当我查询数据库时,我指定name
作为排序字段,但它是用存储的语言(英语)完成的。然后,我使用GridView列中的Yii::t()
函数来输出字段,并对其进行翻译,但显然顺序保持不变。
例如,在表专业中,我有一行的name
取值Accounting
,在西班牙语中为Contabilidad
。如果我用西班牙语显示表格,那一行应该显示在下面,而不是用英语显示,但这并没有发生。
解决方案:我最终以数组的形式从数据库中获取所有记录,用Yii::t翻译它们,然后将其放入ArrayDataProvider中。还有一件事:为了允许过滤,我还必须使用PHP的函数fnmatch检查数组的对应列。
您想要在mysql请求中动态翻译Accounting
。这不是工作。
你有两种方法:
- 在表中创建字段
name_spanish
,并在mysql中根据该字段进行排序 - 获取所有记录,通过
Yii::t()
转换值,并在php中进行排序