🐯
機械翻訳Vimプラグインを作った
この記事はVim駅伝の2024-02-16の記事です。
前回の記事はkyoh86さんのVimによるToDo管理を支える技術です。
「みんなの自動翻訳@TexTra」を使用した翻訳プラグインを作りました。
内部的にcurl
を使ってhttpリクエストし、翻訳を行います。
つかいかた
TexTraのユーザー登録が必要です。
登録後、ユーザーIDとAPI keyとAPI secretをtextra#setup()
に渡して初期化します。
call textra#setup({
\ 'name': 'your_name',
\ 'key': 'your_key',
\ 'secret': 'your_secret'
\ })
その後、textra#translate()
で翻訳を実行できるようになります。
echo textra#translate('Hello world!', 'en', 'ja')
このプラグインでは特にコマンドを用意していませんが、ユースケースに応じて、適切なコマンドを定義すると便利です。
以下は冒頭に添付したGIFで使用しているものです。
翻訳したい文字列を一度yankし、その内容をもとに翻訳を行います。:Textra ja en
のように使います。
※popup_atcursor
を使っているのでVim専用です。ここの表示部分を変えればNeovimでも動きます。
function s:display_result(result) abort
call popup_atcursor(a:result, {})
endfunction
function s:cmd_translate(from_lang, to_lang, reg = '') abort
echo '[textra] translate ...'
let src = getreg(a:reg)->substitute('[[:space:]]\+', ' ', 'g')
let dst = textra#translate(src, a:from_lang, a:to_lang)
redraw!
call s:display_result(dst)
endfunction
command! -nargs=+ Textra call s:cmd_translate(<f-args>)
このへんはいくつかヘルプにサンプルを載せたので見ていただけると嬉しいです。
謝辞
このプラグインは2024/01/17に参加した目黒.vimで作成しました。
Discussion