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. 그 안에 Python이 모듈을 가져올 수 있도록 __init__.py 파일을 생성합니다.

  5. 이 패키지는 이제 uv pip install -e 를 사용하여 설치 될 수 있습니다. 더 많은 정보는 Editable Package 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",)