Symfony with DataTables 翻译行条目

Symfony with DataTables translate row entry

我在数据库中有一组条目,我将名称保存为占位符以便以后翻译。

Example:

| id | settings_id | settings_name       | value |
| 1  | 1           | value.to.translate1 | 1     |
| 2  | 1           | value.to.translate2 | 2     |

我将其作为 json 字符串获取,以便在我尝试执行以下操作的 twig 中与 DataTables 一起使用:

$(document).ready(function () {
   $('#settings').dataTable({
       data: dataSet,
       columns: [
           {"data": "id"},
           {
               "render": function (data, type, row) {
                   return {{ row.settings_name|trans }}; // <---- THE PROBLEM
               }
           },
           {
               "render": function (data, type, row) {
                   var url = '{{ path('admin_settings_values', {'id': app.request.get('id'), 'id': 'settingsId'}) }}';
                   url = url.replace("settingsId", row.id);

                   return '<a href="' + url + '">{{ 'admin.settings.view.values'|trans }}</a>';
               }
           },

这显然是行不通的。我怎样才能使它在树枝中可翻译?这甚至可能吗?

我不知道这是否是最佳选择,但目前它有效:

在控制器内部我做了以下事情:

    $aSettingsList = $this->getRepository(Settings::class)->findAllScalar();

    foreach($aSettingsList as $key => $value) {
        $value['name'] = $this->trans($value['name']);
        $aSettingsList[$key] = $value;
    }

query

public function findAllScalar()
{
    return $this->createQueryBuilder('s')
        ->select('s.id', 's.name')
        ->getQuery()
        ->getScalarResult();
}

twig

$(document).ready(function () {
        $('#settings').dataTable({
            data: dataSet,
            columns: [
                {"data": "id"},
                {"data": "name"}, // <--- HERE
                {
                    "render": function (data, type, row) {
                        var url = '{{ path('admin_settings_edit', {'id': app.request.get('id'), 'id': 'settingsId'}) }}';
                        url = url.replace("settingsId", row.id);

                        return '<a href="' + url + '">{{ 'admin.settings.view.values'|trans }}</a>';
                    }
                },
            ],

如果您有更好的解决方案,请告诉我。