【问题标题】:SilverStripe File Title TranslationSilverStripe 文件标题翻译
【发布时间】:2016-07-26 15:13:25
【问题描述】:

是否可以为资产文件夹中的所有文件翻译FileTitle

我安装了可翻译插件,但 i18n SilverStripe 章节或插件文档中没有文件翻译文档。

在我的ProductPage 中,我有一个File 上传的自定义字段:

$fields->addFieldToTab(
    'Root.Attachments',
    $uploadField = UploadField::create('Files', 'Dateien')
);

这些文件可以在英语和德语网站上。我需要为每种语言翻译FileTitle

我尝试了以下方法,但是当我更改 File Title 时,德语和英语都会发生变化:

// Apply Translatable modifications
$this->applyTranslatableFieldsUpdate($fields, 'updateCMSFields');

【问题讨论】:

  • 你能不能把你想要翻译的内容和你尝试过的内容说清楚一点
  • 我更新了我的问题

标签: file internationalization silverstripe


【解决方案1】:

要在我们的File 类上启用可翻译模块,我们必须在我们的mysite/_config.php 文件中将Translatable 扩展添加到File

File::add_extension('Translatable');

但是,我认为 Translatable 模块目前不适用于文件。

访问资产时出现错误,因为 Translatable 类尝试将字段添加到 Folder 类,这会导致错误。这个问题现已在最新版本中通过 pull request to fix the Folder error 修复。

下一个问题是Translatable 要求对象具有CMSEditLink 函数。 SiteTreeSiteConfig 具有 CMSEditLink 函数,但 File(和 DataObject)没有。

为了解决这个问题,我们可以创建一个FileExtension 来为File 定义一个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 参数由可翻译模块设置。

所以在所有这些工作之后这仍然行不通。

【讨论】:

【解决方案2】:

当您开始使用此功能时,我建议您 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

【讨论】:

  • 我不想翻译标签“Titel”我想翻译输入字段中的文本...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多