Giter Site home page Giter Site logo

trans.vim's Introduction

Title:trans.vim
Author: Rykka
Version: 1.51
Github:https://github.com/Rykka/trans.vim
Update:2013-05-17

Trans.vim

Trans.vim makes translation in vim easier.

Trans.vim使翻译在vim更容易。
Trans.vimはvimでの変換が容易になります。
Trans.vim rend la traduction dans vim facile.
Транс.вим чини превод на вим лакше.
...

What's New

Add replace option by default.

Installation

Requirment:

Install:

  • Vundle:

    In your vimrc:

    Bundle 'Rykka/trans.vim'
    " for no python version
    " Bundle 'mattn/webapi-vim'
    

    Then use :BundleInstall to install.

Usage

:Trans <leader>tt

Translate. word under cursor or current visual selection.

e.g. ':Trans hello' will echo 你好 and set register @" to 你好

:TransTo <leader>to
Translate word with input lang code.
:TransBetween <leader>tb
Translate with lang code From and To.
:TransPo [[FROM],[TO]]

Translate po file. [FROM] and [TO] are lang code and can be ommited.

For a buffer of Po, :TransPo will fill translate msgid.

Following function included:

Plural message translation. Python format string '%(item)s' will be keeped. Multiline string Translation.

Options

g:trans_default_api

Translator engine, 'google', 'bing', 'baidu', 'youdao' are valid.

default is 'google'.

see APIS for details.

g:trans_default_lang
Your main language, default is 'zh-CN'
g:trans_map_trans
Mapping for translate , default is '<leader>tt'
g:trans_map_to
Mapping for translate to lang code, default is '<leader>to'
g:trans_set_reg

The register for you to set.

default is '"' means @".

you can set it to '+' to clip to @+.

or you can set it to '_' to ignore it.

g:trans_set_echo

After translation, echo the result.

set it to 0, to disable it.

default is 1

g:trans_has_python

compiled with python or not.

set it to 0 to disable using python, thus webapi.vim is needed.

default is your python version.

g:trans_replace

replace current words or selection,

default is 1.

APIs

There are several built-in APIs, and you can define your own API to use other translators.

Define your own API

if your API need only 'GET' method, then in your vimrc:

" init default apis
call trans#data#init()

" API_QUERY_STR is something like 'text=%TEXT&from=%FROM&to=%TO'
" API_PARSER_FUNC is the name of the function to parse the response content
" And you can add 'headers' key for specified headers dict
let g:trans_api.YOUR_API = {
    \'type': 'get',
    \'url': YOUR_API_URL,
    \'params': YOUR_API_PARAMS,
    \'query_str': API_QUERY_STR,
    \'parser': API_PARSER_FUNC,
    \}

fun! API_PARSER_FUNC(content)
    " parse content here.
    return a:content
endfun

Then you can use it with let g:trans_default_api = 'YOUR_API',

or :call trans#request('YOUR_API',text,from,to)

You can see the built-in APIs for references.

Google

This is the web API. Which may violate the term of google translator.

No oauth API added as that needs billing.

let g:trans_api.google = {
    \'url': 'http://translate.google.com/translate_a/t',
    \'params' : {
            \"client" : 'firefox-a',
            \"ie" : 'UTF-8',
            \"oe" : 'UTF-8',
            \},
    \'query_str': 'langpair=%FROM%7C%TO&text=%TEXT',
    \'parser': 'trans#data#parser_google',
    \'type': 'get',
    \'headers': { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.15 Safari/536.5' },
    \}

Bing

It's using microsoft translator API actually.

Use your key as the built-in key have limit of 2000000 char per month.

Get your key for oauth_obj:

  1. create the live account live
  2. get the client_id (customer ID) at datamarket
  3. get the client_secret at developer (create a app with client_id)
  4. Active microsoft translator API at translator_data
let g:trans_api.bing = {'url': 'http://api.microsofttranslator.com/v2/ajax.svc/Translate',
            \'type': 'oauth',
            \'oauth_url': 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/',
            \'oauth_obj': {
                        \'client_id' : '086296d7-e63f-48f3-9ce8-36233efa7b0a',
                        \'client_secret' : 'YFPq/2G/cz5DnLASQTa1gy8ts3QGuTUBagt1qljkUis=',
                        \'scope' : 'http://api.microsofttranslator.com',
                        \'grant_type' : 'client_credentials',
                        \},
            \'token_str': 'appId=Bearer%20%TOKEN',
            \'token_expire': 600,
            \'token_parser': 'trans#data#parser_t_bing',
            \'parser': 'trans#data#parser_bing',
            \'query_str': 'from=%FROM&to=%TO&text=%TEXT',
            \}

Baidu

Only 'en' and 'zh-cn',

Create your key at Baidu-Api

let g:trans_api.baidu = {
            \'url': 'http://openapi.baidu.com/public/2.0/bmt/translate',
            \'query_str' : 'q=%TEXT&from=%FROM&to=%TO',
            \'type' : 'get',
            \'params' : {'client_id': 'XrPxmIZ2nq4GgKGMxZmGPM5r'},
            \'parser' : 'trans#data#parser_baidu',
            \}

Youdao

Only 'en' and 'zh-cn'

Create a new key at youdao-api, the default key is limit to 1000 per hour.

let g:trans_api.youdao = {'url': 'http://fanyi.youdao.com/openapi.do',
            \'query_str' : 'q=%TEXT',
            \'type' : 'get',
            \'params' : {'key': '1050975093',
                        \'keyfrom': 'trans-vim',
                        \'doctype': 'json',
                        \'version': '1.1',
                        \'type': 'data',
                        \},
            \'parser' : 'trans#data#parser_youdao',
            \}

ChangeLog

  • 1.5

    • Add :TransBetween

    • Fix the """ and "'" and "n" with python api.

    • Rewrite TransPo.

      Now work better than auto trans by google translate toolkit.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.