The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

NAME

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

SYNOPSIS

greple -Mxlate -e ENGINE --xlate pattern target-file

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

VERSION

Version 0.9908

DESCRIPTION

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

PerlのPodスタイルで書かれた文書中の通常のテキストブロックを翻訳したい場合は、xlate::deeplperlモジュールを使って、次のようにgrepleコマンドを使います:

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

このコマンドのパターン文字列^([ \wpP].*n)+ は、英数字と句読点で始まる連続した行を意味します。このコマンドは、翻訳される領域が強調表示されます。オプション**--all**はテキスト全体を翻訳するのに使われます。

次に--xlateオプションを加えて、選択された範囲を翻訳します。そして、必要な部分を見つけて、deeplコマンドの出力で置き換えます。

デフォルトでは、原文と訳文は git(1) と互換性のある "conflict marker" フォーマットで出力されます。ifdef形式を使えば、unifdef(1)コマンドで簡単に目的の部分を得ることができます。出力形式は**--xlate-format**オプションで指定できます。

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

sdifコマンドに-Vオプションを指定すると、コンフリクトマーカー形式のデータを並べて表示することができます。文字列単位で比較するのは意味がないので、--no-cdifオプションを推奨します。テキストに色をつける必要がない場合は、--no-textcolor(または--no-tc)を指定します。

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

NORMALIZATION

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

キャッシュデータは正規化されたテキストに基づいて管理されるため、正規化結果に影響を与えない範囲で修正を加えても、キャッシュされた翻訳データは有効です。

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

greple -Mxlate -E normalized -E not-normalized

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

MASKING

時々、翻訳してほしくないテキストの部分があります。例えば、マークダウン・ファイルのタグなどです。DeepL では、このような場合、除外するテキストの部分を XML タグに変換して翻訳し、翻訳完了後に復元することを推奨しています。これをサポートするために、翻訳からマスクする部分を指定できます。

--xlate-setopt maskfile=MASKPATTERN

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

複雑なパターンは、バックスラッシュとエスケープされた改行で複数行に書くことができます。

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

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

OPTIONS

CACHE OPTIONS

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

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

COMMAND LINE INTERFACE

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

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

また、様々なドキュメントスタイルに対応したmakefileが提供されているので、特別な指定なしに他言語への翻訳が可能です。-Mオプションを使用してください。

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

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

詳しくは"SEE ALSO"セクションの日本語記事を読んでください。

EMACS

Emacsエディタからxlateコマンドを使うには、リポジトリに含まれるxlate.elファイルを読み込みます。xlate-region関数は指定された領域を翻訳します。デフォルトの言語はEN-USで、prefix引数で言語を指定できます。

ENVIRONMENT

INSTALL

CPANMINUS

$ cpanm App::Greple::xlate

TOOLS

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

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

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

SEE ALSO

App::Greple::xlate とします。

App::Greple::xlate::deepl (英語)

App::Greple::xlate::gpt3 です。

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.