Deprecated as api getting changed
use translate-shell.vim instead
| translate-shell.vim: | https://github.com/echuraev/translate-shell.vim |
|---|---|
| Title: | trans.vim |
| Author: | Rykka |
| Version: | 1.51 |
| Github: | https://github.com/Rykka/trans.vim |
| Update: | 2013-05-17 |
Trans.vim makes translation in vim easier.
Trans.vim使翻译在vim更容易。 Trans.vimはvimでの変換が容易になります。 Trans.vim rend la traduction dans vim facile. Транс.вим чини превод на вим лакше. ...
Add replace option by default.
Requirment:
- Vim compiled with python. (or webapi.vim)
Install:
In your vimrc:
Bundle 'Rykka/trans.vim' " for no python version " Bundle 'mattn/webapi-vim'Then use
:BundleInstallto install.
:Trans<leader>ttTranslate. 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,
:TransPowill fill translate msgid.Following function included:
Plural message translation. Python format string '%(item)s' will be keeped. Multiline string Translation.
g:trans_default_apiTranslator 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_regThe 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_echoAfter translation, echo the result.
set it to 0, to disable it.
default is 1
g:trans_has_pythoncompiled 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.
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.
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' },
\}
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:
- create the live account live
- get the client_id (customer ID) at datamarket
- get the client_secret at developer (create a app with client_id)
- 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',
\}
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',
\}
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',
\}
1.5
Add
:TransBetweenFix the """ and "'" and "n" with python api.
Rewrite TransPo.
Now work better than auto trans by google translate toolkit.