V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yantze
V2EX  ›  分享创造

在命令行中翻译和查词典(十多行 shell 代码)

  •  1
     
  •   yantze ·
    yantze · 2016-08-23 15:39:55 +08:00 · 4201 次点击
    这是一个创建于 3047 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在命令行中翻译和查词典

    Google api

    trs () {
        words=`echo $* | sed 's/ /+/g'`
        sl='en' # 'auto' 自动检测但翻译比较差
        tl='zh-CN'
        url="http://translate.google.cn/translate_a/single"
        params="client=p&sl=$sl&tl=$tl&hl=en&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&source=btn&ssel=0&tsel=0&kc=1&tk=829750.693266&q=$words"
        header='User-Agent:Mozilla/4.0'
        curl --silent -H $header "$url?$params" | sed -e 's/[,]\{2,\}/,/g' -e 's/\[,/\[/g' | jq '.[0]'
    }
    

    示例:

    yantze@xxx $ trs simple
    [
      [
        "简单",
        "simple",
        2
      ],
      [
        "Jiǎndān",
        "ˈsimpəl"
      ]
    ]
    

    Youdao api

    dict () {
        words=$*
        key='1648104049'
        keyfrom='aobailaile'
        url="http://fanyi.youdao.com/openapi.do"
        params="keyfrom=$keyfrom&key=$key&type=data&doctype=json&version=1.1"
        curl --silent --data-urlencode "q=$words" "$url?$params" | jq -C '.'
    }
    

    示例:

    yantze@xxx $ dict complex
    {
      "translation": [
        "复杂的"
      ],
      "basic": {
        "us-phonetic": "kəm'plɛks; 'kɑm,plɛks",
        "phonetic": "'kɒmpleks",
        "uk-phonetic": "'kɒmpleks",
        "explains": [
          "n. 复合体;综合设施",
          "adj. 复杂的;合成的"
        ]
      }
    }
    

    As REPL 可交互的方式查询

    trsl () {
        while true ;do read words; trs $words; done
    }
    

    使用方法

    • 下载 jq,让系统支持格式化 json 字符串, https://stedolan.github.io/jq/
    • 下载 gist 文件为 .translate_functions
    • .bashrc 或者 .zshrc 文件末尾添加 . .translate_functions 即可

    More

    为了简单可控所以成文,下面是一些功能全面的软件:

    源代码: https://gist.github.com/yantze/6114ed61499f1600d0dc6e071647b190

    第 1 条附言  ·  2016-08-24 08:52:45 +08:00

    trs 方法的 params 变量需要修改一下:

    trs () {
        # google api only support + concat
        words=`echo $* | sed 's/ /+/g'`
        sl='en' # 'auto' 自动检测但翻译比较差
        tl='zh-CN'
        params="client=gtx&ie=UTF-8&oe=UTF-8&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&sl=$sl&tl=$tl&hl=en&q=$words"
        url="http://translate.google.cn/translate_a/single"
        header='User-Agent:Mozilla/4.0'
        curl --silent -H $header "$url?$params" | sed -e 's/[,]\{2,\}/,/g' -e 's/\[,/\[/g' | jq '.[0]'
    }
    
    2 条回复    2016-08-24 17:03:18 +08:00
    jemyzhang
        1
    jemyzhang  
       2016-08-24 14:15:41 +08:00
    git hub 上 antigen 安装后,trans 卡主,是不是要翻墙?
    yantze
        2
    yantze  
    OP
       2016-08-24 17:03:18 +08:00 via iPad
    @jemyzhang 'trans' 如果你指的是 translate-shell ,是需要翻的,我看作者提供的 -x 代理选项没有效果,应该是这个程序使用的的 gawk 命令没有起作用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3379 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:24 · PVG 19:24 · LAX 03:24 · JFK 06:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.