AutoLang

一个轻量级插件,支持多达100种语言,自动将聊天消息翻译成每个玩家的首选语言,实现无缝沟通。

资源图片
# AutoLang - 自动 Minecraft 聊天翻译 AutoLang 是一个复杂的 Minecraft 插件,旨在通过提供实时双向聊天翻译来打破语言障碍。 专为性能和灵活性而设计,它可无缝集成到您现有的服务器设置中,并为服务器管理员提供广泛的自定义选项。 ## 目录 1. [核心功能](#核心功能) 2. [安装指南](#安装指南) 3. [配置参考](#配置参考) 4. [语言支持](#语言支持) 5. [命令参考](#命令参考) 6. [高级用法](#高级用法) 7. [故障排除](#故障排除) 8. [性能优化](#性能优化) 9. [API 集成](#api 集成) 10. [常见问题解答](#常见问题解答) ## 核心功能 ### 智能语言检测 AutoLang 采用两级检测系统: 1. **主要检测**: 使用 Lingua 库,这是一个高度准确的语言识别系统,分析文本的字符模式和统计特性。 2. **回退检测**: 如果 Lingua 无法初始化或如果性能成为问题,则回退到基于启发式的轻量级检测器。 ### 翻译架构 - **异步处理**: 所有翻译操作都以异步方式执行,以防止服务器卡顿。 - **智能缓存层**: 实施具有可配置大小和 TTL 的 LRU(最近最少使用)缓存,以最大限度地减少重复翻译。 - **双向翻译**: 维护消息上下文,以便在任何支持的语言对之间进行准确的双向翻译。 ### 玩家体验 - **无缝集成**: 与现有的聊天插件和权限系统配合使用。 - **对客户端语言的感知**: 检测并尊重玩家的客户端语言设置(仅限 Paper 服务器)。 - **不具侵入性**: 玩家可以选择退出翻译或查看原始消息。 - **上下文保留**: 在翻译消息中保留格式、颜色和可点击元素。 ## 安装指南 ### 系统要求 - **Minecraft 服务器**: Paper/Spigot 1.21.1 或更高版本(推荐以获得完整的特性支持) - **Java**: Java 21 或更高版本 - **内存**: 至少 4GB RAM(建议对于较大的服务器使用 6GB+) - **存储**: 1GB 自由空间(如果使用本地翻译模型,则更多) ### 步骤安装 1. 从 Modrinth 发布页面下载最新的 AutoLang JAR 文件 2. 将 JAR 文件放在服务器的 `plugins/` 目录中 3. 启动您的服务器以生成默认配置 4. 停止服务器并编辑 `plugins/AutoLang/config.yml` 以满足您的偏好 5. 重新启动您的服务器以应用更改 ### 初始设置建议 1. **对于新的服务器**: - 从默认设置开始 - 使用几种语言测试基本功能 - 逐渐启用其他功能 2. **对于现有的服务器**: - 首先在测试环境中进行测试 - 考虑从禁用翻译开始 (`autodetect.enabled: false`) - 在启用所有人之前,逐渐推广给工作人员 ## 配置参考 ### 核心设置 ```yaml # 默认服务器语言(必须是配置的语言代码) default-language: "en" # 最大并发翻译线程数 max-translation-threads: 4 # 等待翻译的最大时间(毫秒) translation-timeout-ms: 3000 # 启用调试日志记录 (详细) debug: false ### 语言配置 AutoLang 通过支持自动语言发现和手动覆盖,提供灵活的语言管理。配置结构既强大又易于使用。 ```yaml languages: # 从 LibreTranslate 自动获取支持的语言 # 启用时,插件将查询您的 LibreTranslate 实例以获取可用语言 auto-from-libretranslate: true # 限制特定的语言代码 (不区分大小写) # 示例: ["en", "es", "fr", "de", "ja"] # 如果为空,则包括来自源的所有语言 include: [] # 限制特定的语言代码 # 示例: ["zh-tw", "pt-br"](排除特定的区域变体) # 即使在上述或静态中包含,这些语言也将被排除 exclude: [] # 静态语言定义 # 这些用于在以下三种情况下: # 1. 当自动获取失败时作为后备 # 2. 增加您的 LibreTranslate 实例未提供的语言 # 3. 覆盖自动获取的语言的属性 static: - code: "en" name: "English" - code: "es" name: "Español" # 覆盖特定语言代码的显示名称 # 这仅影响语言如何显示给玩家 # 格式: {code: "显示名称"} overrides: - code: "zh" name: "简体中文" # Simplified Chinese - code: "zh-tw" name: "繁體中文" # Traditional Chinese - code: "pt-br" name: "Português (Brasil)" # Brazilian Portuguese # 语言检测设置 detection: # 最小置信度阈值 (0.0 到 1.0) # 较低的值可能会增加错误判断 # 较高的值可能会无法检测到一些语言 confidence-threshold: 0.75 # 在做出检测之前分析的消息数量 # 更多的消息会提高准确性,但会延迟检测 min-messages: 3 # 分析的最大消息长度(字符) # 更长的消息提供更多的上下文,但会使用更多的资源 max-message-length: 1000 # 客户端语言集成 (仅限 Paper 服务器) client-locale: # 启用/禁用客户端语言检测 enabled: true # 自动设置检测到的语言 auto-accept: true # 当玩家语言改变时通知玩家 notify-on-detect: true # 语言检测通知的消息格式 # 可用占位符: %player%, %lang%, %code% detection-message: "&a您的聊天语言已设置为 %lang%" # 翻译消息的格式化选项 formatting: # 翻译消息的格式 # 可用占位符: # %player% - 原始消息发送者 # %message% - 翻译消息 # %original% - 原始消息(如果 show-original 为 true) # %lang% - 目标语言名称 # %code% - 目标语言代码 format: "&7[%lang%] &f%player%&7: &r%message%" # 在翻译后显示原始消息 show-original: false # 当 show-original 为 true 时,原始消息的格式 original-format: " &7(Original: %original%)" # 消息冷却设置 cooldown: # 全局消息冷却时间(秒) global: 0.5 # 每个玩家的消息冷却时间(秒) per-player: 2.0 # 当冷却时间激活时显示的提示信息 # 可用占位符: %time% message: "&c请等待 %time% 秒后才能发送另一条消息。" # 反垃圾邮件设置 anti-spam: # 启用/禁用反垃圾邮件 enabled: true # 允许在时间窗口内发送的相似消息的最大数量 max-similar: 3 # 相似消息检测的时间窗口(秒) time-window: 10 # 当触发反垃圾邮件时显示的提示信息 message: "&c请避免快速连续地发送相似的消息。" ### 翻译引擎配置 AutoLang 支持多种翻译后端,每种后端都有其自己的配置选项。选择最适合服务器需求的后端。 #### 1. LibreTranslate (推荐) LibreTranslate 是一个开源翻译 API,支持 100 多种语言。 它可以自托管或用于公共实例。 ```yaml libretranslate: # 启用/禁用 LibreTranslate 集成 enabled: true # 您 LibreTranslate 实例的基本 URL # 示例: # - 本地: "http://127.0.0.1:5000" # - 公开: "https://libretranslate.com" base-url: "http://127.0.0.1:5000" # 连接到非 localhost URL 时必需 allow-remote: false # 禁用 SSL 证书验证(用于自签名证书) insecure-tls: false # 您的 LibreTranslate 实例所需的 API 密钥 api-key: "" # 请求超时时间(秒) timeout: 30 # 失败请求的最大重试次数 max-retries: 3 # 重试尝试之间的延迟(秒) retry-delay: 2 # 自动语言检测 auto-detect: true # 对更优质的语言对首选 # 格式: "源-目标" preferred-pairs: - "en-es" - "es-en" - "fr-en" - "en-fr" # 管理的 LibreTranslate 服务器 (可选) # 自动下载和管理本地 LibreTranslate 实例 managed: enabled: false # 启动 LibreTranslate 的命令 # 示例: # - "libretranslate" (如果通过 pip 安装) # - "python -m libretranslate" # - "docker run -p 5000:5000 libretranslate/libretranslate" command: "libretranslate" # 运行服务器的端口 port: 5000 # 绑定到主机(使用 0.0.0.0 进行网络访问) host: "127.0.0.1" # 限制加载的语言以减少内存使用 # 示例: "en,es,fr,de,ru,zh,ja,ko" load-only: "" # 首次运行时自动下载语言模型 download-models: true # 存储模型的位置(默认:~/.local/share/libretranslate) models-path: "" # 其他命令行参数 # 示例: "--load-only en,es --threads 4" extra-args: "" # 环境变量 # 示例: "CUDA_VISIBLE_DEVICES=0" # 示例: "PUID=1000" # 健康检查设置 health-check: # 启用健康检查 enabled: true # 健康检查间隔(秒) interval: 30 # 健康检查请求超时时间(秒) timeout: 5 # 在将服务视为不健康之前发生的连续故障次数 threshold: 3 # 自动重启设置 auto-restart: # 启用失败时的自动重启 enabled: true # 在放弃之前尝试重启的最大次数 max-attempts: 5 # 重启尝试之间的延迟(秒) delay: 10 # 最大运行时间(分钟)(0 = 无限制) max-uptime: 0 ``` # 自行翻译后端 # 如果未使用 LibreTranslate,请取消注释并配置 # # local-model: # # 启用本地模型翻译 # enabled: false # # # 您的本地翻译命令/脚本的路径 # # 该命令应通过 STDIN 接收文本并将其翻译作为 STDOUT 输出 # command: "/path/to/translator" # # # 命令的工作目录 # working-directory: "/path/to/working/directory" # # # 命令行参数 # # 使用占位符: {from} {to} 用于语言代码 # args: "--from {from} --to {to}" # # # 环境变量 # env: # MODEL_PATH: "/path/to/model" # DEVICE: "cuda" # 或 "cpu" # # # 超时时间(秒) # timeout: 30 # # # 最大并发翻译 # max-concurrent: 2 # # # 输入/输出编码 (默认: UTF-8) # encoding: "UTF-8" # # # 错误处理 # error-handling: # # 最大重试次数 # max-retries: 3 # # # 重试之间的延迟(秒) # retry-delay: 2 # # # 翻译失败时的后备语言 # fallback-language: "en" # # 外部 API (Google 翻译的示例) # # google-translate: # enabled: false # api-key: "your-api-key" # project-id: "your-project-id" # location: "global" # model: "projects/{project-id}/locations/{location}/models/general/nmt" ### 检测设置 ```yaml detector: # "lingua" (更准确) 或 "heuristic" (更轻量级) type: "lingua" # 自动检测设置 autodetect: enabled: true # 在尝试检测之前需要分析的消息数量 min-messages-before-detect: 3 # 置信度阈值 (0.0-1.0) confidence-threshold: 0.80 # 客户端语言检测 (需要 Paper) client-locale: enabled: true # 首次加入时自动设置语言 auto-accept: true # 当客户端语言改变时提示 on-change: true ``` ### 存储 ```yaml storage: # "sqlite" 或 "yaml" type: "sqlite" # 仅适用于 SQLite sqlite-file: "plugins/AutoLang/languages.db" # 缓存设置 cache: enabled: true # 最大缓存翻译数量 size: 500 # 超时时间(秒)(0 = 无过期) ttl-seconds: 0 ``` ## 命令 & 权限 ### 命令 - `/lang` - 显示当前语言 - `/lang set ` - 设置你的语言 - `/lang list` - 列出可用语言 - `/lang reload` - 重新加载配置 - `/lang health` - 检查 LibreTranslate 状态 ### 权限 - `autolang.use` - 允许使用语言命令 (默认: true) - `autolang.admin` - 允许管理员命令,例如重新加载 (默认: op) - `autolang.bypass` - 绕过翻译 (查看所有消息的原始语言) ## 语言支持 AutoLang 支持您 LibreTranslate 实例中的所有语言(默认情况下超过 100 种语言)。 插件在启动时会自动获取并缓存可用语言。 ### 常用语言代码 - `en` - 英语 - `es` - 西班牙语 - `fr` - 法语 - `de` - 德语 - `ru` - 俄语 - `zh` - 简体中文 - `ja` - 日语 - `ar` - 阿拉伯语 - `pt` - 葡萄牙语 - `hi` - 印地语 ## 安装 1. 从 Modrinth 下载最新版本 2. 将 JAR 放在服务器的 `plugins/` 文件夹中 3. 启动您的服务器以生成配置 4. 编辑 `plugins/AutoLang/config.yml` 以满足您的偏好 5. 运行 `/reload` 或重新启动服务器 ## 🔧 故障排除 ### LibreTranslate 连接问题 - 如果使用远程服务器,请确保 `allow-remote: true` - 对于具有自签名证书的 HTTPS,启用 `insecure-tls: true` - 查看服务器日志以获取连接错误 ### 语言检测 - Lingua 检测器至少需要配置 2 种语言 - 更多的消息可以提高检测的准确性 - 如果 Lingua 导致性能问题,请尝试使用启发式检测器 ### 性能 - 根据服务器的 CPU 调整 `max-translation-threads` - 启用缓存以减少 API 调用 - 考虑使用本地 LibreTranslate 实例以获得更好的性能 ## 依赖项 - **必需**: Java 21+ - **推荐**: Paper/Spigot 1.21.1+ (以获得完整的特性支持) - **可选**: LibreTranslate 服务器 (本地或远程) ## 许可证 AutoLang 使用 MIT 许可证。 ## 支持 找到了错误或有功能请求吗? 在 [GitHub](https://github.com/yourusername/autolang/issues) 上打开一个 issue。 ## 指标 AutoLang 使用 bStats 进行匿名使用统计。 您可以在 `bStats/config.yml` 文件中选择退出。