Weblate 내부 구조

참고

이 장에서는 Weblate 내부 구조의 기본 개요를 제공합니다.

Weblate는 대부분의 코드 구조를 Django 에서 파생하고 이를 기반으로 합니다.

디렉터리 구조

Weblate 주요 저장소의 디렉터리 구조 간단 개요:

docs

이 문서의 소스 코드. Sphinx 를 사용하여 빌드할 수 있습니다.

dev-docker

개발 서버를 실행하기 위한 Docker 코드. Docker에서 Weblate를 로컬로 실행 참조.

weblate

Django 애플리케이션으로서의 Weblate 소스 코드. Weblate 내부 구조 참조.

weblate/static

클라이언트 파일 (CSS, Javascript 및 이미지). Weblate 프런트엔드 참조.

모듈

Weblate는 여러 Django 애플리케이션으로 구성됩니다 (일부는 선택 사항, 선택적 Weblate 모듈 참조):

accounts

사용자 계정, 프로필 및 알림.

addons

Weblate 동작을 조정하는 애드온. 애드온 참조.

api

Django REST framework 기반의 API.

auth

인증 및 권한.

billing

선택 사항인 결제 모듈.

checks

번역 문자열 품질 검사 모듈.

fonts

폰트 렌더링 검사 모듈.

formats

translate-toolkit 기반의 파일 형식 추상화 계층.

gitexport

선택 사항인 Git 내보내기 모듈.

lang

언어 및 복수형 모델을 정의하는 모듈.

legal

선택 사항인 법적 모듈 모듈.

machinery

기계 번역 서비스의 통합.

memory

내장 번역 메모리. 번역 메모리 참조.

screenshots

스크린샷 관리 및 OCR 모듈.

trans

번역을 처리하는 주요 모듈.

utils

다양한 유틸리티.

vcs

버전 관리 시스템 추상화.

wladmin

Django 관리 인터페이스 사용자 정의.

백그라운드 작업 내부 구조

힌트

이 섹션에서는 Celery 작업의 내부 구조를 설명합니다. Celery를 사용한 백그라운드 작업 에서는 작업을 실행하기 위해 Celery를 구성하는 방법을 설명합니다.

Weblate는 백그라운드에서 작업을 실행하기 위해 Celery를 사용합니다. 일부 작업은 이벤트에 의해 트리거되고, 일부 작업은 일정에 의해 트리거됩니다.

Celery Beat는 작업 스케줄링에 사용되며 django-celery-beat 는 주기적 작업 일정을 데이터베이스에 저장하는 데 사용됩니다. 작업 일정은 각 Django 앱의 tasks.py 에서 구성됩니다.

작업은 여러 큐를 사용하여 처리됩니다. 라우팅은 settings.py 에서 구성됩니다. 큐는 다양한 유형의 워크로드를 분리하도록 설계됨:

celery

백그라운드 작업이 처리되는 기본 큐.

notify

Weblate 내부 이벤트와 인증 또는 등록에 대한 알림 이메일을 전달합니다. 다른 작업의 백로그가 있더라도 이메일 전송이 원활하도록 별도의 큐입니다.

memory

번역 메모리 항목을 업데이트합니다. 새 문자열을 가져올 때 업데이트 큐가 길어질 수 있으며, 여기서는 긴 처리 시간이 크게 중요하지 않으므로 별도의 큐를 두어 다른 작업을 차단하지 않도록 합니다.

backup

백업 작업은 병렬로 실행할 수 없으며 단일 전용 워커를 사용하면 더 쉽습니다.

translate

자동 번역 작업은 외부 서비스를 호출하기 때문에 오래 걸리는 것으로 알려져 있습니다.