我正在尝试翻译Tab
和TextField
但目前尚未进行翻译。目前的设置如下:
区域设置在_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;
}
}
但是文字没有翻译,只是用英文显示。我做错了什么?
答案 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
进行设置。