diff --git a/docs/ja/index.md b/docs/ja/index.md index d622b4ab..7bf780d9 100644 --- a/docs/ja/index.md +++ b/docs/ja/index.md @@ -9,79 +9,65 @@ icon: home translation: ja translators: - pit-ray -version: 4.3.3 -description: +version: 5.9.0 +description: --- +## これは何ですか? +**win-vind** は、Windows のための軽量なハイブリッド UI システムを提供します。CUI と GUI の両方の特徴を持ち、このツールをインストールすることで、Vim と同じように Windows GUI を制御することができます。 -## このソフトウェアについて +### 1. Vim ユーザーフレンドリー。 +すべての設定方法やモードの概念は Vim から派生しており、Vim のような UI 操作が可能です。Vim ユーザーは win-vind のマクロ機能と追加のモード概念を少しの学習コストで理解するだけで済みます。 -**win-vind**は、Vimとそのプラグインの影響を強く受けた、Windowsを操作するためのツールボックスです。 +### 2. 多くの便利な組み込みコマンドがあります。 +従来のキーバインディングツールのような複雑なスクリプトや依存関係を気にする必要はありません。低レベルで最適化された組み込みコマンドを組み合わせて、自由にユーザー定義のコマンドを作成できます。 +### 3. 非常に携帯性が高く完全にオープンソースです。 +win-vind はユーザー権限で実行される依存関係のない小さな単一のバイナリです。また、コマンドラインからも利用でき、UI 操作のためのコマンドとして `$ win-vind -c "ggyyGp"` のように使用できます。 -### 機能 -#### システム設計 -- 軽量なバインディング -- Vimライクなモード管理 -- .vimrcスタイルの設定 -- ユーザ権限内での実行 -- VimやAHKからのワンショット利用 (例: `$ win-vind -f easy_click_left`) -#### 代表的な機能 -- マウスレスのGUI操作 -- どこでもVimエミュレーション -- 常駐コマンドラインを利用したプロセス起動 (例: `:!vim ~/.vimrc`) -- 低レベルなキーマッピング (例: CapsLockをCtrl) -- キーストロークのマクロ定義 -- タイルウィンドウマネージャ -- GUIのためのVimium/EasyMotionライクな操作 +### トップ機能デモ + -##### 動作例 - +### 設定ファイル例 -##### 設定ファイルの例 - -.vimrcスタイルで設定できます。.vindrcではオプションの切り替え、パラメータの設定、低レベルなキーマッピング、バインディングの定義を行うことができます。 - +.vimrc スタイルで設定できます。.vindrc ではオプションの切り替え、パラメータの設定、低レベルのキーの再マップ、および関数のバインディングを行うことができます。 ```vim -" ------------ Example ------------ -" Virtual command line options +" {tiny, small, normal, big, huge} のバージョンを選択します。 +version normal + +" パラメータの変更 set shell = cmd set cmd_fontsize = 14 -set cmd_roughpos = LowerLeft -set cmd_maxchar = 100 +set cmd_fontname = Consolas +set easyclick_bgcolor=E67E22 +set easyclick_fontcolor=34495E -" Enable block style caret -set blockstylecaret -set blockstylecaret_mode = solid +" capslock を ctrl にマップします。 +imap {} -" Low-level key mapping in resident mode -rmap +" 便利なショートカットを定義します +inoremap +inoremap +inoremap -" Define bindings in GUI normal mode -gnnoremap select_left_window -gnnoremap select_right_window -gnnoremap select_upper_window -gnnoremap select_lower_window +" アプリケーションの起動を登録します +noremap :! gvim +noremap :e http://example.com -" Define bindings in insert mode -imap -inoremap to_edi_normal +" Vim のようなマクロを定義します +enoremap t ggyyGp -imap -inoremap easy_click_left - -imap -inoremap window_resizer - -" Define keystroke macros -gnnoremap :!notepad -gnnoremap :e https://www.google.com +" オートコマンドの適用 +autocmd AppLeave * +autocmd AppEnter,EdiNormalEnter vim.exe ``` + ## ライセンス -このソフトウェアは[MIT License](https://github.com/pit-ray/win-vind/blob/master/LICENSE.txt)を採用しています。 +このソフトウェアは [MIT ライセンス](https://github.com/pit-ray/win-vind/blob/master/LICENSE.txt) によって提供されています。 diff --git a/tools/translate.py b/tools/translate.py new file mode 100644 index 00000000..bd0eb689 --- /dev/null +++ b/tools/translate.py @@ -0,0 +1,88 @@ +from argparse import ArgumentParser + +import openai + + +class MarkdownTranslator: + def __init__(self, api_key: str, lang: str, temperature: float = 1.0): + openai.api_key = api_key + self.temperature = temperature + + self.model = 'gpt-3.5-turbo-16k-0613' + + rules = ''' +- Never change the Markdown markup structure. Don't add or remove links. Do not change any URL. +- Never change the contents of code blocks even if they appear to have a bug. +- Always preserve the original line breaks. Do not add or remove blank lines. +- Never touch the permalink such as `{/*examples*/}` at the end of each heading. +- Never touch HTML-like tags such as ``. +''' + + self.base_prompt = '''I am translating the documentation of a software. +Translate the Markdown content I'll paste later into {}. +You must strictly follow the rules below. +{}'''.format(lang, rules) + + def make_messages(self, text): + return [ + { + 'role': 'system', + 'content': 'You are a translator for Markdown documents.', + }, + { + 'role': 'user', + 'content': self.base_prompt, + }, + { + 'role': 'assistant', + 'content': + 'Okay, input the Markdown.\n' + \ + 'I will only return the translated text.', + }, + { + 'role': 'user', + 'content': text, + } + ] + + def translate(self, text): + messages = self.make_messages(text) + response = openai.ChatCompletion.create( + model=self.model, messages=messages, temperature=self.temperature) + result = response['choices'][0]['message']['content'] + return result + + +def read_markdown(filename): + with open(filename, 'r') as f: + text = f.read() + f.close() + return text + + +def translate_to_japanese(api_key, markdown_filename): + translator = MarkdownTranslator(api_key, 'Japanese') + + text = read_markdown(markdown_filename) + result = translator.translate(text) + + print(result) + + +def print_prompts(markdown_filename): + translator = MarkdownTranslator('', 'Japanese') + + text = read_markdown(markdown_filename) + messages = translator.make_messages(text) + for msg in messages: + print(msg['content']) + print('\n') + + +if __name__ == '__main__': + parser = ArgumentParser() + parser.add_argument('--api_key', type=str, help='API Key of ChatGPT') + args = parser.parse_args() + + translate_to_japanese(args.api_key, 'docs/index.md') + # print_prompts('docs/index.md')