【发布时间】:2015-11-09 02:46:00
【问题描述】:
设置:SS 3.1.13、Translatable 2.0.8 和 TranslatableDataObject dev-master。
我有两个 DataObject 类:“Facility”($has_one)和“FacilityType”($has_many),我选择在 ModelAdmin 中进行管理(因为它们是站点所有者的全局属性)。然而,尽管仔细阅读了设置说明here,但我无法获得 TranslatableDataObject 扩展来实际为它们启用翻译。
这是我的 _config.php:
// Set the site locale
i18n::set_locale('en_US');
SiteConfig::add_extension('Translatable');
// Set allowed locales
Translatable::set_allowed_locales(array('en_US', 'pl_PL'));
TranslatableDataObject::set_locales(array('en_US', 'pl_PL'));
Facility::add_extension("Translatable");
Facility::add_extension("TranslatableDataObject"); // tried "TranslatableDataObject('Title')" as well
FacilityCategory::add_extension("Translatable");
FacilityCategory::add_extension("TranslatableDataObject");
谁能确认此设置是否适合我?
FacilityCategory.php
class FacilityCategory extends DataObject {
private static $db = array(
'Title' => 'Varchar'
);
private static $has_many = array(
'Facilities' => 'Facility.FacilityCategory'
);
public function getCMSFields(){
$fields = FieldList::create(
TextField::create('Title')
);
return $fields;
}
}
class FacilityCategoryAdmin extends ModelAdmin {
private static $menu_title = 'Facility Categories';
private static $url_segment = 'facility-categories';
private static $managed_models = array(
'FacilityCategory'
);
}
Facility.php
class Facility extends DataObject {
private static $db = array(
'Title' => 'Varchar',
);
private static $has_one = array(
'Category' => 'FacilityCategory'
);
private static $summary_fields = array(
'Title' => 'Name',
'Category.Title' => 'Type'
);
public function getCMSFields(){
$fields = FieldList::create(
TextField::create('Title'),
DropdownField::create('CategoryID', 'Category')
->setSource(FacilityCategory::get()->map()->toArray())
->setEmptyString('-- select a category --')
);
return $fields;
}
}
class FacilityAdmin extends ModelAdmin {
private static $menu_title = 'Facilities';
private static $url_segment = 'facilities';
private static $managed_models = array(
'Facility'
);
}
【问题讨论】:
-
您应该将 Translatable OR TranslatableDataObject 添加到每个 DataObject。
-
感谢@wmk,但注释掉对 DataObjects 的 Translatable 调用并没有帮助。它只是一个旁注,还是你认为它绝对应该让它发挥作用?
-
嗯,这只是一个旁注。为了让它正常工作,您需要与我们分享更多代码,例如您的 ModelAdmin、DataObjects 的 getCMSFields 方法等...
-
@wmk 当然。我用您提出的代码更新了问题(仅将
FacilityType重命名为FacilityCategory)。
标签: internationalization silverstripe data-objects modeladmin