Mlang

Nvim :help ページは、ソースからtree-sitter-vimdocパーサーを使用して生成されています。


複数言語機能 multi-lang
これは、さまざまな言語でメッセージとメニューを使用することについてです。マルチバイトテキストの編集については、multibyteを参照してください。
基本はユーザーマニュアルで説明されています: usr_45.txt.

1. メッセージ multilang-messages

Vimは環境からロケールを取得します。ほとんどの場合、これはVimが利用可能であれば、ユーザーが好む言語を使用することを意味します。
システムでサポートされているロケール名の一覧を表示するには、これらのディレクトリのいずれか(Unixの場合)を参照してください。
/usr/lib/locale
/usr/share/locale
残念ながら、大文字と小文字の違いが重要です。"-"と"_"の使用にも注意してください。
:lan :lang :language E197 :lan[guage] :lan[guage] mes[sages] :lan[guage] cty[pe] :lan[guage] tim[e] :lan[guage] col[late] 現在の言語(ロケールとも呼ばれる)を表示します。"messages"引数を指定すると、メッセージに使用される言語が表示されます。技術的な詳細: LC_MESSAGES。"ctype"引数を指定すると、文字エンコーディングに使用される言語が表示されます。技術的な詳細: LC_CTYPE。"time"引数を指定すると、strftime()に使用される言語が表示されます。技術的な詳細: LC_TIME。"collate"引数を指定すると、照合順序に使用される言語が表示されます。技術的な詳細: LC_COLLATE。引数を指定しないと、ロケールのすべての部分が印刷されます(これはシステムに依存します)。現在の言語は、v:langv:ctypev:collatev:lc_time変数を使用して取得することもできます。
:lan[guage] {name} :lan[guage] mes[sages] {name} :lan[guage] cty[pe] {name} :lan[guage] tim[e] {name} :lan[guage] col[late] {name} 現在の言語(ロケールとも呼ばれる)を{name}に設定します。ロケール{name}は、システムで有効なロケールである必要があります。一部のシステムでは"en"や"en_US"のようなエイリアスが受け入れられますが、"en_US.ISO_8859-1"のような完全な指定のみを受け入れるシステムもあります。Unixシステムでは、次のコマンドを使用して、サポートされているロケールを確認できます。
:!locale -a
"messages"引数を指定すると、メッセージに使用される言語が設定されます。たとえば、日本語のテキストを編集しながら英語のメッセージを表示する場合などに、これを変更できます。これは$LC_MESSAGESを設定します。"ctype"引数を指定すると、文字エンコーディングに使用される言語が設定されます。これは、Vimがリンクされているライブラリに影響します。これを'encoding'または"C"と異なる値に設定することは unusual です。これは$LC_CTYPEを設定します。"time"引数を指定すると、時刻と日付のメッセージに使用される言語が設定されます。これはstrftime()に影響します。これは$LC_TIMEを設定します。"collate"引数を指定すると、照合順序に使用される言語が設定されます。これは文字のソートに影響します。これは$LC_COLLATEを設定します。引数を指定しないと、すべてが設定され、さらに$LANGが設定されます。LC_NUMERIC値は常に"C"に設定されるため、浮動小数点数は小数点として'.'を使用します。これは、言語に依存する項目(一部のメッセージ、時刻と日付の形式)に影響します。すべてのシステムで完全にサポートされているわけではありません。失敗した場合はエラーメッセージが表示されます。成功した場合はメッセージは表示されません。例
:language
Current language: C
:language de_DE.ISO_8859-1
:language mes
Current messages language: de_DE.ISO_8859-1
:lang mes en
メッセージファイル(vim.mo)は、"$VIMRUNTIME/lang/xx/LC_MESSAGES"に配置する必要があります。ここで、"xx"は言語の略語(ほとんどの場合2文字)です。独自の翻訳を作成する場合は、.poファイルを生成し、.moファイルに変換する必要があります。
言語の自動選択を無効にするには、$LANG変数を希望の言語に設定します。翻訳を無効にするには、"en"を使用します。
:let $LANG = 'ja'
(Windowsのテキストは Muraoka Taro 氏によるものです)

2. メニュー multilang-menus

基本、特に'langmenu'の使用については、45.2を参照してください。
翻訳が行われた後にメニューに変更が加えられた場合、一部のメニューが英語で表示される場合があることに注意してください。翻訳のメンテナに連絡して、更新を依頼してください。翻訳者の名前とメールアドレスは、"$VIMRUNTIME/lang/menu_<lang>.vim"にあります。
メニューに使用するフォントを設定するには、:highlightコマンドを使用します。例
:highlight Menu font=k12,r12

ロケール名のエイリアス

残念ながら、ロケール名は、同じ言語とエンコーディングであっても、さまざまなシステムで異なります。予期したメニュー翻訳が表示されない場合は、次のコマンドの出力を確認してください。
echo v:lang
次に、"$VIMRUNTIME/lang"ディレクトリで、類似の言語を使用するメニュー翻訳ファイルを確認します。"-"が"_"であるという違いだけでも、ファイルが見つからない原因になります!もう1つの一般的な違いは、"iso8859-1"と"iso_8859-1"です。幸いなことに、Vimはすべての名前を小文字にするため、大文字と小文字の違いを心配する必要はありません。スペースはアンダースコアに変更され、エスケープする必要がなくなります。
別の名前の言語のメニュー翻訳ファイルが見つかった場合は、独自のランタイムディレクトリにファイルを作成して、そのファイルを読み込みます。そのファイルの名前は次のようになります。
~/.config/nvim/lang/menu_<v:lang>.vim
検索されるディレクトリについては、'runtimepath'オプションを確認してください。そのファイルに、別の名前のメニューファイルを読み込むコマンドを配置します。
runtime lang/menu_<other_lang>.vim

メニューの翻訳

独自の翻訳を行う場合は、下記の:menutransコマンドを使用できます。1つの言語の翻訳をVimスクリプトに配置することをお勧めします。まだ翻訳がない言語の場合は、メンテナになって、すべてのVimユーザーが利用できるようにすることを検討してください。Vimメンテナにメールを送信してください <[email protected]>。
:menut :menutrans :menutranslate :menut[ranslate] clear すべてのメニュー翻訳をクリアします。
:menut[ranslate] {english} {mylang} メニュー名{english}{mylang}に翻訳します。"&"や"<Tab>"などのすべての特殊文字を含める必要があります。スペースとドットは、他の:menuコマンドと同様に、バックスラッシュでエスケープする必要があります。{english}の大文字と小文字は無視されます。
例については、$VIMRUNTIME/langディレクトリを参照してください。
翻訳を試すには、最初にすべてのメニューを削除する必要があります。Vimを再起動せずにこれを行う方法は次のとおりです。
:source $VIMRUNTIME/delmenu.vim
:source <your-new-menu-file>
:source $VIMRUNTIME/menu.vim
メニューパスの各部分は個別に翻訳されます。"Help"が"Hilfe"に、"Overview"が"Überblick"に翻訳されると、"Help.Overview"は"Hilfe.Überblick"に翻訳されます。

3. スクリプト multilang-scripts

Vimスクリプトでは、v:lang変数を使用して現在の言語(ロケール)を取得できます。デフォルト値は"C"であるか、$LANG環境変数から取得されます。
次の例は、この変数を簡単な方法で使用して、メッセージをユーザーの言語設定に適応させる方法を示しています。
:if v:lang =~ "de_DE"
:  echo "Guten Morgen"
:else
:  echo "Good morning"
:endif
メイン
コマンド索引
クイックリファレンス