如何翻译选项卡名称和TextField?

时间:2016-07-26 07:15:29

标签: silverstripe

我正在尝试翻译TabTextField但目前尚未进行翻译。目前的设置如下:

区域设置在_config.php中设置 - 我已经刷新了。

i18n::set_locale('de_DE');

mysite的/郎/ de.yml

de:
  Page:
    FULLNAME: 'Testing this'
    CONTACTDETAILS: 'Root.Trying to change to this text'

page.php文件

<?php
class Page extends SiteTree {

    private static $db = array(
        'FullName' => 'Varchar(255)'
    );

    public function getCMSFields()
    {
        $fields = parent::getCMSFields();
        $fields->addFieldsToTab(_t('Page.CONTACTDETAILS', 'Root.ContactDetails'), array(
            TextField::create('FullName', _t('Page.FULLNAME', 'Full Name'))
        ));
        return $fields;
    }

}

但是文字没有翻译,只是用英文显示。我做错了什么?

1 个答案:

答案 0 :(得分:2)

CMS使用当前登录用户的Locale字段进行翻译。您可以通过转到de_DE,选择用户并将Security更改为Interface Language,将用户的区域设置更改为German (Germany)(此时您的翻译应该有效)。

如果您只想要翻译其中的字段,也可以在getCMSFields内设置区域设置:

public function getCMSFields()
{
    $oldLocale = i18n::get_locale();
    i18n::set_locale('de_DE');
    $fields = parent::getCMSFields();
    $fields->addFieldsToTab(_t('Page.CONTACTDETAILS', 'Root.ContactDetails'), array(
        TextField::create('FullName', _t('Page.FULLNAME', 'Full Name'))
    ));
    i18n::set_locale($oldLocale);
    return $fields;
}

通过CMS创建的Locale新用户将根据创建用户的Locale进行设置。