是否可以为资产文件夹中的所有文件翻译File
Title
?
我安装了可翻译插件,但在i18n SilverStripe章节或插件文档中没有文件翻译文档。
在我的ProductPage
我有File
上传的自定义字段:
$fields->addFieldToTab(
'Root.Attachments',
$uploadField = UploadField::create('Files', 'Dateien')
);
这些文件可以在英语和德语网站上。我需要为每种语言翻译File
Title
。
我尝试了以下操作,但当我更改File
Title
时,它会更改德语和英语:
// Apply Translatable modifications
$this->applyTranslatableFieldsUpdate($fields, 'updateCMSFields');
答案 0 :(得分:2)
要在我们的File
课程中启用可翻译模块,我们必须在Translatable
文件中将File
扩展名添加到mysite/_config.php
:
File::add_extension('Translatable');
但是,我不认为Translatable模块目前正在处理文件。
访问资产时出错,因为Translatable类尝试向Folder
类添加字段,这会导致错误。现在已使用此pull request to fix the Folder
error修复了最新版本。
下一个问题是Translatable
要求对象具有CMSEditLink
功能。 SiteTree
和SiteConfig
具有CMSEditLink
功能,但File
(和DataObject
)却没有。
要解决此问题,我们可以创建FileExtension
来为CMSEditLink
定义File
函数:
class FileExtension extends DataExtension {
public function CMSEditLink() {
return singleton('AssetAdmin')->Link('EditForm/field/File/item/' . $this->owner->ID . '/edit');
}
}
要启用此扩展程序,我们会将以下内容添加到config.yml
:
File:
extensions:
- FileExtension
完成所有这些后,我们可以创建文件翻译并查看每个文件的翻译列表,但翻译文件链接重定向到根管理员屏幕。如果设置了?Locale=
URL参数,资产链接似乎会重定向。此URL参数由可翻译模块设置。
因此,在完成所有工作后,这仍然无效。
答案 1 :(得分:1)
当你开始使用它时,我建议你read the docs
要回答每当您创建字段,然后指定标题,您需要使用_t or internationalisation function。
_t函数是silverstripe用于所有字段的函数,因此您只需要为指定的函数找到正确的命名空间和实体名称字符串...
_t("Namespace.Entity","This is a string")
对于突出显示的字段,它位于对象File
中,它是命名空间,实体是Name
,您可以在framework\lang\en.yml
要覆盖它,你可以在mysite或你的模块文件夹中创建你自己的lang文件,并在其中详细覆盖它......
en:
File:
Name: My New Name Title