arillo/silverstripe-deepl-translator

为silverstripe CMS添加deepl翻译

安装: 88

依赖项: 0

建议者: 0

安全: 0

星标: 3

关注者: 2

分支: 1

开放问题: 1

类型:silverstripe-vendormodule

0.0.10 2024-09-20 09:46 UTC

This package is auto-updated.

Last update: 2024-09-20 09:46:35 UTC


README

将Deepl翻译API添加到Fluent翻译的SilverStripe CMS中。目前它只为文本字段(TextField,TextareaField,HTMLEditorField)添加UI元素以翻译其内容。

安装

composer require arillo/silverstripe-deepl-translator

配置

创建Deepl API密钥并将其添加到您的.env

DEEPL_APIKEY="<YOUR_DEEPL_APIKEY>"

如果您使用词汇表功能,需要在.env中设置一个唯一的前缀名称。这将防止旧词汇表被删除,如果它们的名称不以该前缀开头。如果您在多个实例中(例如,开发环境和生产环境)使用相同的API密钥,这将很有用。

DEEPL_GLOSSARY_NAME_PREFIX="myky-dev"

配置您的DataObjects以显示Deepl翻译处理程序。

注意:重要的是,此配置必须在将Fluent添加到这些DataObjects之后进行。否则,UI将不会显示。

假设您有以下名为myfluentcms的Fluent配置

---
Name: myfluentcms
After: 
 - '#basei18n'
 - '#fluentcms'
 - '#fluentcms-pages'
---
SilverStripe\i18n\i18n:
  default_locale: de_CH

Arillo\Elements\ElementBase:
  extensions:
    - 'TractorCow\Fluent\Extension\FluentVersionedExtension'

字段级翻译器

#myfluentcms之后应用deepl配置

---
Name: mydeepl
After: 
 - '#myfluentcms'
 - '#silverstripe-deepl-translator'
---
SilverStripe\CMS\Model\SiteTree:
  extensions:
    - Arillo\Deepl\FieldWiseTranslationExtension

Arillo\Elements\ElementBase:
  extensions:
    - Arillo\Deepl\FieldWiseTranslationExtension

使URLSegmentFields可翻译(注意:实验性;JS实现正在进行中)

Arillo\Deepl\FieldWiseTranslationExtension:
  deepl_fieldwise_translate_urlsegment_field: true

字段级翻译器的字段值收集备选方案

为了预加载字段级翻译的当前值,此模块使用以下方法$record->{$fieldName}。但是,您可以通过实现一个名为deeplFieldValueFromRecord的类方法来指定备选数据源,以覆盖默认行为,例如。

    // in some DataObject class
    // ...

    public function deeplFieldValueFromRecord($fieldName)
    {
        switch ($fieldName) {
            case 'AOLink_Title':
                return $this->LinkObject()->Title;

            case 'AOLink_URL':
                return $this->LinkObject()->URL;

            default:
                return $this->{$fieldName};
        }
    }

仅向所选字段添加翻译功能

以下是一个示例配置,它只为App\Model\MyDataObject中的TitleDescription字段添加字段级翻译功能。

App\Model\MyDataObject:
  extensions:
    - Arillo\Deepl\FieldWiseTranslationExtension
  deepl_fieldwise_included_fields:
    - Title
    - Description

数据对象级翻译器

自动翻译数据对象的所有可翻译字段。只需将该数据对象类的扩展添加到Arillo\Deepl\DataObjectWiseTranslationExtension中即可,例如。

---
Name: mydeepl
After: 
 - '#myfluentcms'
 - '#silverstripe-deepl-translator'
---
SilverStripe\CMS\Model\SiteTree:
  extensions:
    - Arillo\Deepl\DataObjectWiseTranslationExtension

Arillo\Elements\ElementBase:
  extensions:
    - Arillo\Deepl\DataObjectWiseTranslationExtension

可选地,您可以定义也将被翻译的关系。请确保相应的DataObject也使用某些Fluent扩展。

要配置所需的关系,请使用deepl_dataobject_included_relations配置,例如。

Arillo\Elements\ElementBase:
  extensions:
    - Arillo\Deepl\DataObjectWiseTranslationExtension
  deepl_dataobject_included_relations:
    - Elements
    - LinkObject

词汇表

如果您想使用Deepl的词汇表功能,您可以在SiteConfig中编辑您的词汇表。

您需要在.env中设置词汇表名称前缀,如下所示

DEEPL_GLOSSARY_NAME_PREFIX="mysite-prod"

这些前缀对于在不同的环境中运行您的应用程序很有用,例如:devlive

截至本文写作时,请注意,Deepl词汇表API不允许更新词汇表。因此,更新是删除和创建。清除机制考虑到了名称前缀。例如:如果您的环境设置为mysite-prod,则它将仅删除以该前缀开头的词汇表。这应该有助于防止意外的词汇表删除。

CMS

在CMS中,您必须向非管理员组添加USE_DEEPL权限。

替代方案

如果您想使用Google Translate,请考虑使用:bratiask/silverstripe-autotranslate