我在我的DataObject中使用公共函数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;
}
除了required之外,所有字段都通过fieldLabels()整齐地翻译,因为它具有函数的自定义值而不是数据.将getrequiredLabel更改为required会修复此问题.
我可以保留记录字段的值getrequiredLabel,并在顶部列中保留已翻译的标签吗?
解决方法:
将$summary_fields getrequiredLabel变量设置为requiredLabel并使用$field_labels设置字段标签.
private static $summary_fields = array(
'Label',
'Type',
'requiredLabel'
);
private static $field_labels = array(
'requiredLabel' => 'required'
);
然后在fieldLabels中,应使用$labels [‘requiredLabel’]访问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;
}
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;
}