You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python Discord谷歌翻译命令invalid destination language错误

问题核心

开发Discord机器人谷歌翻译指令时,调用googletrans库抛出ValueError: invalid destination language错误,报错指向翻译接口传入的目标语言参数无效。

排查思路

按优先级从高到低排查以下问题点:

  • 检查传入的lang参数格式:googletrans默认仅识别ISO 639-1标准的双字母语言代码(如中文为zh、英文为en),直接传入完整语言名称(如chinese、中文)会直接判定为无效。
  • 检查googletrans安装版本:PyPI源默认提供的3.0.0正式版本已因谷歌翻译接口升级完全失效,内置语言码表缺失、接口签名过期,哪怕传入正确语言码也会抛出无效语言错误。
  • 检查命令参数匹配逻辑:当前代码将用户输入的第一个空格前内容作为目标语言参数,如果用户输入时把待翻译内容放在前面、语言码放在后面,会导致lang拿到非语言码的文本,触发报错。
  • 检查参数是否带多余字符:如果用户输入语言码时附带了标点、特殊符号,也会导致匹配失败。
修复方案
  1. 先重装可用的googletrans版本,执行以下命令:
pip uninstall googletrans -y
pip install googletrans==4.0.0-rc1
  1. 替换原有翻译功能代码,增加语言别名兼容、参数校验逻辑,修复后代码如下:
from googletrans import Translator, LANGUAGES

# 配置常用语言别名,兼容用户输入中文/英文全称的使用习惯
LANG_ALIAS = {
    "中文": "zh",
    "汉语": "zh",
    "chinese": "zh",
    "英文": "en",
    "英语": "en",
    "english": "en",
    "日语": "ja",
    "日文": "ja",
    "japanese": "ja",
    "韩语": "ko",
    "韩文": "ko",
    "korean": "ko",
    "法语": "fr",
    "french": "fr",
    "德语": "de",
    "german": "de",
    "俄语": "ru",
    "russian": "ru"
}

@bot.command()
async def translate(ctx, lang, *, thing):
    # 统一转小写处理,匹配别名表
    input_lang = lang.lower()
    target_lang = LANG_ALIAS.get(input_lang, input_lang)

    # 提前校验语言有效性,避免直接抛出底层错误
    if target_lang not in LANGUAGES:
        await ctx.send("目标语言无效,请使用双字母语言码(如zh=中文、en=英文)或常用语言名,示例:`!translate en 你好世界`")
        return

    translator = Translator(service_urls=['translate.googleapis.com'])
    translation = translator.translate(thing, dest=target_lang)
    await ctx.send(f"翻译结果:\n{translation.text}")
  1. 统一机器人命令调用格式,告知用户使用方式为[命令前缀]translate <目标语言> <待翻译内容>,例如!translate zh Hello World。
补充说明

如果后续使用中出现连接超时、接口返回错误的问题,可在初始化Translator时替换可用的谷歌翻译服务地址,或适当增加请求超时时间。

内容的提问来源于stack exchange,提问作者xBoli232

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 23:09:30