NAME

App::Greple::xlate - grepleのための翻訳サポートモジュール

SYNOPSIS

greple -Mxlate::deepl --xlate pattern target-file

greple -Mxlate::gpt4 --xlate pattern target-file

greple -Mxlate --xlate-engine gpt4 --xlate pattern target-file

VERSION

Version 0.9912

DESCRIPTION

Greple xlate モジュールは、目的のテキストブロックを見つけて翻訳されたテキストに置き換えます。現在、DeepL(deepl.pm)およびChatGPT 4.1(gpt4.pm)モジュールがバックエンドエンジンとして実装されています。

Perlのpodスタイルで書かれたドキュメント内の通常のテキストブロックを翻訳したい場合は、grepleコマンドをxlate::deeplおよびperlモジュールとともに次のように使用します。

greple -Mxlate::deepl -Mperl --pod --re '^([\w\pP].*\n)+' --all foo.pm

このコマンドでは、パターン文字列^([\w\pP].*\n)+は英数字および句読点で始まる連続した行を意味します。このコマンドは、翻訳対象の領域をハイライト表示します。オプション--allは、全体のテキストを出力するために使用されます。

次に、--xlateオプションを追加して選択した領域を翻訳します。すると、目的のセクションを見つけてdeeplコマンドの出力で置き換えます。

デフォルトでは、元のテキストと翻訳テキストはgit(1)と互換性のある「コンフリクトマーカー」形式で出力されます。ifdef形式を使用すると、unifdef(1)コマンドで目的の部分を簡単に取得できます。出力形式は--xlate-formatオプションで指定できます。

テキスト全体を翻訳したい場合は、--match-allオプションを使用してください。これは、テキスト全体にマッチするパターン(?s).+を指定するショートカットです。

コンフリクトマーカーフォーマットのデータは、sdif コマンドと -V オプションでサイドバイサイド形式で表示できます。文字列単位で比較しても意味がないため、--no-cdif オプションの使用を推奨します。テキストの色付けが不要な場合は、--no-textcolor(または --no-tc)を指定してください。

sdif -V --no-filename --no-tc --no-cdif data_shishin.deepl-EN-US.cm

NORMALIZATION

処理は指定した単位で行われますが、複数行の非空テキストが連続している場合は、まとめて1行に変換されます。この操作は次のように行われます。

  • 各行の先頭と末尾の空白を削除します。

  • 行末が全角句読点の場合、次の行と連結します。

  • 行末が全角文字で、次の行の先頭も全角文字の場合、行を連結します。

  • 行末または行頭のいずれかが全角文字でない場合、スペース文字を挿入して連結します。

キャッシュデータは正規化されたテキストに基づいて管理されるため、正規化結果に影響しない修正が行われても、キャッシュされた翻訳データは有効なままです。

この正規化処理は、最初(0番目)および偶数番目のパターンに対してのみ実行されます。したがって、次のように2つのパターンを指定した場合、最初のパターンにマッチしたテキストは正規化後に処理され、2番目のパターンにマッチしたテキストには正規化処理は行われません。

greple -Mxlate -E normalized -E not-normalized

したがって、複数行を1行にまとめて処理したいテキストには最初のパターンを、整形済みテキストには2番目のパターンを使用してください。最初のパターンにマッチするテキストがない場合は、(?!)のように何にもマッチしないパターンを使用してください。

MASKING

時々、翻訳したくないテキストの部分があります。例えば、Markdownファイル内のタグなどです。DeepLは、そのような場合、翻訳から除外したい部分をXMLタグに変換し、翻訳後に元に戻すことを提案しています。これをサポートするために、翻訳からマスクする部分を指定することが可能です。

--xlate-setopt maskfile=MASKPATTERN

ファイル `MASKPATTERN` の各行を正規表現として解釈し、それに一致する文字列を翻訳し、処理後に元に戻します。# で始まる行は無視されます。

複雑なパターンは、バックスラッシュで改行をエスケープして複数行に記述できます。

マスキングによってテキストがどのように変換されるかは、--xlate-mask オプションで確認できます。

このインターフェースは実験的なものであり、将来的に変更される可能性があります。

OPTIONS

--xlate
--xlate-color
--xlate-fold
--xlate-fold-width=n (Default: 70)

一致した領域ごとに翻訳処理を実行します。

このオプションがない場合、greple は通常の検索コマンドとして動作します。したがって、実際の作業を実行する前に、ファイルのどの部分が翻訳対象になるかを確認できます。

コマンドの結果は標準出力に出力されるため、必要に応じてファイルにリダイレクトするか、App::Greple::update モジュールの使用を検討してください。

オプション --xlate は、--xlate-color オプションを --color=never オプションとともに呼び出します。

--xlate-fold オプションを指定すると、変換されたテキストが指定した幅で折り返されます。デフォルトの幅は70で、--xlate-fold-width オプションで設定できます。ランイン操作用に4列が予約されているため、各行は最大74文字まで保持できます。

--xlate-engine=engine

使用する翻訳エンジンを指定します。-Mxlate::deepl のようにエンジンモジュールを直接指定した場合、このオプションを使用する必要はありません。

現時点で利用可能なエンジンは以下の通りです

  • deepl: DeepL API

  • gpt3: gpt-3.5-turbo

  • gpt4: gpt-4.1

  • gpt4o: gpt-4o-mini

    gpt-4o のインターフェースは不安定で、現時点では正しく動作する保証はありません。

--xlate-labor
--xlabor

翻訳エンジンを呼び出す代わりに、あなた自身が作業することが期待されています。翻訳するテキストを準備した後、それらがクリップボードにコピーされます。フォームに貼り付け、結果をクリップボードにコピーし、リターンキーを押してください。

--xlate-to (Default: EN-US)

ターゲット言語を指定します。DeepL エンジンを使用する場合、deepl languages コマンドで利用可能な言語を取得できます。

--xlate-format=format (Default: conflict)

元のテキストと翻訳テキストの出力フォーマットを指定します。

xtxt 以外の以下のフォーマットは、翻訳対象部分が行の集合であることを前提としています。実際には行の一部だけを翻訳することも可能ですが、xtxt 以外のフォーマットを指定しても意味のある結果は得られません。

conflict, cm

元のテキストと変換後のテキストは、git(1) のコンフリクトマーカーフォーマットで出力されます。

<<<<<<< ORIGINAL
original text
=======
translated Japanese text
>>>>>>> JA

次の sed(1) コマンドで元のファイルを復元できます。

sed -e '/^<<<<<<< /d' -e '/^=======$/,/^>>>>>>> /d'
colon, :::::::

元のテキストと翻訳テキストは、Markdownのカスタムコンテナスタイルで出力されます。

::::::: ORIGINAL
original text
:::::::
::::::: JA
translated Japanese text
:::::::

上記のテキストは、HTMLで以下のように翻訳されます。

<div class="ORIGINAL">
original text
</div>
<div class="JA">
translated Japanese text
</div>

コロンの数はデフォルトで7です。::::: のようにコロンの並びを指定した場合は、7コロンの代わりにそれが使用されます。

ifdef

元のテキストと変換後のテキストは、cpp(1) #ifdef フォーマットで出力されます。

#ifdef ORIGINAL
original text
#endif
#ifdef JA
translated Japanese text
#endif

unifdef コマンドで日本語テキストのみを取得できます。

unifdef -UORIGINAL -DJA foo.ja.pm
space
space+

元のテキストと変換後のテキストは、1行の空白で区切って印刷されます。space+の場合、変換後のテキストの後にも改行が出力されます。

xtxt

xtxt(翻訳されたテキスト)や不明な場合は、翻訳されたテキストのみが印刷されます。

--xlate-maxlen=chars (Default: 0)

一度にAPIに送信するテキストの最大長を指定します。デフォルト値は無料DeepLアカウントサービス用に設定されています:API用は128K(--xlate)、クリップボードインターフェース用は5000(--xlate-labor)。Proサービスを利用している場合は、これらの値を変更できる場合があります。

--xlate-maxline=n (Default: 0)

一度にAPIに送信するテキストの最大行数を指定します。

1行ずつ翻訳したい場合は、この値を1に設定してください。このオプションは--xlate-maxlenオプションより優先されます。

--[no-]xlate-progress (Default: True)

STDERR出力で翻訳結果をリアルタイムで確認できます。

--xlate-stripe

App::Greple::stripeモジュールを使用して、ゼブラストライプ方式で一致部分を表示します。これは一致部分が連続している場合に便利です。

カラーパレットはターミナルの背景色に応じて切り替わります。明示的に指定したい場合は、--xlate-stripe-lightまたは--xlate-stripe-darkを使用できます。

--xlate-mask

マスキング機能を実行し、変換後のテキストを復元せずそのまま表示します。

--match-all

ファイル全体のテキストを対象領域として設定します。

--lineify-cm
--lineify-colon

cmcolon形式の場合、出力は行ごとに分割されてフォーマットされます。そのため、行の一部だけを翻訳すると、期待される結果が得られません。これらのフィルターは、行の一部だけが翻訳されて壊れてしまった出力を、通常の行ごとの出力に修正します。

現在の実装では、1行の複数の部分が翻訳された場合、それぞれが独立した行として出力されます。

CACHE OPTIONS

xlateモジュールは、各ファイルの翻訳キャッシュテキストを保存し、実行前に読み込むことでサーバーへの問い合わせのオーバーヘッドを排除できます。デフォルトのキャッシュ戦略autoでは、対象ファイルにキャッシュファイルが存在する場合のみキャッシュデータを保持します。

--xlate-cache=clearを使用してキャッシュ管理を開始したり、既存のキャッシュデータをすべてクリーンアップしたりできます。このオプションで実行すると、キャッシュファイルが存在しない場合は新規作成され、その後自動的に管理されます。

--xlate-cache=strategy
auto (Default)

キャッシュファイルが存在する場合は維持します。

create

空のキャッシュファイルを作成して終了します。

always, yes, 1

対象が通常のファイルである限り、常にキャッシュを維持します。

clear

まずキャッシュデータをクリアします。

never, no, 0

キャッシュファイルが存在しても決して使用しません。

accumulate

デフォルトの動作では、未使用のデータはキャッシュファイルから削除されます。削除せずファイルに保持したい場合はaccumulateを使用してください。

--xlate-update

このオプションは、必要がなくてもキャッシュファイルを強制的に更新します。

COMMAND LINE INTERFACE

配布に含まれるxlateコマンドを使うことで、このモジュールをコマンドラインから簡単に利用できます。使い方はxlateのmanページを参照してください。

xlateコマンドはDocker環境と連携して動作するため、手元に何もインストールされていなくてもDockerが利用できれば使用可能です。-Dまたは-Cオプションを使用してください。

また、さまざまなドキュメントスタイル用のMakefileが用意されているため、特別な指定なしで他言語への翻訳も可能です。-Mオプションを使用してください。

Dockerとmakeオプションを組み合わせて、Docker環境でmakeを実行することもできます。

xlate -Cのように実行すると、現在の作業中のgitリポジトリをマウントしたシェルが起動します。

詳細は"SEE ALSO"セクションの日本語記事をお読みください。

EMACS

リポジトリに含まれているxlate.elファイルを読み込むことで、Emacsエディタからxlateコマンドを使用できます。

ENVIRONMENT

DEEPL_AUTH_KEY

xlate-region関数は指定した範囲を翻訳します。デフォルトの言語はEN-USで、プレフィックス引数を指定することで言語を変更できます。

OPENAI_API_KEY

DeepLサービス用の認証キーを設定してください。

INSTALL

CPANMINUS

$ cpanm App::Greple::xlate

TOOLS

OpenAI認証キー。

DeepLとChatGPTのコマンドラインツールをインストールする必要があります。

https://github.com/DeepLcom/deepl-python

SEE ALSO

https://github.com/tecolicom/App-gpty

App::Greple::xlate

App::Greple::xlate::gpt4

ARTICLES

AUTHOR

Kazumasa Utashiro

LICENSE

Copyright © 2023-2025 Kazumasa Utashiro.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.