|
1 |
| -*repeat.txt* For Vim バージョン 9.1. Last change: 2023 May 26 |
| 1 | +*repeat.txt* For Vim バージョン 9.1. Last change: 2024 Aug 12 |
2 | 2 |
|
3 | 3 |
|
4 | 4 | VIMリファレンスマニュアル by Bram Moolenaar
|
@@ -717,39 +717,352 @@ Filetype プラグインはファイルタイプに複数のプラグインが
|
717 | 717 | "git" のようなプログラムが必要である。github ではリリースを作成すると自動的に
|
718 | 718 | アーカイブが作られるので、あなたは両方を同時に行うことができる。
|
719 | 719 |
|
720 |
| -ディレクトリ構成は次のようになる。 > |
| 720 | +ディレクトリ構成は次のようになる: |
721 | 721 | start/foobar/plugin/foo.vim " 常にロードされ、コマンドを定義する
|
722 | 722 | start/foobar/plugin/bar.vim " 常にロードされ、コマンドを定義する
|
723 | 723 | start/foobar/autoload/foo.vim " fooコマンドを使用した時に読み込む
|
724 | 724 | start/foobar/doc/foo.txt " foo.vimのヘルプ
|
725 | 725 | start/foobar/doc/tags " ヘルプタグ
|
| 726 | + start/foobar/lang/<lang_id>/LC_MESSAGES/foobar.mo |
| 727 | + " <lang_id> 言語でのプラグインのメッ |
| 728 | + " セージ。これらのファイルは任意。 |
726 | 729 | opt/fooextra/plugin/extra.vim " オプションのプラグイン、コマンド定義
|
727 | 730 | opt/fooextra/autoload/extra.vim " extraコマンドを使用した時に読み込む
|
728 | 731 | opt/fooextra/doc/extra.txt " extra.vimのヘルプ
|
729 | 732 | opt/fooextra/doc/tags " ヘルプタグ
|
730 | 733 |
|
731 |
| -これにより、ユーザーは次の操作を行うことができる。 > |
| 734 | +これにより、ユーザーは次の操作を行うことができる: > |
732 | 735 | mkdir ~/.vim/pack
|
733 | 736 | cd ~/.vim/pack
|
734 | 737 | git clone https://github.com/you/foobar.git myfoobar
|
735 |
| -
|
| 738 | +< |
736 | 739 | ここで "myfoobar" はユーザーが選択できる名前だが、唯一の条件は他のパッケージと
|
737 | 740 | は異なることである。
|
738 | 741 |
|
739 | 742 | ドキュメントでは、プラグインの機能について説明し、オプションのプラグインをロー
|
740 | 743 | ドする方法をユーザーに伝える。 >
|
741 | 744 | :packadd! fooextra
|
742 |
| -
|
| 745 | +< |
743 | 746 | このpackaddコマンドをプラグインの1つに追加して、オプションのプラグインが必要な
|
744 | 747 | ときに実行することができる。
|
745 | 748 |
|
| 749 | + *package-doc* *package-documentation* |
746 | 750 | `:helptags` コマンドを実行して、doc/tags ファイルを生成する。この生成されたファ
|
747 | 751 | イルをパッケージに含めるということは、パッケージディレクトリにパッケージを落と
|
748 | 752 | すことができ、ヘルプコマンドがすぐに動作することを意味する。プラグインヘルプを
|
749 | 753 | 変更した後にコマンドを再実行することを忘れないでほしい。 >
|
750 | 754 | :helptags path/start/foobar/doc
|
751 | 755 | :helptags path/opt/fooextra/doc
|
752 |
| -
|
| 756 | +< |
| 757 | + *package-translation* |
| 758 | +プラグインが翻訳されたメッセージを表示するには、いくつかの手順が必要である。 |
| 759 | +メッセージを翻訳したいプラグインの作者は、|bindtextdomain()| 関数を使用して、 |
| 760 | +パッケージの名前と翻訳が見つかるディレクトリの場所を定義する必要がある: > |
| 761 | + :call bindtextdomain("foobar", |
| 762 | + \ fnamemodify(expand("<script>"), ':p:h') .. '/../lang/') |
| 763 | +< |
| 764 | +ここで: |
| 765 | + "foobar" |gettext()| 関数が後でこのプラグインの翻訳文字列を検索する際に |
| 766 | + 使用する一意のパッケージ識別子。 |
| 767 | + "lang/" 翻訳ファイルが配置されているディレクトリ構造への相対パスまたは |
| 768 | + 絶対パス。 |
| 769 | + |
| 770 | +メッセージ翻訳ファイルを配置するディレクトリ構造は、(パッケージの最上位ディレ |
| 771 | +クトリから): |
| 772 | +"lang/<lang_id>/LC_MESSAGES" である。<lang_id> の形式については、|multi-lang| |
| 773 | +を参照。この関数は、プラグインの初期化中に 1 回だけ呼び出す必要がある。 |
| 774 | +これが完了すると、|gettext()| 関数を使用して翻訳されたメッセージを取得できる: > |
| 775 | + :echo gettext("Hello", "foobar") |
| 776 | +< |
| 777 | +ここで: |
| 778 | + "Hello" メッセージ "Hello" がユーザーの言語に翻訳される |:lang| |
| 779 | + "foobar" 前もって |bindtextdomain()| 関数を使用して定義されたパッケージ |
| 780 | + 識別子。 |
| 781 | + |
| 782 | +その後、翻訳用のテンプレートファイルを作成する必要がある - POT-ファイル。 |
| 783 | +これを行うには、次のコマンドを実行する (Vim リポジトリを使用): > |
| 784 | + cd ~/forkvim/src/po |
| 785 | + make -f Makefile "PLUGPACKAGE={package}" \ |
| 786 | + "PO_PLUG_INPUTLIST={path/to/scripts-that-need-translations.vim}" \ |
| 787 | + ["POT_PLUGPACKAGE_PATH={path/where/to/write/{package}.pot}" \] |
| 788 | + ["VIMPROG={path/to/vim} \] |
| 789 | + {package}.pot |
| 790 | +< |
| 791 | +ここで: |
| 792 | +PLUGPACKAGE |bindtextdomain()| および |gettext()| 関数で指定した |
| 793 | + パッケージの名前を含む変数。例えば、"foobar"。 |
| 794 | +PO_PLUG_INPUTLIST 翻訳する文字列を含むスクリプトを含む変数、つまり |
| 795 | + |gettext()| 関数を指定した場所。スクリプトは絶対パスま |
| 796 | + たは相対パスで指定される。 |
| 797 | + 例: start/foobar/plugin/bar.vim では、スクリプトを区切 |
| 798 | + るために空白を使用する。 |
| 799 | +POT_PLUGPACKAGE_PATH 準備された POT ファイルが保存されるディレクトリを含む |
| 800 | + 変数。これは必須の変数ではない。ディレクトリが指定され |
| 801 | + ていない場合、POT ファイルは "src/po" ディレクトリに配 |
| 802 | + 置される。 |
| 803 | +VIMPROG 動作する Vim のディレクトリを含む変数。Vim エディタが |
| 804 | + すでにビルドおよびインストールされていて、$PATH 環境変 |
| 805 | + 数に含まれている場合は、vim 実行可能ファイルの名前だけ |
| 806 | + を指定できる。 |
| 807 | +{package}.pot これはターゲットである。パッケージ名として指定される。 |
| 808 | + 例えば、"foobar" に .pot 拡張子を付けたもの。 |
| 809 | +POT ファイルが作成されると、その内容は、翻訳が準備される言語ごとに個別の PO |
| 810 | +ファイルにコピーされる。 |
| 811 | + |
| 812 | +翻訳が完了した場合、PO ファイルをバイナリ MO ファイル形式に変換し、これらの MO |
| 813 | +ファイルを、先ほど作成した構造の "lang/" ディレクトリに配置する必要がある。 |
| 814 | +これを行うには、以下のコマンドを実行する: |
| 815 | +> |
| 816 | + cd ~/forkvim/src/po |
| 817 | + make -f Makefile "PLUGPACKAGE={package}" \ |
| 818 | + "PO_PLUGPACKAGE={path/to/{lang}.po}" \ |
| 819 | + ["MO_PLUGPACKAGE_PATH={path/to/lang/<lang_id>/LC_MESSAGES}" \] |
| 820 | + {package}.mo |
| 821 | +< |
| 822 | +ここで: |
| 823 | +PLUGPACKAGE |bindtextdomain()| および |gettext()| 関数で指定した |
| 824 | + パッケージの名前を含む変数。例えば、"foobar"。 |
| 825 | +PO_PLUGPACKAGE PO ファイルを含む変数。ファイルは絶対パスまたは相対パ |
| 826 | + スで指定される。例えば、"~/myproject/translate/en.po" |
| 827 | +MO_PLUGPACKAGE_PATH "lang/" ディレクトリの構造を含む変数。このディレクトリ |
| 828 | + には、翻訳ファイルが配置される。例えば、"foobar.mo"。 |
| 829 | + これは必須の変数ではない。ディレクトリが指定されていな |
| 830 | + い場合、MO ファイルは "src/po" ディレクトリに保存され |
| 831 | + る。 |
| 832 | +{package}.mo これはターゲットである。パッケージの名前として指定され |
| 833 | + る。例えば、"foobar" に .mo 拡張子を付けたもの。 |
| 834 | + |
| 835 | + *package-translate_example* |
| 836 | +具体的な例ですべてを示し、"ftplugin/aap.vim" ファイルをロシア語とドイツ語に翻 |
| 837 | +訳してみよう。 |
| 838 | + |
| 839 | +まず、"aap.vim" ファイルを準備し、その中で |bindtextdomain()| と |gettext()| |
| 840 | +関数呼び出しを指定する。 |
| 841 | +> |
| 842 | + " このバッファに対して未完了の場合にのみこれを実行 |
| 843 | + if exists("b:did_ftplugin") |
| 844 | + finish |
| 845 | + endif |
| 846 | +
|
| 847 | + " このバッファに別のプラグインを読み込まない |
| 848 | + let b:did_ftplugin = 1 |
| 849 | + call bindtextdomain("aap", fnamemodify(expand("<script>"), ':p:h') .. '/../lang/') |
| 850 | +
|
| 851 | + " このプラグインを元に戻すため、'formatoptions'、'comments'、'commentstring' |
| 852 | + " および 'expandtab' をリセットする。 |
| 853 | + let b:undo_ftplugin = "setl fo< com< cms< et<" |
| 854 | +
|
| 855 | + " 'formatoptions' を設定して、コメント行は分割されるが、他の行は分割されない |
| 856 | + " ようにし、また、<CR> を押すか "o" を使用すると、コメントリーダーが挿入され |
| 857 | + " るようにする。 |
| 858 | + setlocal fo-=t fo+=croql |
| 859 | +
|
| 860 | + " 'comments' を設定して、コメント内の破線リストをフォーマットする。 |
| 861 | + setlocal comments=s:#\ -,m:#\ \ ,e:#,n:#,fb:- |
| 862 | + setlocal commentstring=#\ %s |
| 863 | +
|
| 864 | + " トラブルを避けるためにタブをスペースに展開する。 |
| 865 | + setlocal expandtab |
| 866 | +
|
| 867 | + if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") |
| 868 | + let b:browsefilter = gettext("Aap Recipe Files (*.aap)\t*.aap\n", "aap") |
| 869 | + if has("win32") |
| 870 | + let b:browsefilter ..= gettext("All Files (*.*)\t*\n", "aap") |
| 871 | + else |
| 872 | + let b:browsefilter ..= gettext("All Files (*)\t*\n", "aap") |
| 873 | + endif |
| 874 | + let b:undo_ftplugin ..= " | unlet! b:browsefilter" |
| 875 | + endif |
| 876 | +< |
| 877 | +次に、POT ファイルを作成しよう (例では Windows パスを使用)。 |
| 878 | +> |
| 879 | + cd /d f:\forkvim\src\po |
| 880 | + (以下のコマンドは 1 行で入力する必要があるが、ここでは例のため区切られている) |
| 881 | + nmake.exe -f Make_mvc.mak "PLUGPACKAGE=aap" |
| 882 | + "PO_PLUG_INPUTLIST=d:\Programs\vim\vim91\ftplugin\aap.vim" |
| 883 | + "POT_PLUGPACKAGE_PATH=e:\project\translate\plugins" |
| 884 | + "VIMPROG=d:\Programs\vim\vim91\vim.exe" |
| 885 | + aap.pot |
| 886 | +< |
| 887 | +パッケージの POT ファイルが作成された後、保存したディレクトリに移動して翻訳を |
| 888 | +実施する。 |
| 889 | +> |
| 890 | + cd /d e:\project\translate\plugins |
| 891 | + copy aap.pot ru.po |
| 892 | + copy aap.pot de.po |
| 893 | +< |
| 894 | +ロシア語への翻訳を含む PO ファイルを用意: |
| 895 | + # Test plugins translate ~ |
| 896 | + # ~ |
| 897 | + msgid "" ~ |
| 898 | + msgstr "" ~ |
| 899 | + "Project-Id-Version: aap\n" ~ |
| 900 | + "Report-Msgid-Bugs-To: \n" ~ |
| 901 | + "POT-Creation-Date: 2024-06-23 14:58+0300\n" ~ |
| 902 | + "PO-Revision-Date: 2024-06-23 14:58+0300\n" ~ |
| 903 | + "Last-Translator: Restorer\n" ~ |
| 904 | + "Language-Team: RuVim\n" ~ |
| 905 | + "Language: ru\n" ~ |
| 906 | + "MIME-Version: 1.0\n" ~ |
| 907 | + "Content-Type: text/plain; charset=UTF-8\n" ~ |
| 908 | + "Content-Transfer-Encoding: 8bit\n" ~ |
| 909 | + |
| 910 | + #: ../../runtime/ftplugin/aap.vim:32 ~ |
| 911 | + msgid "Aap Recipe Files (*.aap)\t*.aap\n" ~ |
| 912 | + msgstr "Файлы инструкций Aap (*.aap)\t*.aap\n" ~ |
| 913 | + |
| 914 | + #: ../../runtime/ftplugin/aap.vim:34 ~ |
| 915 | + msgid "All Files (*.*)\t*\n" ~ |
| 916 | + msgstr "Все файлы (*.*)\t*\n" ~ |
| 917 | + |
| 918 | + #: ../../runtime/ftplugin/aap.vim:36 ~ |
| 919 | + msgid "All Files (*)\t*\n" ~ |
| 920 | + msgstr "Все файлы (*)\t*\n" ~ |
| 921 | + |
| 922 | +そして、ドイツ語の PO ファイル: |
| 923 | + # Test plugins translate~ |
| 924 | + #~ |
| 925 | + msgid ""~ |
| 926 | + msgstr ""~ |
| 927 | + "Project-Id-Version: aap\n"~ |
| 928 | + "Report-Msgid-Bugs-To: \n"~ |
| 929 | + "POT-Creation-Date: 2024-06-23 14:58+0300\n"~ |
| 930 | + "PO-Revision-Date: 2024-06-24 13:11+0300\n"~ |
| 931 | + "Last-Translator: Restorer\n"~ |
| 932 | + "Language-Team: German\n"~ |
| 933 | + "Language: de\n"~ |
| 934 | + "MIME-Version: 1.0\n"~ |
| 935 | + "Content-Type: text/plain; charset=UTF-8\n"~ |
| 936 | + "Content-Transfer-Encoding: 8bit\n"~ |
| 937 | + |
| 938 | + #: ../../runtime/ftplugin/aap.vim:32~ |
| 939 | + msgid "Aap Recipe Files (*.aap)\t*.aap\n"~ |
| 940 | + msgstr "Aap-Rezeptdateien (*.aap)\t*.aap\n"~ |
| 941 | + |
| 942 | + #: ../../runtime/ftplugin/aap.vim:34~ |
| 943 | + msgid "All Files (*.*)\t*\n"~ |
| 944 | + msgstr "Alle Dateien (*.*)\t*.*\n"~ |
| 945 | + |
| 946 | + #: ../../runtime/ftplugin/aap.vim:36~ |
| 947 | + msgid "All Files (*)\t*\n"~ |
| 948 | + msgstr "Alle Dateien (*)\t*\n"~ |
| 949 | + |
| 950 | +ここで、これらのファイルを MO ファイルに変換し、|gettext()| がメッセージの翻訳 |
| 951 | +を表示できるようにする。Note これは特殊なプラグインパッケージではないため、MO |
| 952 | +ファイルを Vim エディタの "lang/" ディレクトリに配置することに注意。 |
| 953 | +以下のコマンドを入力: |
| 954 | +> |
| 955 | + cd /d f:\forkvim\src\po |
| 956 | + (以下のコマンドは 1 行で入力する必要があるが、ここでは例のため区切られている) |
| 957 | + ロシア語: |
| 958 | + nmake.exe -f Make_mvc.mak "PLUGPACKAGE=aap" |
| 959 | + "PO_PLUGPACKAGE=e:\project\translate\plugins\ru.po" |
| 960 | + "MO_PLUGPACKAGE_PATH=d:\Programs\vim\vim91\lang\ru\LC_MESSAGES" |
| 961 | + aap.mo |
| 962 | + ドイツ語: |
| 963 | + nmake.exe -f Make_mvc.mak "PLUGPACKAGE=aap" |
| 964 | + "PO_PLUGPACKAGE=e:\project\translate\plugins\de.po" |
| 965 | + "MO_PLUGPACKAGE_PATH=d:\Programs\vim\vim91\lang\de\LC_MESSAGES" |
| 966 | + aap.mo |
| 967 | +< |
| 968 | +これで翻訳が完了し、プラグインのメッセージを母国語で表示できるようになる。 |
| 969 | + |
| 970 | +プラグインパッケージの翻訳も試してみよう。例えば、パッケージに翻訳が必要な文字 |
| 971 | +列を含むスクリプトが複数含まれている場合である。例えば、"netrw" パッケージを日 |
| 972 | +本語に翻訳してみよう。 |
| 973 | +この例では、このパッケージから数行だけを翻訳する。 |
| 974 | +メッセージ文字列を翻訳する必要があるスクリプトを準備しよう。 |
| 975 | + |
| 976 | +ファイル "autoload\netrw.vim": |
| 977 | +> |
| 978 | + " 一度読み込む: |
| 979 | + if &cp || exists("g:loaded_netrw") |
| 980 | + finish |
| 981 | + endif |
| 982 | + call bindtextdomain("netrw", fnamemodify(expand("<script>"), ':p:h') .. '/../lang/') |
| 983 | +
|
| 984 | + " vim が netrw に必要なパッチがあるか確認する。 |
| 985 | + " Patches needed for v7.4: 1557, and 213. |
| 986 | + " v7.4: 1557, および 213 パッチが必要。 |
| 987 | + " (netrw も vim のパッチ #656 の恩恵を受けるだろう) |
| 988 | + let s:needspatches=[1557,213] |
| 989 | + if exists("s:needspatches") |
| 990 | + for ptch in s:needspatches |
| 991 | + if v:version < 704 || (v:version == 704 && !has("patch".ptch)) |
| 992 | + if !exists("s:needpatch{ptch}") |
| 993 | + unsilent echomsg gettext("***sorry*** this version of netrw requires vim v7.4 with patch#", "netrw") .. ptch |
| 994 | + endif |
| 995 | + let s:needpatch{ptch}= 1 |
| 996 | + finish |
| 997 | + endif |
| 998 | + endfor |
| 999 | + endif |
| 1000 | +< |
| 1001 | +ファイル "autoload\netrwSettings.vim": |
| 1002 | +> |
| 1003 | + " 一度読み込む: |
| 1004 | + if exists("g:loaded_netrwSettings") || &cp |
| 1005 | + finish |
| 1006 | + endif |
| 1007 | + call bindtextdomain("netrw", fnamemodify(expand("<script>"), ':p:h') .. '/../lang/') |
| 1008 | + let g:loaded_netrwSettings = "v18" |
| 1009 | + if v:version < 700 |
| 1010 | + echohl WarningMsg |
| 1011 | + echo gettext("***warning*** this version of netrwSettings needs vim 7.0", "netrw") |
| 1012 | + echohl Normal |
| 1013 | + finish |
| 1014 | + endif |
| 1015 | +< |
| 1016 | +次に、メッセージのさらなる翻訳のために POT ファイルを準備する。 |
| 1017 | +以下のコマンドを実行: |
| 1018 | +> |
| 1019 | + cd ~/forkvim/src/po |
| 1020 | + make -f Makefile "VIMPROG=/usr/local/bin/vim" "PLUGPACKAGE=netrw" \ |
| 1021 | + "POT_PLUGPACKAGE_PATH=~/project/translate/plugins" \ |
| 1022 | + "PO_PLUG_INPUTLIST=../../runtime/autoload/netrw.vim |
| 1023 | + ../../runtime/autoload/netrwSettings.vim" \ |
| 1024 | + netrw.pot |
| 1025 | +< |
| 1026 | +POT ファイルのあるディレクトリに移動し、翻訳を行う。 |
| 1027 | +> |
| 1028 | + cd ~/project/translate/plugins |
| 1029 | + cp ./netrw.pot ja.po |
| 1030 | +< |
| 1031 | +"ja.po" ファイルに翻訳が準備できたら: |
| 1032 | + # Test plugins translate ~ |
| 1033 | + # ~ |
| 1034 | + msgid "" ~ |
| 1035 | + msgstr "" ~ |
| 1036 | + "Project-Id-Version: netrw\n" ~ |
| 1037 | + "Report-Msgid-Bugs-To: \n" ~ |
| 1038 | + "POT-Creation-Date: 2024-06-23 17:14+0300\n" ~ |
| 1039 | + "PO-Revision-Date: 2024-06-23 17:14+0300\n" ~ |
| 1040 | + "Last-Translator: Restorer\n" ~ |
| 1041 | + "Language-Team: Japanese\n" ~ |
| 1042 | + "Language: ja\n" ~ |
| 1043 | + "MIME-Version: 1.0\n" ~ |
| 1044 | + "Content-Type: text/plain; charset=UTF-8\n" ~ |
| 1045 | + "Content-Transfer-Encoding: 8bit\n" ~ |
| 1046 | + |
| 1047 | + #: ../../runtime/autoload/netrw.vim:51 ~ |
| 1048 | + msgid "***sorry*** this version of netrw requires vim v7.4 with patch#" ~ |
| 1049 | + msgstr "" ~ |
| 1050 | + "***申し訳ありません***このバージョンのnetrwには、パッチ付きのvim v7.4が必要です#" ~ |
| 1051 | + |
| 1052 | + #: ../../runtime/autoload/netrwSettings.vim:28 ~ |
| 1053 | + msgid "***warning*** this version of netrwSettings needs vim 7.0" ~ |
| 1054 | + msgstr "***警告***このバージョンのnetrwSettingsにはvim7.0が必要です" ~ |
| 1055 | + |
| 1056 | +ja.po を MO ファイルに変換する: |
| 1057 | +> |
| 1058 | + cd ~/forkvim/src/po |
| 1059 | + make -f Makefile "PLUGPACKAGE=netrw" \ |
| 1060 | + "PO_PLUGPACKAGE=~/project/translate/plugins/ja.po" \ |
| 1061 | + "MO_PLUGPACKAGE_PATH=/usr/local/share/vim/vim91/lang/ja/LC_MESSAGES" \ |
| 1062 | + netrw.mo |
| 1063 | +< |
| 1064 | +これらの手順を実行すると、サードパーティのプラグインパッケージの翻訳を取得でき |
| 1065 | +るようになる。 |
753 | 1066 |
|
754 | 1067 | プラグイン間の依存関係 ~
|
755 | 1068 | *packload-two-steps*
|
|
0 commit comments