File SilverStripe文件标题翻译
是否可以为资产文件夹中的所有文件翻译File SilverStripe文件标题翻译,file,internationalization,silverstripe,File,Internationalization,Silverstripe,是否可以为资产文件夹中的所有文件翻译文件标题 我安装了可翻译插件,但i18n SilverStripe章节或插件文档中没有文件翻译文档 在myProductPage中,我有一个自定义字段用于文件上载: $fields->addFieldToTab( 'Root.Attachments', $uploadField = UploadField::create('Files', 'Dateien') ); 这些文件可以在英语和德语网站上找到。我需要为每种语言翻译文件标题 我
文件
标题
我安装了可翻译插件,但i18n SilverStripe章节或插件文档中没有文件翻译文档
在myProductPage
中,我有一个自定义字段用于文件
上载:
$fields->addFieldToTab(
'Root.Attachments',
$uploadField = UploadField::create('Files', 'Dateien')
);
这些文件可以在英语和德语网站上找到。我需要为每种语言翻译文件
标题
我尝试了以下操作,但当我更改文件
标题时,德语和英语的标题都会更改:
// Apply Translatable modifications
$this->applyTranslatableFieldsUpdate($fields, 'updateCMSFields');
当你开始做这件事时,我建议你
在创建字段时回答,然后在其中指定需要使用的标题
函数是silverstripe用于所有字段的函数,因此您只需要为指定函数找到正确的名称空间和实体名称字符串
_t("Namespace.Entity","This is a string")
对于突出显示的字段,它位于对象文件
中,该文件是名称空间,实体是名称
,您可以在framework\lang\en.yml
要覆盖它,您可以在mysite或模块文件夹中创建自己的lang文件,并使用以下详细信息覆盖它
en:
File:
Name: My New Name Title
要在文件
类上启用可翻译模块,我们必须在mysite/\u config.php
文件中向文件
添加translateable
扩展名:
File::add_extension('Translatable');
但是,我认为可翻译模块目前不适用于文件
访问资产时出错,因为可翻译类尝试将字段添加到文件夹
类,这会导致错误。此问题已在最新版本中修复
下一个问题是translateable
要求对象具有CMSEditLink
函数SiteTree
和SiteConfig
具有CMSEditLink
功能,但文件
(和数据对象
)没有
为了解决这个问题,我们可以创建一个文件扩展名
,为文件
定义一个CMSEditLink
函数:
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参数由可翻译模块设置
因此,在所有这些工作之后,这仍然不起作用。你能更清楚地了解你想要翻译的内容和你尝试过的内容吗请更新我的问题我不想翻译标签“Titel”我想翻译输入字段中的文本…我已经提交了pull请求:我发现的下一个问题是CMSEditLink
是SiteTree
上的一个函数,而不是DataObject
或File
。在可翻译的代码中,检查此函数是否存在。这将永远不会在任何东西上工作,除了页面:我使用SiteConfig插件来翻译,翻译正在工作。SiteConfig扩展了DataObject。是的,这是因为SiteConfig
具有CMSEditLink
功能:我们可能需要做的是通过扩展名将CMSEditLink
功能添加到文件
,以定义文件的CMS编辑链接。