我在我的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 并在顶部列中包含已翻译的标签吗?
答案 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;
}