Weblate のカスタマイズ

Django と Python を使用して拡張およびカスタマイズします。変更を上流に還元して、誰もが恩恵を受けられるようにしてください。これにより、あなたの保守コストが削減されます。Weblate に入ったコードは、内部インターフェイスの変更やコードのリファクタリング時に考慮されます。

ヒント

外観のカスタマイズ で Weblate の外観をカスタマイズすることもできます。

警告

内部インターフェイスもテンプレートも、安定した API とはいえません。インターフェイスまたはそのセマンティクスは予告なく変更されますので、アップグレードごとに独自のカスタマイズを見直してください。

Python モジュールの作成

Python に慣れていない場合は、Python For Beginners を調べて、基本の説明とチュートリアルを参考にしてください。

(モジュールと呼ばれる)Python のカスタム コードを含むファイルを作成するには、それを格納する場所が必要です。システム パス(通常は /usr/lib/python3.12/site-packages/ など)か、インタプリタ検索パスに追加された Weblate ディレクトリのどちらかになります。

ヒント

Docker を使用したインストール の場合、Python モジュールを /app/data/python/ (参照: Docker コンテナのボリューム)にに配置できます。これにより、上書き設定ファイル から Weblate に読み込ませることができます。

カスタマイズしたものを適切な Python パッケージに変更すると、さらに良くなります。

  1. パッケージ用のフォルダを作成する(weblate_customization を使用する)。

  2. その中に、パッケージを記述するための pyproject.toml ファイルを作成する。作成方法:

    [build-system]
    requires = ["uv_build>=0.8.18,<0.9.0"]
    build-backend = "uv_build"
    
    [project]
    name = "weblate-customization"
    version = "0.1.0"
    description = "Add your description here"
    requires-python = ">=3.13"
    dependencies = []
    
  3. Python モジュール用のフォルダ src/weblate_customization を作成する。

  4. その中に __init__.py ファイルを作成し、Python がモジュールをインポートできることを確認する。

  5. このパッケージは、uv pip install -e を使用してインストールできるようになりました。詳細については、Editable packages documentation を確認してください。

  6. インストールが完了すると、モジュールは Weblate の設定から使用できるようになります(weblate_customization.checks.FooCheck など)。

出来上がったパッケージ構造:

weblate_customization
├── pyproject.toml
└── src
    └── weblate_customization
        ├── __init__.py
        ├── addons.py
        └── checks.py

Weblate のカスタマイズ例は、<https://github.com/WeblateOrg/customize-example> にあります。ここでは、次に説明するすべてのトピックについて説明します。カスタマイズ例は、以下に説明するトピックをすべて網羅しています。

品質検査、アドオン、自動提案、自動修正のカスタマイズ

自動修正のカスタマイズ独自の検査項目の作成カスタム機械翻訳 または アドオンの作成 のコードを Weblate にインストールする方法:

  1. Weblate のカスタマイズを含む、Python モジュール内にファイルを置く(参照: Python モジュールの作成 または コードのカスタマイズ)。

  2. 専用の設定で、その Python クラスへの完全修飾パスを追加します。

# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)

# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)

# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)

# Automatic suggestions
WEBLATE_MACHINERY += ("weblate_customization.machinery.SampleTranslation",)