Weblate のカスタマイズ

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

警告

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

Python モジュールの作成

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

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

バージョン 3.8-5 で追加: Docker を使用したインストール の場合、Python モジュールを /app/data/python/`(参照: :ref:`docker-volume)配置できるます。たとえば 上書き設定ファイル から Weblate で読み込めます。

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

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

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

    from setuptools import setup
    
    setup(
        name="weblate_customization",
        version="0.0.1",
        author="Your name",
        author_email="yourname@example.com",
        description="Sample Custom check for Weblate.",
        license="GPLv3+",
        keywords="Weblate check example",
        packages=["weblate_customization"],
    )
    
  3. カスタマイズ コード用の Python モジュール(``weblate_customization``とも呼ばれる)用のフォルダーを作成する。

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

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

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

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

weblate_customization
├── setup.py
└── weblate_customization
    ├── __init__.py
    ├── addons.py
    └── checks.py

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

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

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

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

  2. Python クラスへの完全修飾パスを専用設定に追加する(WEBLATE_ADDONSCHECK_LIST または AUTOFIX_LIST):

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

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

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