Weblate のカスタマイズ

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

ヒント

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

警告

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

Python モジュールの作成

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

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

ヒント

When using Docker, you can place Python modules in /app/data/python/ (see Docker コンテナのボリューム), so they can be loaded by Weblate, for example from a settings override file.

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

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

  2. Within it, create a pyproject.toml file to describe the package:

    [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. Create a folder for the Python module: src/weblate_customization

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

  5. This package can now be installed using uv pip install -e. More info to be found in 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> にあります。ここでは、次に説明するすべてのトピックについて説明します。カスタマイズ例は、以下に説明するトピックをすべて網羅しています。

Custom quality checks, add-ons, automatic suggestions and auto-fixes

To install your code for 自動修正のカスタマイズ, 独自の検査項目の作成, カスタム機械翻訳 or アドオンの作成 in Weblate:

  1. Place the files into your Python module containing the Weblate customization (see Python モジュールの作成 or Customizing code).

  2. Add its fully-qualified path to the Python class in the dedicated settings:

# 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",)