このPythonプログラム `translate5_GUI.py` は、`translate5_com` モジュールをバックエンドとして利用し、文書ファイルの翻訳を行うためのグラフィカルユーザーインターフェース（GUI）アプリケーションです。

---

### 1) プログラムの動作

`translate5_GUI.py` は、ユーザーフレンドリーなGUIを通じて、各種設定を容易に変更しながら文書ファイルの翻訳を実行できるアプリケーションです。

**主な機能:**
*   **文書翻訳**: `docx`, `pptx`, `pdf`, `html`, `md`, `txt` 形式の入力ファイルを指定されたAPI（OpenAI, Google Gemini, DeepLなど）を使用して翻訳します。
*   **GUIでの設定**:
    *   **入出力パス**: 翻訳対象ファイルおよびHTMLテンプレートファイルのパスをブラウザで選択または直接入力。
    *   **翻訳モード**: 日本語→英語 (je) または英語→日本語 (ej) を選択。
    *   **処理単位**: 翻訳の最小単位を `paragraph` (段落)、`run` (テキストブロック)、`md` (Markdown形式) から選択。
    *   **APIとモデル**: OpenAI5、OpenAI、Google、Gemini、DeepLの中から使用するAPIを選択し、それぞれのAPIに応じたモデル（例: gpt-4o, gemini-2.5-flashなど）を選択します。DeepLやカスタムAPIの場合はエンドポイントの指定も可能です。
    *   **生成パラメータ**: `temperature`, `max_tokens` (最大出力トークン数), `reasoning_effort` (推論の強度) などの翻訳モデルのパラメータを設定します。
    *   **翻訳ルール**: `min_translate_length` (翻訳する最小文字数), `allowed_translation_length_ratio` (翻訳後の許容文字長比率), `limit_to_multibyte_str` (日本語ソースの場合にマルチバイト文字列に限定するかどうか) などを設定します。
    *   **プロンプト**: 翻訳用のプロンプト (`translate_prompt`) と、PDF→MD変換などのためのリフォーマットプロンプト (`reformat_prompt`) の内容を編集できます。
*   **非同期実行**: 翻訳処理はバックグラウンドスレッドで実行されるため、GUIは処理中でも応答性を保ちます。
*   **設定の永続化**: ユーザーが入力した設定は、プログラム終了時に自動的に `translate5_GUI.ini` ファイルに保存され、次回起動時に自動的に読み込まれます。これにより、頻繁に使用する設定を再入力する手間が省けます。
*   **エラーハンドリング**: 翻訳処理中にエラーが発生した場合、エラーメッセージと詳細なトレースバックを含む、コピー可能なダイアログが表示されます。
*   **テーマサポート**: `ttkthemes` ライブラリがインストールされている場合、よりモダンなGUIテーマ（例: plastik）が適用されます。インストールされていない場合は、標準のTkinterテーマで動作します。

### 2) 必要な非標準ライブラリとインストールコマンドとインストール方法

このプログラムは、以下の非標準ライブラリに依存しています。

1.  **`ttkthemes`**
    *   **説明**: Tkinterアプリケーションにモダンなテーマを適用するために使用されます。必須ではありませんが、インストールすることでGUIの見た目が向上します。
    *   **インストールコマンド**:
        ```bash
        pip install ttkthemes
        ```
    *   **インストール方法**: 上記コマンドをコマンドプロンプトまたはターミナルで実行してください。

2.  **`translate5_com`**
    *   **説明**: このプログラムの翻訳ロジックのコア部分を提供するモジュールです。`translate5_GUI.py` と同じプロジェクト内で開発されたカスタムモジュールであると推測されます。
    *   **インストール方法**: このモジュールは通常、`pip` を使ってインストールする公開ライブラリではありません。`translate5_GUI.py` と同じディレクトリ、またはPythonがモジュールを検索できるパス上に、`translate5_com.py` というファイル名で配置されている必要があります。このファイルは別途提供されるか、ユーザー自身が作成する必要があります。

また、`translate5_com` モジュールが内部的に依存するであろうライブラリ（例: `openai`, `google-generativeai`, `deepl`, `python-docx`, `python-pptx`, `PyPDF2` など）も、翻訳対象のファイル形式や使用するAPIに応じて別途インストールが必要になる可能性があります。これらの具体的な要件は `translate5_com` モジュールの実装によります。

### 3) 必要な入力ファイル

プログラムを実行し、翻訳を行うためにユーザーが用意する必要がある主なファイルは以下の通りです。

1.  **翻訳対象の入力ファイル**:
    *   GUIの「Input file」フィールドで指定します。
    *   対応形式: `.docx`, `.pptx`, `.pdf`, `.html`, `.htm`, `.md`, `.txt`。
    *   このファイルは、翻訳を実行する前にファイルシステム上に存在している必要があります。

2.  **HTMLテンプレートファイル (オプション)**:
    *   GUIの「HTML template」フィールドで指定します。
    *   デフォルトは `template_translate.html` です。
    *   HTML形式で出力する場合、または特定のHTML構造を保持して翻訳する場合に使用されます。

3.  **設定ファイル `translate5_GUI.ini` (オプション)**:
    *   プログラムと同じディレクトリに自動的に生成・読み込まれます。
    *   プログラムが最初に実行される際には存在しませんが、設定が保存されると作成されます。
    *   このファイルがなくてもプログラムはデフォルト設定で動作します。

**環境変数**:
選択した翻訳APIに応じて、以下の環境変数にAPIキーを設定する必要があります。
*   `OPENAI_API_KEY`: OpenAI APIを使用する場合。
*   `GOOGLE_API_KEY`: Google Gemini APIを使用する場合。
*   `DEEPL_API_KEY`: DeepL APIを使用する場合。

### 4) 実行後に生成される出力ファイル

`translate5_com.execute()` の具体的な実装が不明なため、出力ファイル名は一例ですが、一般的な翻訳ツールの挙動として以下のようなファイルが生成されると推測されます。

*   **翻訳された文書ファイル**:
    *   通常、入力ファイルと同じディレクトリに、元のファイル名にターゲット言語を示すサフィックス（例: `_en`, `_ja`）や、`_translated` などの文字列が付加されたファイルが生成されます。
    *   例: `document.docx` (入力) -> `document_en.docx` (出力、英語翻訳の場合)
    *   例: `report.md` (入力) -> `report_ja.md` (出力、日本語翻訳の場合)
*   **HTML出力ファイル**:
    *   HTMLテンプレートが使用された場合、または設定によってはHTML形式の翻訳結果ファイルが生成される可能性があります。
*   **エラーログ (オプション)**:
    *   `translate5_com` モジュールの実装によっては、エラーやデバッグ情報を記録するためのログファイルが生成されることもあります。
*   **設定ファイル `translate5_GUI.ini`**:
    *   プログラムを終了する際に、現在のGUI設定がこのファイルに保存されます。

### 5) コマンドラインでの使用例 (Usage)

このプログラムはGUIアプリケーションとして設計されているため、通常はコマンドライン引数を受け付けません。Pythonインタープリタを使って直接実行します。

```bash
python translate5_GUI.py
```

`ttkthemes` がインストールされていない環境で、特定のテーマを試したい場合は、以下のように `PYTHON_ENV` 変数などで強制的にスタイルを指定するような運用も考えられますが、通常はシンプルに実行します。

```bash
# （参考：テーマがインストールされていれば、root = ThemedTk(theme="plastik") でテーマが適用される）
# テーマ無しで起動したい場合（あまりないが、何らかの理由でttkthemesを使いたくない場合など）
python translate5_GUI.py
```