` - 设置你的语言
- `/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` 文件中选择退出。# 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