Skip to content

Commit 0abae6d

Browse files
authored
Merge pull request #1643 from vim-jp/hh-update-repeat
Update repeat.{txt,jax}
2 parents c9eca33 + 3c86ae2 commit 0abae6d

File tree

2 files changed

+649
-10
lines changed

2 files changed

+649
-10
lines changed

doc/repeat.jax

Lines changed: 319 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*repeat.txt* For Vim バージョン 9.1. Last change: 2023 May 26
1+
*repeat.txt* For Vim バージョン 9.1. Last change: 2024 Aug 12
22

33

44
VIMリファレンスマニュアル by Bram Moolenaar
@@ -717,39 +717,352 @@ Filetype プラグインはファイルタイプに複数のプラグインが
717717
"git" のようなプログラムが必要である。github ではリリースを作成すると自動的に
718718
アーカイブが作られるので、あなたは両方を同時に行うことができる。
719719

720-
ディレクトリ構成は次のようになる>
720+
ディレクトリ構成は次のようになる:
721721
start/foobar/plugin/foo.vim " 常にロードされ、コマンドを定義する
722722
start/foobar/plugin/bar.vim " 常にロードされ、コマンドを定義する
723723
start/foobar/autoload/foo.vim " fooコマンドを使用した時に読み込む
724724
start/foobar/doc/foo.txt " foo.vimのヘルプ
725725
start/foobar/doc/tags " ヘルプタグ
726+
start/foobar/lang/<lang_id>/LC_MESSAGES/foobar.mo
727+
" <lang_id> 言語でのプラグインのメッ
728+
" セージ。これらのファイルは任意。
726729
opt/fooextra/plugin/extra.vim " オプションのプラグイン、コマンド定義
727730
opt/fooextra/autoload/extra.vim " extraコマンドを使用した時に読み込む
728731
opt/fooextra/doc/extra.txt " extra.vimのヘルプ
729732
opt/fooextra/doc/tags " ヘルプタグ
730733

731-
これにより、ユーザーは次の操作を行うことができる >
734+
これにより、ユーザーは次の操作を行うことができる: >
732735
mkdir ~/.vim/pack
733736
cd ~/.vim/pack
734737
git clone https://github.com/you/foobar.git myfoobar
735-
738+
<
736739
ここで "myfoobar" はユーザーが選択できる名前だが、唯一の条件は他のパッケージと
737740
は異なることである。
738741

739742
ドキュメントでは、プラグインの機能について説明し、オプションのプラグインをロー
740743
ドする方法をユーザーに伝える。 >
741744
:packadd! fooextra
742-
745+
<
743746
このpackaddコマンドをプラグインの1つに追加して、オプションのプラグインが必要な
744747
ときに実行することができる。
745748

749+
*package-doc* *package-documentation*
746750
`:helptags` コマンドを実行して、doc/tags ファイルを生成する。この生成されたファ
747751
イルをパッケージに含めるということは、パッケージディレクトリにパッケージを落と
748752
すことができ、ヘルプコマンドがすぐに動作することを意味する。プラグインヘルプを
749753
変更した後にコマンドを再実行することを忘れないでほしい。 >
750754
:helptags path/start/foobar/doc
751755
: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+
るようになる。
7531066

7541067
プラグイン間の依存関係 ~
7551068
*packload-two-steps*

0 commit comments

Comments
 (0)