Contents

mlang - vimdoc

Home
*mlang.txt*     For Vim バージョン 7.3.  Last change: 2012 Jan 15


                VIMリファレンスマニュアル    by Bram Moolenaar


多言語機能                                      *multilang* *multi-lang*

このマニュアルはメッセージとメニューを様々な言語で使用する方法について書かれて
いる。マルチバイトテキストの編集については|multibyte|を参照。

基本的なことはユーザマニュアルでも説明されている: |usr_45.txt|

1. メッセージ                   |multilang-messages|
2. メニュー                     |multilang-menus|
3. スクリプト                   |multilang-scripts|

多言語のヘルプ機能については|help-translated|をご覧ください。

{これらのコマンドはViには存在しない}
{|+multi_lang|機能を無効にしてコンパイルした場合には利用できない}

==============================================================================
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]
                        現在の言語(言い換えればロケール)を表示する。
                        引数"message"を使用するとメッセージに利用されている言
                        語が表示される。専門的には: LC_MESSAGES
                        引数"ctype"を使用すると文字エンコードに利用されている
                        言語が表示される。専門的には: LC_CTYPE
                        引数"time"を使用するとstrftime()が表示に利用する言語が
                        表示される。専門的には: LC_TIME
                        無引数ならばロケールの全体が表示される(どのように表示
                        されるかはシステムに依存する)。
                        現在の言語は|v:lang||v:ctype| そして |v:lc_time|の各
                        変数で取得することもできる。

:lan[guage] {name}
:lan[guage] mes[sages] {name}
:lan[guage] cty[pe] {name}
:lan[guage] tim[e] {name}
                        現在の言語(言い換えればロケール)を{name}に設定する。
                        {name}というロケールがシステムに存在していなければなら
                        ない。あるシステムでは"en"とか"en_US"と言った別称を受
                        け付けるが、中には"en_US.ISO_8859-1"のように完全な指定
                        しか受け付けないシステムもある。Unix では次のコマンド
                        で、サポートされているロケールを確認できる:
                                :!locale -a
                        引数"message"を使用するとメッセージに利用する言語を設
                        定する。これにより例として日本語を編集中に英語メッセー
                        ジを使用するようなことができる。これは$LC_MESSAGESを設
                        定する。
                        引数"ctype"を使用すると文字エンコードに利用する言語を
                        設定する。これはVimがリンクしているライブラリに影響を
                        与える。"C"や'encoding'と異なる値を指定するのは一般的
                        ではない。これは$LC_CTYPEを設定する。
                        引数"time"を使用すると時刻と日付のメッセージに利用され
                        る言語を設定する。strftime()に影響を与える。これは
                        $LC_TIMEを設定する。
                        無引数ならば両方が設定され、加えて$LANGが設定される。
                        |+float| 機能付きでコンパイルされている場合は、常に
                        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


MS-WINDOWSでのメッセージ翻訳                            *win32-gettext*

インストーラを利用した場合には、既にメッセージの翻訳が動作している。動作しない
のであればlibintl.dllを別途入手する必要がある:

        http://sourceforge.net/projects/gettext

これにはxgettext, msgformatその他のツールも含まれている。

libintl.dllは(g)vim.exeと同じディレクトリか、環境変数PATHに示されたディレクト
リのどれかに置く必要がある。メッセージファイル(vim.mo)は
"$VIMRUNTIME/lang/xx/LC_MESSAGES"に置かなければならない。"xx"はその言語名の省
略形(ほとんどの場合2文字)に置き換えて考える。

独自の翻訳を書く場合には.poファイルを作成しそれを.moファイルに変換する必要があ
る。そのためにはVimのソースを取得してファイル"src/po/README.txt"を読む必要があ
る。

自動選択された言語を変更するには、$LANGに設定する。次の例は日本語メッセージを
選択する方法を示している:

  :let $LANG = "ja"

翻訳をしないようにするには"en"を指定する。

(このWindows向け文章は村岡太郎によって書かれた)
(訳注: 訳注として追加されたわけでなく原文にこの記述がある)

==============================================================================
2. メニュー                                             *multilang-menus*

基本(特に 'langmenu' の使い方)は|45.2|を参照。

メニューの翻訳が作られた後に元のメニューが変更された場合には、それらのメニュー
は英語のまま表示されることがある。そのような場合には翻訳のメンテナーに連絡を取
り更新するように頼んで欲しい。翻訳者の名前とメールアドレスはファイル
"$VIMRUNTIME/lang/menu_<lang>.vim"の中に見つけることができる。

メニューに利用するフォント(もしくはフォントセット)を指定するには、|:highlight|
コマンドを使用する。例:

        :highlight Menu font=k12,r12


ロケールの省略名

あいにく、同じ言語に同じエンコードであっても、ロケール名がシステムによって異な
ることがある。期待した通りにメニューが翻訳されない時には、次のコマンドの実行結
果を調べる:

        echo v:lang

次に"$VIMRUNTIME/lang"ディレクトリを調べて同じ言語に使われるメニュー翻訳ファイ
ル探す。"-" と "_"が違うだけでファイルは見つけられなくなる。良くある間違い
"iso8859-1" と "iso_8859-1"にも用心する。幸い、Vimは全ての名前を小文字にするの
で、大文字小文字の区別を心配する必要はない。名前中の空白文字はエスケープするの
ではなくアンダースコア("_")に変換される。

使いたい言語用の、それと異なる名前のメニュー翻訳ファイルを見つけた場合は、独自
のランタイムディレクトリに読み込まれるようファイルを作成する。ファイルの名前は
次のようにする:

        ~/.vim/lang/menu_<v:lang>.vim

ファイルが検索されるディレクトリを指定するオプション'runtimepath'を確認する。
そのファイルに別の名前のメニューファイルを読み込む、次のようなコマンドを記入す
る:

        runtime lang/menu_<other_lang>.vim


メニューを翻訳する

メニューを独自に翻訳したい場合は、以下で説明するように|:menutrans|コマンドを使
うことができる。ある1つの言語の翻訳は1つのVimスクリプトにまとめられることが推
奨される。まだ翻訳が存在しない言語については、メンテナーになりその翻訳を全ての
Vimユーザに提供することを是非とも考えていただきたい。Vimのメンテナーにメールを
送って欲しい。アドレスは<maintainer@vim.org>である。

                                        *:menut* *:menutrans* *:menutranslate*
:menut[ranslate] clear
                        メニューの翻訳をすべて削除する。

:menut[ranslate] {english} {mylang}
                        メニュー名{english}{mylang}に翻訳する。"&" と
                        "<Tab>"の特別な文字も全て含まれる必要がある。半角ス
                        ペースとピリオド('.')は|:menu|コマンドと同様に、バック
                        スラッシュ(訳注: '\')でエスケープする必要がある。

例は$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


 vim:tw=78:sw=4:ts=8:ft=help:norl: