尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Lingarr插件开发实战:如何用.NET编写自定义翻译服务插件(附Cloudflare示例)

Lingarr插件开发实战:如何用.NET编写自定义翻译服务插件(附Cloudflare示例) Lingarr插件开发实战如何用.NET编写自定义翻译服务插件附Cloudflare示例【免费下载链接】lingarrLingarr is an application that supports both local and SaaS translation services to translate subtitle files into a specified target language. With automated translation options, Lingarr simplifies translating subtitles.项目地址: https://gitcode.com/gh_mirrors/li/lingarr你是否在使用Lingarr翻译字幕时遇到过这样的困扰内置的翻译服务不够用想接入自己公司的AI接口却无从下手本文将带你进行Lingarr插件开发实战用.NET编写自定义翻译服务插件。Lingarr是一款支持本地与SaaS翻译服务的开源字幕翻译应用其灵活的插件机制允许任何人接入新的大模型。我们将以官方Cloudflare示例为蓝本手把手完成从接口理解、编码实现到部署加载的全流程。插件机制的核心接口与清单在动手写代码之前先理解Lingarr插件系统的三件套翻译服务实现实现ITranslationService接口负责真正调用AI接口翻译文本。插件清单实现IPluginManifest接口告诉Lingarr在设置界面展示哪些配置项如API Key、模型名。版本声明通过LingarrPluginApiVersion特性标记插件API版本宿主会校验主版本号是否匹配。官方已将这套机制整理成示例源码位于 samples/CloudflarePlugin/核心契约定义在 Lingarr.Contracts/Translation/ITranslationService.cs 和 Lingarr.Contracts/Interfaces/Plugins/IPluginManifest.cs。第一步搭建.NET类库项目创建一个 .NET 类库只需引用Lingarr.Contracts项目即可。参考官方示例的项目文件 samples/CloudflarePlugin/CloudflarePlugin.csproj目标框架为 .NET 10引用Lingarr.Contracts项目引用Microsoft.Extensions.Logging.Abstractions用于日志在 samples/CloudflarePlugin/AssemblyInfo.cs 中声明API版本[assembly: LingarrPluginApiVersion(1, 0)]这一行至关重要缺失或主版本不匹配的DLL会被 PluginLoader 直接跳过。第二步实现翻译服务翻译服务类用[PluginProvider(你的标识)]标记然后实现ITranslationService的四个成员TranslateAsync核心翻译方法接收文本、源语言、目标语言还可选接收前后字幕行作为上下文。GetLanguages返回支持的语言列表如果服务没有语言列表接口返回空即可。GetModels返回可选的模型下拉列表。GetLanguagePair将请求的语言解析为实际语言代码。Cloudflare示例的实现思路很清晰见 samples/CloudflarePlugin/CloudflareTranslator.cs通过注入的ISettingsAccess读取账号ID、加密的API Token和模型配置。构造HTTP请求调用https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/{model}。处理429 Too Many Requests和503状态码按Lingarr配置的重试策略退避重试。失败时抛出TranslationException让Lingarr统一处理错误提示。注意插件标识不能与内置服务冲突以下为保留标识anthropic、openai、gemini、deepseek、mistral、xai、localai、deepl、libretranslate、google、bing、microsoft、yandex。第三步编写插件清单自动生成配置界面清单类的作用是零前端代码生成设置表单。它声明了提供者名称、显示名称、描述以及一个PluginSettingField列表。每个字段包含Key、Label、类型文本/URL/密钥/远程下拉、是否必填、默认值和说明。Cloudflare清单声明了三个字段Account ID文本、API token密钥类型会加密存储、Translation model文本默认cf/meta/m2m100-1.2b见 samples/CloudflarePlugin/CloudflarePluginManifest.cs。有了清单你在设置 插件页面就能看到完整的配置表单无需修改前端代码。第四步构建与部署插件执行以下命令编译dotnet build samples/CloudflarePlugin/CloudflarePlugin.csproj -c Release构建产物中你需要Lingarr.Plugin.Cloudflare.dll和Lingarr.Contracts.dll两个文件。Lingarr通过环境变量PLUGINS_PATH指定插件目录。以Docker Compose为例services: lingarr: image: lingarr/lingarr:latest environment: PLUGINS_PATH: /app/plugins volumes: - ./plugins:/app/plugins把两个DLL放入./plugins目录并重启Lingarr看到日志输出类似Loaded plugin ... (1 manifest(s))即加载成功随后插件会出现在Settings Plugins中。实战要点与安全提醒上下文翻译TranslateAsync的上下文参数可传递前后字幕行这对依赖上下文的模型如人名、术语一致性很有帮助务必善用。加密存储API密钥类字段使用Secret类型并通过GetEncryptedSettingAsync读取避免明文落盘。错误处理统一抛出TranslationException定义在 Lingarr.Contracts/Exceptions/TranslationException.cs让上层重试与展示逻辑正常工作。安全警示Lingarr的插件以完整权限运行没有沙箱隔离请只加载可信来源的DLL。写在最后通过本文的Lingarr插件开发实战你已经掌握了自定义翻译服务插件的完整链路理解ITranslationService接口、编写清单驱动配置界面、声明API版本、构建并部署到PLUGINS_PATH目录。无论你想接入企业私有大模型、国产AI服务还是自建翻译网关这套模式都完全适用。现在就动手写一个属于你自己的翻译插件吧如需获取完整项目可执行git clone https://gitcode.com/gh_mirrors/li/lingarr查看源码与示例。【免费下载链接】lingarrLingarr is an application that supports both local and SaaS translation services to translate subtitle files into a specified target language. With automated translation options, Lingarr simplifies translating subtitles.项目地址: https://gitcode.com/gh_mirrors/li/lingarr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表