SilverStripe $ summary_field interupts标签翻译

时间:2016-07-30 21:24:27

标签: php silverstripe

我在我的DataObject中使用public function fieldLabels()来翻译所有字段标签(以及$summary_fields的标签)。这适用于所有字段,除了具有从函数返回的值的字段(而不是从数据库中提取的值)。

摘要字段

static $summary_fields = array(
    'Label' => 'Label',
    'Type' => 'Type',
    'getRequiredLabel' => 'Required'
);

FieldLabels

public function fieldLabels($includerelations = true) {
    $labels = parent::fieldLabels(true);

    $labels['Label'] = _t('UserForm.Label', 'Label');
    $labels['Type'] = _t('UserForm.Type', 'Type');
    $labels['Required'] = _t('UserForm.Required', 'Required');

    return $labels;
}

必需外,所有字段都通过fieldLabels()整齐翻译,因为它具有来自函数的自定义值,而不是来自数据。将 getRequiredLabel 更改为必需可修复此错误。

我可以保留记录字段的值 getRequiredLabel 并在顶部列中包含已翻译的标签吗?

enter image description here

1 个答案:

答案 0 :(得分:4)

$summary_fields getRequiredLabel变量设为RequiredLabel并使用$field_labels设置字段标签。

private static $summary_fields = array(
    'Label',
    'Type',
    'RequiredLabel'
);

private static $field_labels = array(
    'RequiredLabel' => 'Required'
);

然后在fieldLabels RequiredLabel列中应使用$labels['RequiredLabel']访问。

public function fieldLabels($includerelations = true) {
    $labels = parent::fieldLabels(true);

    $labels['Label'] = _t('UserForm.Label', 'Label');
    $labels['Type'] = _t('UserForm.Type', 'Type');
    $labels['RequiredLabel'] = _t('UserForm.Required', 'Required');

    return $labels;
}

你也可以在这里使用Boolean修饰符Nice来达到同样的效果。

private static $summary_fields = array(
    'Label',
    'Type',
    'Required.Nice'
);

private static $field_labels = array(
    'Required.Nice' => 'Required'
);

public function fieldLabels($includerelations = true) {
    $labels = parent::fieldLabels(true);

    $labels['Label'] = _t('UserForm.Label', 'Label');
    $labels['Type'] = _t('UserForm.Type', 'Type');
    $labels['Required.Nice'] = _t('UserForm.Required', 'Required');

    return $labels;
}