silverstripe - 使用 _t() 方法转换 DataObject?

标签 silverstripe

我正在尝试使用 _t() 方法翻译一个 DataObject

我一直在 Pages 上使用它没有问题,但它似乎不适用于数据对象。

class SliderItem extends DataObject {

    private static $default_sort = 'Sort';

    private static $db = array(
        'Sort' => 'Int',
        'Title' => 'Varchar(255)',
        'Summary' => 'Text'
    );


    public function getCMSFields() {
        $fields = parent::getCMSFields();
        $fields->addFieldsToTab('Root.Main', array(
            TextField::create(_t('SliderItem.Title', 'Title')),
            TextareaField::create(_t('SliderItem.Summary', 'Summary'))
        ));
        $fields->removeByName(array('HomePageID', 'Sort'));
        return $fields;
    }
}

mysite/lang/de.yml

de:
  SliderItem:
    Title: 'I want to change this'
    Summary: 'And this..'

为什么这个例子不起作用?

最佳答案

确保在 FormField constructor 中定义变量名作为第一个参数,可翻译标题作为第二个参数。

这个:

TextField::create(_t('SliderItem.Title', 'Title'))

应该是这样的:

TextField::create('Title', _t('SliderItem.Title', 'Title'))

您的 getCMSFields 函数应如下所示:

public function getCMSFields() {
    $fields = parent::getCMSFields();

    $fields->addFieldsToTab('Root.Main', array(
        TextField::create('Title', _t('SliderItem.Title', 'Title')),
        TextareaField::create('Summary', _t('SliderItem.Summary', 'Summary'))
    ));

    $fields->removeByName(array('HomePageID', 'Sort'));

    return $fields;
}

关于silverstripe - 使用 _t() 方法转换 DataObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38711516/

相关文章:

silverstripe - 将 Silverstripe 网站设置为 CMS 之外的 Live 版本

php - 如何在 Silverstripe 中循环模板

php - 从 SilverStripe UploadField 中删除 "Edit"和 "Delete from files"

silverstripe - 合并css文件

php - 如何在 Silverstripe 中使用第二个数据库

mysql - Silverstripe 2.4 - 3.1 升级 - innerJoin 'unknown column' 问题

php - Silverstripe tinyMCE 添加自定义插件

Silverstripe 检查是否在循环中的第一次迭代

php - SilverStripe SiteConfig 标题字段操作

javascript - silverstripe-module yeoman 生成器中的 JS 意外 token 错误