我的数据库中有一个表格,其中包含我要翻译的内容name
字段。我正在使用lajax/translate-manager,它工作正常。当我想通过name
对GridView(或其他一些小部件)中的数据进行排序时,会出现问题。当我查询数据库时,我指定name
作为排序字段,但它是以存储的语言完成的(英语)。然后我使用GridView列中的Yii::t()
函数输出字段并进行翻译,但显然排序保持不变。
例如,在表格专业中,我有一行name
取值为Accounting
,西班牙语为Contabilidad
。如果我用西班牙语显示该表,则该行应显示在下方而不是英语中,并且这种情况不会发生。
解决方案:我最终将数据库中的所有记录作为数组提取,使用Yii :: t进行翻译,然后将其放入ArrayDataProvider。还有一件事:为了允许过滤,我还要用PHP函数fnmatch检查数组的对应列。
答案 0 :(得分:1)
您希望在mysql请求中动态翻译Accounting
。这不行。
您有两种方式:
name_spanish
创建并在mysql中按此字段进行排序。Yii::t()
翻译值并在php中执行排序。