robole / sulu-ai-translator-bundle
使用DeepL翻译任何类型的内容
v1.0.1
2024-08-05 10:57 UTC
Requires
- php: ^8.2
- deeplcom/deepl-php: ^1.7
- sulu/sulu: ^2.5
- symfony/config: ^6.2
- symfony/dependency-injection: ^6.2
- symfony/framework-bundle: ^6.2
- symfony/http-foundation: ^6.2
- symfony/http-kernel: ^6.2
- symfony/intl: ^6.2
- symfony/security-core: ^6.3
- symfony/translation: ^6.2
README
Sulu组件,用于集成DeepL API以进行内容字段的批量和单次翻译。
AITranslatorBundle功能
- DeepLService用于从DeepL API获取翻译和使用统计数据
- 带有权限的“使用统计数据”管理视图
- 输入字段旁边的翻译按钮
- 工具栏按钮,可批量翻译所有字段(目前仅适用于页面、片段和表单)
安装
此组件需要PHP 8.2。请确保已安装Node 18(或对于Sulu版本小于2.6.0,Node 14)以构建Sulu管理UI。
- 打开命令行控制台,进入您的项目目录,然后运行
composer require robole/sulu-ai-translator-bundle
如果您没有使用Symfony Flex,您还需要在您的config/bundles.php
文件中添加该组件
return [ //... Robole\SuluAITranslatorBundle\SuluAITranslatorBundle::class => ['all' => true], ];
- 通过向您的
routes_admin.yaml
添加以下内容来注册新路由
SuluAITranslatorBundle: resource: "@SuluAITranslatorBundle/Resources/config/routes_admin.yml"
- 添加文件
config/packages/sulu_ai_translator.yaml
,配置如下
sulu_ai_translator: deepl_api_key: "%env(DEEPL_API_KEY)%" locale_mapping: en: "en-GB"
通过locale_mapping
,您可以将您的网站空间的区域设置键映射到相应的官方DeepL目标语言。对于不应进行翻译的语言,请使用值null
。
- 通过向您的
assets/admin/package.json
添加以下内容来引用前端代码
"dependencies": { "sulu-ai-translator-bundle": "file:../../vendor/robole/sulu-ai-translator-bundle/src/Resources/js" }
- 通过向您的
assets/admin/app.js
添加以下内容来导入前端代码
import "sulu-ai-translator-bundle";
- 安装所有npm依赖项并构建管理UI(查看所有选项)
cd assets/admin
npm install
npm run build
- 将您的DeepL API密钥添加到
.env
文件中
DEEPL_API_KEY="..."
- 在Sulu后端中授予权限以访问“DeepL使用统计”视图。
限制
- 目前仅支持类型为
input[type="text"]
、textarea
和<CkEditor />
的字段 - 翻译在客户端应用,使内容创建者能够检查翻译质量并撤销更改
- 文本字段内的内部页面链接需要手动更新(显然)
本地开发
- 将以下内容添加到
composer.json
的repositories
部分
"repositories": [ { "type": "path", "url": "./../local-path-to-bundle" } ],
- 安装组件
composer require robole/sulu-ai-translator-bundle:@dev
故障排除
如果翻译请求返回输入文本,则很可能在您的locale_mapping
组件配置中定义的语言键不支持DeepL目标语言。这将在响应对象中指示。
下一版本的改进想法
- 添加用于更快安装组件的Symfony配方。
- 用基于存储的方法替换
document.querySelector
来切换块。 - 为每种语言启用翻译严格度的配置(例如,正式、非正式等)
- 在翻译按钮旁边添加下拉弹出窗口,用于覆盖字段的原语言和目标语言
免责声明
本软件包使用DeepL API提供翻译服务。本项目与DeepL SE(DeepL SE)及其子公司或关联公司没有任何关联、合作、授权、认可或官方联系。本软件包中使用DeepL API纯粹是为了功能需求,并不代表与DeepL公司有任何关系。
DeepL是DeepL SE的注册商标。