애드온

애드온은 번역 워크플로를 사용자 지정하고 자동화하는 방법을 제공합니다. 관리자는 각 번역 프로젝트 또는 구성요소의 작업애드온 메뉴에서 애드온을 추가하고 관리할 수 있습니다. 애드온은 관리 인터페이스 에서 사이트 전체에 설치할 수도 있습니다.

힌트

API, DEFAULT_ADDONS 또는 install_addon 을 사용하여 애드온을 구성할 수도 있습니다.

수동 실행을 지원하는 애드온은 애드온 관리 또는 API 를 사용하여 실행할 수 있습니다. 결과는 애드온 활동 로그에 기록됩니다.

../_images/addons.webp

애드온을 트리거하는 이벤트

애드온 설치

애드온이 설치될 때 트리거됩니다.

구성요소 업데이트

구성요소에 다음과 같은 변경이 발생할 때마다 트리거됩니다:

  • 저장소에서 문자열이 변경됨.

  • 문자열이 추가됨.

  • 새 번역이 추가됨.

매일

매일 트리거되지만, 애드온은 일반적으로 BACKGROUND_TASKS 에 따라 일일 부하를 구성요소 간에 분산합니다.

이벤트 변경

변경 이벤트가 생성된 후 트리거됩니다.

수동 트리거

애드온 관리 또는 API에서 애드온을 수동으로 실행할 때 트리거됩니다.

저장소 추가 후

새 번역이 추가되고 커밋된 직후 트리거됩니다.

저장소 커밋 후

변경사항이 커밋된 직후 트리거됩니다.

저장소 푸시 후

저장소가 업스트림에 푸시된 직후 트리거됩니다.

저장소 삭제 후

번역이 삭제된 직후 트리거됩니다.

저장소 업데이트 후

업스트림 저장소에서 새 변경사항이 가져올 때마다 트리거됩니다.

저장소 커밋 전

변경사항이 커밋되기 직전에 트리거됩니다.

저장소 푸시 전

저장소가 업스트림에 푸시되기 직전에 트리거됩니다.

저장소 업데이트 전

저장소 업데이트가 시도되기 직전에 트리거됩니다.

단위 저장 후

문자열이 저장된 직후 트리거됩니다.

단위 동기화 후

문자열이 VCS와 동기화된 후 트리거됩니다.

단위 생성 전

새로 생성된 문자열이 저장된 직후 트리거됩니다.

내장 애드온

자동 번역

애드온 ID:

weblate.autotranslate.autotranslate

설정:

mode

자동 번역 모드

사용 가능한 선택:

suggest

제안으로 추가

translate

번역으로 추가

fuzzy

“편집 필요”로 추가

q

쿼리

모든 문자열을 번역하면 기존에 저장된 모든 번역 내용이 폐기되니 유의해 주세요.

auto_source

자동화된 번역의 원문

사용 가능한 선택:

others

다른 번역 구성요소

mt

기계 번역

component

구성요소

소스로 사용할 구성요소의 슬러그를 입력하세요. 현재 프로젝트의 모든 구성요소를 사용하려면 비워 두세요.

engines

기계 번역 엔진

기계 번역 엔진

threshold

점수 임계치

트리거:

애드온 설치, 구성요소 업데이트, 매일, 이벤트 변경

기계 번역이나 다른 구성요소를 사용하여 문자열을 자동으로 번역합니다.

자바스크립트 현지화 CDN

Added in version 4.2.

애드온 ID:

weblate.cdn.cdnjs

설정:

threshold

번역 임계값

번역에 포함되기 위해 반드시 존재해야 하는 번역된 문자열의 비율입니다.

css_selector

CSS 선택자

현지화 가능한 요소를 감지하는 CSS 선택자입니다.

cookie_name

언어 쿠키 이름

언어 설정을 저장하는 쿠키의 이름입니다.

files

HTML 파일에서 문자열 추출

번역 가능한 문자열을 구문 분석할 현재 저장소 또는 원격 URL의 파일 이름 목록입니다.

트리거:

애드온 설치, 매일, 저장소 커밋 후, 저장소 삭제 후, 저장소 업데이트 후

자바스크립트 또는 HTML 현지화에 사용하기 위해 번역을 콘텐츠 전달 네트워크에 게시합니다.

정적 HTML 페이지를 현지화하거나 자바스크립트 코드에서 현지화를 로드하는 데 사용할 수 있습니다.

구성요소의 고유 URL을 생성하여 HTML 페이지에 포함시켜 현지화할 수 있습니다. 자세한 내용은 Weblate CDN을 사용한 HTML 및 JavaScript 번역 을 참조하세요.

참고

이 애드온은 Weblate 서버에서 추가 구성이 필요합니다. LOCALIZE_CDN_PATH 는 생성된 파일이 기록될 위치(파일 시스템)를 구성하고, LOCALIZE_CDN_URL 은 파일이 제공될 위치(URL)를 정의합니다. 파일 제공은 Weblate에서 수행하지 않으므로 외부에서 설정해야 합니다(일반적으로 CDN 서비스를 사용).

이 애드온은 Hosted Weblate 에서 구성되며 https://weblate-cdn.com/ 을 통해 파일을 제공합니다.

번역 파일 CDN

Added in version 2026.5.

애드온 ID:

weblate.cdn.files

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 구성요소 업데이트, 저장소 커밋 후, 저장소 삭제 후, 저장소 업데이트 후

번역 파일을 콘텐츠 전달 네트워크에 게시합니다.

번역 파일을 다른 형식으로 변환하지 않고 게시합니다. 파일은 애드온별 CDN 디렉터리 아래에 작성되고 LOCALIZE_CDN_URL/<add-on UUID>/ 에서 제공됩니다. 단일 파일 번역은 언어 코드와 원래 파일 확장자를 사용합니다. 예: cs.json 또는 de.po. 다중 파일 번역은 번역 디렉터리를 기준으로 한 상대 경로를 사용해 언어 코드 아래에서 제공됩니다. 단일 언어 구성요소는 원문 언어 파일을 포함하고, 이중 언어 구성요소는 대상 언어 파일만 게시합니다. 안전한 제공 지침은 현지화 CDN 를 참조하세요.

빈 문자열 제거

Added in version 4.4.

애드온 ID:

weblate.cleanup.blank

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 저장소 커밋 후, 저장소 업데이트 후

번역 파일에서 번역이 없는 문자열을 제거합니다.

번역 파일에 빈 문자열이 없도록 하려면 이 옵션을 사용하세요(예: 현지화 라이브러리가 원문 문자열로 대체하지 않고 누락으로 표시하는 경우).

번역 파일 정리

애드온 ID:

weblate.cleanup.generic

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 저장소 업데이트 후, 저장소 커밋 전

모든 번역 파일을 단일 언어 기본 파일에 맞게 업데이트합니다. 대부분의 파일 형식에서는 기본 파일에 더 이상 존재하지 않는 오래된 번역 키를 제거하는 것을 의미합니다.

번역 문자열 외에 추가 콘텐츠가 포함된 형식(예: HTML 파일, Windows RC 파일, OpenDocument 형식)의 경우, 이 애드온은 번역 파일을 기본 파일과 동기화합니다.

For a one-time cleanup of a single translation file, use Cleanup unused in 저장소 유지보수 on that translation instead of installing the add-on.

누락된 언어 추가

애드온 ID:

weblate.consistency.languages

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 매일, 저장소 추가 후

프로젝트 내의 모든 구성요소에 일관된 언어 집합이 사용되도록 합니다.

참고

다른 프로젝트에서 공유된 구성요소는 이 검사에서 제외됩니다.

누락된 언어는 24시간마다 한 번, 그리고 Weblate에 새 언어가 추가될 때 확인됩니다.

대부분의 다른 애드온과 달리 이 애드온은 프로젝트 전체에 영향을 미칩니다.

힌트

자동 번역 로 새롭게 추가된 문자열을 자동 번역할 수 있습니다.

구성요소 발견

애드온 ID:

weblate.discovery.discovery

설정:

match

번역 파일과 일치시킬 정규 표현식

정규식은 구성요소와 언어에 대한 명명된 그룹을 정의해야 합니다.

file_format

파일 형식

파일 형식

name_template

구성요소 이름 사용자 정의

Django 템플릿 구문을 사용하세요. 이 템플릿에 {{ component }}가 포함되어야 합니다.

base_file_template

단일 언어 기본 파일명 정의

이중 언어 번역 파일의 경우 비워 두세요. 설정하면 이 템플릿에 {{ component }}가 포함되어야 합니다.

new_base_template

새 번역을 위한 기본 파일 정의

새 번역을 만드는 데 사용되는 파일 이름입니다. gettext에서는 .pot 파일을 선택하세요. 이 템플릿에 {{ component }}가 포함되어야 합니다.

intermediate_template

중간 언어 파일

중간 번역 파일의 파일 이름입니다. 대부분의 경우 개발자가 제공하는 번역 파일이며, 실제 원문 문자열을 생성할 때 사용됩니다. 이 템플릿에 {{ component }}가 포함되어야 합니다.

language_regex

언어 필터

파일 마스크를 검사할 때 번역 파일을 골라내는 데 사용되는 정규식입니다.

copy_addons

기본 구성요소에서 새로 생성된 구성요소로 애드온 복제

remove

존재하지 않는 파일의 구성요소 제거

트리거:

애드온 설치, 저장소 업데이트 후

버전 제어 시스템에서 파일 변경을 기반으로 하여 프로젝트 구성요소를 자동으로 추가하거나 제거합니다.

일치 검사는 복잡한 구성을 가능하게 하는 정규식으로 수행되므로, 이에 대한 지식이 필요합니다. 번역 파일과 일치하는 정규식에는 구성요소와 언어에 해당하는 두 개의 명명된 그룹이 포함되어야 합니다. 정규식의 모든 명명된 그룹은 템플릿 필드에서 변수로 사용할 수 있습니다.

발견 요구사항

구성요소를 성공적으로 발견하려면, 구성이 다음을 모두 충족해야 합니다:

  • 정규식에 componentlanguage 명명된 그룹이 정의되어야 합니다.

  • 구성요소별 파일의 이름을 지정하거나 찾는 데 사용되는 템플릿 필드에는 {{ component }} 가 포함되어야 하며, 이렇게 해야 발견된 각 구성요소에 대해 렌더링된 값이 실제로 변경됩니다.

  • 단일 언어 형식의 경우, 구성요소에 base_file_template 과 일치하는 파일과 match 와 일치하는 번역 파일이 하나 이상 포함되어야 합니다.

실습 예시: news_<lang>.md

일반적인 파일 이름 기반 언어 변형 배치입니다:

  • docs/news_en.md

  • docs/news_cs.md

  • docs/guide_en.md

시작점으로 파일 이름 기반 언어 변형 프리셋을 사용한 다음, 일치하는 파일 형식을 선택하고 채워진 값을 검토하세요.

정규 표현식:

(?:(?P<path>.*/))?(?P<component>.+?)_(?P<language>[A-Za-z]{2,3}(?:[_-][A-Za-z0-9]+)*)\.(?P<extension>[^/.]+)

구성요소 이름:

{{ component }}

발견된 파일 마스크:
  • docs/news_*.md

  • docs/guide_*.md

이 예시에서 {{ component }} 는 언어 접미사 앞의 기본 이름으로 해석되므로, docs/news_en.md, docs/news_pt_BR.md, docs/news_pt-BR.md 는 모두 news 구성요소가 됩니다.

모든 파일 이름 필드에서 Django 템플릿 마크업을 사용할 수 있습니다. 예를 들어:

{{ component }}

component 일치 그룹에서 구문 분석된 구성요소 이름

{{ component|title }}

첫 글자가 대문자인 구성요소 파일 이름

{{ path }}: {{ component }}

정규 표현식의 사용자 정의 일치 그룹

저장 을 누르면 일치하는 구성요소의 미리보기가 표시되며, 여기서 구성이 요구사항에 실제로 부합하는지 확인할 수 있습니다:

../_images/addon-discovery.webp

구성요소 발견 예시

위의 실습 예시는 가장 일반적인 파일 이름 기반 변형 배치를 다룹니다. 다음 예시에서는 일치시킬 수 있는 다른 저장소 구조를 보여줍니다.

언어당 하나의 폴더

구성요소에 대한 번역 파일이 포함된 언어당 하나의 폴더입니다.

정규 표현식:

(?P<language>[^/.]*)/(?P<component>[^/]*)\.po

일치하는 파일:
  • cs/application.po

  • cs/website.po

  • de/application.po

  • de/website.po

gettext 로케일 배치

gettext PO 파일을 저장하기 위한 일반적인 구조입니다.

정규 표현식:

locale/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po

일치하는 파일:
  • locale/cs/LC_MESSAGES/application.po

  • locale/cs/LC_MESSAGES/website.po

  • locale/de/LC_MESSAGES/application.po

  • locale/de/LC_MESSAGES/website.po

복잡한 파일 이름

파일 이름 안에 구성요소와 언어 이름을 모두 사용합니다.

정규 표현식:

src/locale/(?P<component>[^/]*)\.(?P<language>[^/.]*)\.po

일치하는 파일:
  • src/locale/application.cs.po

  • src/locale/website.cs.po

  • src/locale/application.de.po

  • src/locale/website.de.po

반복되는 언어 코드

경로와 파일 이름 모두에 언어를 사용합니다.

정규 표현식:

locale/(?P<language>[^/.]*)/(?P<component>[^/]*)/(?P=language)\.po

일치하는 파일:
  • locale/cs/application/cs.po

  • locale/cs/website/cs.po

  • locale/de/application/de.po

  • locale/de/website/de.po

Android 문자열 분할

Android 리소스 문자열로, 여러 파일로 나뉩니다.

정규 표현식:

res/values-(?P<language>[^/.]*)/strings-(?P<component>[^/]*)\.xml

일치하는 파일:
  • res/values-cs/strings-about.xml

  • res/values-cs/strings-help.xml

  • res/values-de/strings-about.xml

  • res/values-de/strings-help.xml

복수 경로 일치

Java 속성 번역이 포함된 다중 모듈 Maven 프로젝트입니다.

정규 표현식:

(?P<originalHierarchy>.+/)(?P<component>[^/]*)/src/main/resources/ApplicationResources_(?P<language>[^/.]*)\.properties

구성요소 이름:

{{ originalHierarchy }}: {{ component }}

일치하는 파일:
  • parent/module1/submodule/src/main/resources/ApplicationResources_fr.properties

  • parent/module1/submodule/src/main/resources/ApplicationResource_es.properties

  • parent/module2/src/main/resources/ApplicationResource_de.properties

  • parent/module2/src/main/resources/ApplicationResource_ro.properties

힌트

구성요소 발견 애드온은 Weblate 내부 URL 를 사용합니다. 이는 여러 구성요소 간에 VCS 설정을 공유하는 편리한 방법입니다. 연결된 구성요소는 각 구성요소의 소스 코드 저장소 필드(작업설정버전 제어 시스템)에 weblate://project/main-component 를 입력하여 설정한 기본 구성요소의 로컬 저장소를 사용합니다. 이렇게 하면 구성 시간과 시스템 리소스도 절약됩니다.

힌트

누락된 언어 추가 를 사용하여 새 구성요소에 번역 가능한 언어 전체 집합이 포함되도록 하세요.

Fedora 메시징

Added in version 5.15.

애드온 ID:

weblate.fedora_messaging.publish

설정:

amqp_url

AMQP broker URL

The AMQP broker URL to connect to.

topic_prefix

Topic prefix

Optional prefix to prepend to generated message topics.

publish_timeout

Publish timeout

How many seconds to wait for the broker delivery acknowledgement.

connection_attempts

Connection attempts

How many times to try connecting to the broker.

retry_delay

Retry delay

How many seconds to wait between connection attempts.

ca_cert

CA certificate bundle (PEM)

Paste only PEM certificate blocks, each starting with “—–BEGIN CERTIFICATE—–” and ending with “—–END CERTIFICATE—–“.

client_key

Client private key (PEM)

Paste a single unencrypted PEM private key block. Encrypted private keys are not supported.

client_cert

Client certificate (PEM)

Paste only the PEM certificate block starting with “—–BEGIN CERTIFICATE—–”; do not paste the output from “openssl x509 -text”.

event_filter

Change events to trigger

Choose which change events should trigger this add-on. Change events to trigger

events

Selected change events

Selected change events

트리거:

이벤트 변경

Fedora Messaging과 호환되는 AMQP 익스체인지로 알림을 전송합니다.

Fedora Messaging는 Weblate에서 발생하는 모든 변경 사항에 대한 AMQP 기반 발행자입니다. 이를 사용하여 Weblate에서 발생하는 변경 사항에 추가 서비스를 연결할 수 있습니다.

메시지 주제

All messages have topic weblate.<action>.<project>.<category...>.<component>.<translation>. When configured, topic_prefix is prepended to this topic using a single dot separator, for example org.fedoraproject.weblate.project_backed_up.website. The action is lowercase textual representation of action with underscores instead of space, for example resource_updated; see Selected change events for all action identifiers. The remaining parts match Weblate object path segments.

For example, a project backup event for the website project uses weblate.project_backed_up.website. A translation change in the website project, frontend component, and Czech translation uses weblate.translation_changed.website.frontend.cs. The same change in the frontend component inside the parent and child categories uses weblate.translation_changed.website.parent.child.frontend.cs.

메시지 본문

본문은 다음 필드로 구성됩니다(해당 이벤트에서 사용 가능한 경우):

change_id

변경사항의 숫자 ID

action

변경사항의 자세한 이름입니다.

timestamp

ISO 형식 타임스탬프

target

변경사항의 새로운 값(예: 문자열의 새로운 번역)

old

변경사항의 이전 값(예: 문자열의 이전 번역)

source

원문 문자열입니다.

url

관련 객체를 볼 수 있는 절대 URL입니다.

author

작성자 사용자 이름(예: 제안을 승인할 때 실제 사용자와 다를 수 있음)

user

작업 수행 사용자 이름

project

프로젝트 슬러그

component

구성요소 슬러그

translation

번역 언어 코드

메시지 헤더

라우팅에 활용할 수 있는 추가 헤더도 있습니다:

action

변경사항의 자세한 이름입니다.

project

프로젝트 슬러그

component

구성요소 슬러그

예시 메시지

저장소 병합 이벤트:

{
  "id": 1,
  "action": "Merged repository",
  "timestamp": "2017-06-15T11:30:47.325000+00:00",
  "url": "http://example.com/projects/test/test/",
  "component": "test"
}

새로운 원문 문자열 이벤트:

{
  "id": 2,
  "action": "New source string",
  "timestamp": "2017-06-15T11:30:47.372000+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

리소스 업데이트 이벤트:

{
  "id": 6,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.410000+00:00",
  "url": "http://example.com/projects/test/test/cs/",
  "project": "test",
  "component": "test",
  "translation": "cs"
}
{
  "id": 7,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.510000+00:00",
  "url": "http://example.com/projects/test/test/de/",
  "project": "test",
  "component": "test",
  "translation": "de"
}
{
  "id": 8,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.595000+00:00",
  "url": "http://example.com/projects/test/test/it/",
  "project": "test",
  "component": "test",
  "translation": "it"
}

프로젝트 제거 이벤트:

{
  "id": 9,
  "action": "Removed project",
  "timestamp": "2019-10-17T15:57:08.559420+00:00",
  "target": "test",
  "user": "testuser"
}

새로운 기여자 이벤트:

{
  "id": 11,
  "action": "New contributor",
  "timestamp": "2019-10-17T15:57:08.759960+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "author": "testuser",
  "user": "testuser",
  "project": "test",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

새로운 번역 이벤트:

{
  "id": 12,
  "action": "New translation",
  "timestamp": "2019-10-17T15:57:08.772591+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "target": ["Ahoj svete!\n"],
  "author": "testuser",
  "user": "testuser",
  "project": "test",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

일괄 편집

애드온 ID:

weblate.flags.bulk

설정:

q

쿼리

state

지정할 상태

사용 가능한 선택:

-1

변경하지 않음

10

편집 필요

11

편집 필요 (재작성 필요)

12

편집 필요 (확인 필요)

20

번역됨

30

승인됨

add_flags

추가할 번역 플래그

remove_flags

제거할 번역 플래그

add_labels

추가할 레이블

remove_labels

제거할 레이블

트리거:

애드온 설치, 구성요소 업데이트

플래그, 레이블 또는 문자열의 상태를 일괄 편집합니다.

예시:

새 문자열에 자동으로 레이블 지정

검색어

NOT has:label

추가할 레이블

최근

모든 앱 스토어 메타데이터 파일 변경 로그 문자열 읽기 전용으로 표시

검색어

language:en AND key:changelogs/

추가할 번역 플래그

read-only

특정 문자열을 읽기 전용으로 표시

검색어

source:r"^\`\`[.a-zA-Z0-9_-]*\`\`$" AND language:en

추가할 번역 플래그

read-only

변경되지 않은 번역을 “재작성 필요”로 표시

애드온 ID:

weblate.flags.same_edit

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

단위 생성 전

VCS에서 새로운 번역 가능 문자열을 가져올 때 원문 문자열과 일치하면 Weblate에서 재작성 필요로 표시됩니다. 특히 번역되지 않은 문자열에 원문 문자열이 포함된 파일 형식에 유용합니다.

힌트

번역 플래그strict-same 플래그를 추가하여 변경되지 않은 번역 검사를 강화할 수도 있습니다.

더 보기

번역 상태

새로운 원문 문자열을 “확인 필요”로 표시

애드온 ID:

weblate.flags.source_edit

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

단위 생성 전

VCS에서 새로운 원문 문자열을 가져올 때마다 Weblate에서 확인 필요로 표시됩니다. 이를 통해 개발자가 작성한 원문 문자열을 쉽게 필터링하고 편집할 수 있습니다.

더 보기

번역 상태

새 번역을 “재작성 필요”로 표시

애드온 ID:

weblate.flags.target_edit

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

단위 생성 전

VCS에서 새 번역 가능 문자열을 가져올 때마다 Weblate에서 재작성 필요로 표시됩니다. 이렇게 하면 개발자가 만든 번역을 쉽게 필터링하고 편집할 수 있습니다.

더 보기

번역 상태

저장소에서 업데이트된 번역을 “재작성 필요”로 표시

애드온 ID:

weblate.flags.target_repo_update

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

단위 동기화 후

VCS에서 문자열 번역이 변경될 때마다 Weblate에서 재작성 필요로 표시됩니다. 번역 파일이 수동으로 또는 외부 서비스에 의해 자주 업데이트되는 경우 특히 유용합니다.

더 보기

번역 상태

읽기 전용 문자열을 원문으로 채우기

Added in version 4.18.

애드온 ID:

weblate.generate.fill_read_only

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 구성요소 업데이트, 매일

읽기 전용 문자열의 번역을 원문 문자열로 채웁니다.

통계 생성기

애드온 ID:

weblate.generate.generate

설정:

filename

생성된 파일의 이름

template

생성된 파일의 내용

트리거:

애드온 설치, 저장소 커밋 전

번역 상태에 관한 자세한 정보를 포함한 파일을 생성합니다.

파일 이름과 내용 모두에서 Django 템플릿을 사용할 수 있습니다. 자세한 마크업 설명은 템플릿 마크업 을 참조하세요.

예를 들어 각 번역에 대한 요약 파일을 생성합니다:

생성된 파일의 이름

locale/{{ language_code }}.json

내용
{
   "language": "{{ language_code }}",
   "strings": "{{ stats.all }}",
   "translated": "{{ stats.translated }}",
   "last_changed": "{{ stats.last_changed }}",
   "last_author": "{{ stats.last_author }}",
}

더 보기

템플릿 마크업

원문으로 번역 미리 채우기

Added in version 4.11.

애드온 ID:

weblate.generate.prefill

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 구성요소 업데이트, 매일

번역 문자열을 원문 문자열로 채웁니다.

구성요소의 모든 미번역 문자열이 원문 문자열로 채워지고 편집 필요로 표시됩니다. 번역 파일에 빈 문자열이 있을 수 없을 때 이 옵션을 사용하세요. .. AUTOGENERATED START: weblate.generate.pseudolocale .. 이 섹션은 ./manage.py list_addons 에 의해 자동으로 생성됩니다. 수동으로 편집하지 마세요.

유사언어 생성

Added in version 4.5.

애드온 ID:

weblate.generate.pseudolocale

설정:

source

원문 문자열

target

대상 번역

이 번역의 모든 문자열이 덮어쓰기됩니다

prefix

앞에 추가되는 고정 텍스트

var_prefix

앞에 추가되는 변수 텍스트

suffix

뒤에 추가되는 고정 텍스트

var_suffix

뒤에 추가되는 변수 텍스트

var_multiplier

변수 텍스트 배수

원문 문자열의 길이에 따라 변수 텍스트를 몇 번 반복할지 지정합니다.

include_readonly

읽기 전용 문자열 포함

트리거:

애드온 설치, 구성요소 업데이트, 매일

원문 문자열에 접두사와 접미사를 자동으로 추가하여 번역을 생성합니다.

유사언어는 현지화할 준비가 되지 않은 문자열을 찾는 데 유용합니다. 이 작업은 유사언어로 응용 프로그램을 실행할 때 변경되지 않은 문자열을 쉽게 찾을 수 있으도록 번역 가능한 모든 원문 문자열을 변경하여 수행됩니다.

현지화된 문자열이 레이아웃에 맞지 않을 가능성이 있는 문자열을 찾는 것도 가능합니다.

변수 부분을 사용하면 현지화 후 사용자 인터페이스에 맞지 않는 문자열을 찾을 수 있습니다. 즉, 원문 문자열 길이를 기준으로 텍스트를 확장합니다. 변수 텍스트는 텍스트 길이에 배수를 곱한 값만큼 반복됩니다. 예를 들어, Hello world 에 변수 텍스트 _ 를 지정하고 변수 배수를 1로 지정하면 Hello world___________ 가 됩니다. 즉, 텍스트는 원문 문자열의 각 문자에 대해 한 번씩 반복됩니다.

문자열은 다음 패턴을 사용하여 생성됩니다:

앞에 추가되는 고정 텍스트 앞에 추가되는 변수 텍스트 원문 문자열 뒤에 추가되는 변수 텍스트 뒤에 추가되는 고정 텍스트

힌트

테스트에는 실제 언어를 사용할 수 있지만, Weblate에는 전용 유사언어인 en_XAar_XB 가 있습니다.

힌트

이 애드온을 사용하여 기존 언어 또는 유사 언어의 새 로케일에 대한 번역을 시작할 수 있습니다. 구성요소에 번역을 추가한 후 애드온을 따르세요. 예: fr 이 있고 fr_CA 번역을 시작하려면, 소스를 fr 로, 대상을 fr_CA 로 설정하고 접두사와 접미사를 비워 두세요.

복사 후에 이루어진 번역이 Weblate에 의해 변경되는 것을 방지하려면 새 번역이 채워지면 애드온을 제거하세요.

주석에 기여자 표시

애드온 ID:

weblate.gettext.authors

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

저장소 커밋 전

PO 파일 헤더의 주석 부분을 업데이트하여 기여자 이름과 기여 연도를 포함하도록 합니다.

PO 파일 헤더는 다음과 같이 표시됩니다:

# Michal Čihař <michal@weblate.org>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.

“configure” 파일에서 ALL_LINGUAS 변수 업데이트

애드온 ID:

weblate.gettext.configure

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 매일, 저장소 추가 후, 저장소 삭제 후

번역이 추가되거나 제거될 때 “configure”, “configure.in” 또는 “configure.ac” 파일의 ALL_LINGUAS 변수를 업데이트합니다.

번역이 추가되거나 제거될 때 configure, configure.in 또는 configure.ac 파일의 ALL_LINGUAS 변수를 업데이트합니다.

gettext 출력 사용자 정의

Removed in version 5.13: 파일 형식 매개변수 (으)로 대체됨.

gettext 템플릿 업데이트 (Django)

Added in version 5.17.

애드온 ID:

weblate.gettext.django

설정:

interval

업데이트 주기

구성요소가 새로 고쳐질 때 애드온이 POT 파일을 업데이트하는 주기입니다.

사용 가능한 선택:

daily

매일

weekly

매주

monthly

매월

normalize_header

POT 헤더 정규화

gettext 헤더를 업데이트하고 POT 자리 표시자 주석을 바꿉니다.

location_mode

Source locations

Choose how extraction writes source locations to the POT file. Use this to keep locations in the template while omitting them from translated PO files.

사용 가능한 선택:

file

Use file format settings

keep

Extract locations to the POT file

omit

Do not extract locations

트리거:

애드온 설치, 수동 트리거, 저장소 업데이트 후

Django의 내장 makemessages 명령을 사용하여 gettext 템플릿을 업데이트합니다.

This add-on updates the template configured in 신규 번역의 템플릿. It is available for gettext PO components, and the component must define a template for new translations.

The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.

The template update does not update translation PO files by itself. Keep PO 파일을 POT에 맞게 업데이트 (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.

Django requirements

This add-on requires xgettext and msguniq. It runs Weblate’s internal extraction wrapper for Django messages instead of invoking a project’s manage.py makemessages, so it does not load project Django settings or applications.

The template for new translations must use the django or djangojs domain. Supported template names are django.pot, djangojs.pot, django.po, and djangojs.po. Weblate infers the source directory from the template path and skips repository locale directories while extracting.

LINGUAS 파일 업데이트

애드온 ID:

weblate.gettext.linguas

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 매일, 저장소 추가 후, 저장소 삭제 후

번역이 추가되거나 제거될 때 LINGUAS 파일을 업데이트합니다.

POT 파일 업데이트 (Meson)

Added in version 5.17.

애드온 ID:

weblate.gettext.meson

설정:

interval

업데이트 주기

구성요소가 새로 고쳐질 때 애드온이 POT 파일을 업데이트하는 주기입니다.

사용 가능한 선택:

daily

매일

weekly

매주

monthly

매월

normalize_header

POT 헤더 정규화

gettext 헤더를 업데이트하고 POT 자리 표시자 주석을 바꿉니다.

location_mode

Source locations

Choose how extraction writes source locations to the POT file. Use this to keep locations in the template while omitting them from translated PO files.

사용 가능한 선택:

file

Use file format settings

keep

Extract locations to the POT file

omit

Do not extract locations

comment_mode

코드 주석

xgettext가 주석을 추출하지 않을지, 모든 주석을 추출할지, 특정 태그로 표시된 주석만 추출할지 선택하세요.

사용 가능한 선택:

off

주석을 추출하지 않음

all

모든 주석 추출

tagged

태그가 있는 주석 추출

comment_tag

주석 태그

태그 지정 주석 모드 사용 시 주석 추출을 위해 xgettext에 전달되는 태그입니다.

checks

xgettext 검사

추출된 메시지에 대해 활성화할 추가 xgettext 검증 검사입니다.

사용 가능한 선택:

ellipsis-unicode

ellipsis-unicode

space-ellipsis

space-ellipsis

quote-unicode

quote-unicode

bullet-unicode

bullet-unicode

keyword

추가 키워드

–keyword를 사용하여 xgettext에 전달하는 선택적 추가 키워드입니다.

keyword_exclusive

Use keywords exclusively

When enabled, passes --keyword without a value to xgettext before the additional keyword, disabling all default keywords so that only the keyword specified above is recognized.

preset

Meson 프리셋

Meson gettext 통합에 맞는 내장 xgettext 인수 프리셋입니다. GLib 프리셋은 Meson의 gettext 도우미가 사용하는 키워드 및 형식 플래그 옵션을 추가합니다.

사용 가능한 선택:

glib

GLib

트리거:

애드온 설치, 수동 트리거, 저장소 업데이트 후

Meson gettext 규칙을 사용하여 gettext 템플릿을 업데이트합니다.

This add-on updates the template configured in 신규 번역의 템플릿. It is available for gettext PO components, and the component must define a template for new translations.

The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.

The template update does not update translation PO files by itself. Keep PO 파일을 POT에 맞게 업데이트 (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.

Meson requirements

This add-on requires xgettext; it does not invoke Meson. It follows Meson gettext conventions by reading POTFILES or POTFILES.in from the gettext directory and passing the GLib keyword and format-flag preset to xgettext.

The gettext directory is the directory containing the template configured in 신규 번역의 템플릿. It must contain meson.build and POTFILES or POTFILES.in. A Meson project meson.build must be present in that directory or one of its parent directories. If both POTFILES and POTFILES.in exist, POTFILES is used. An adjacent POTFILES.skip excludes listed source files from extraction.

Configure this add-on from the existing Meson gettext setup. In most Meson projects, the gettext directory is po/, the template is named after the gettext domain, and po/meson.build calls Meson’s gettext helper. Use the same template path in 신규 번역의 템플릿, for example po/example.pot, and keep POTFILES or POTFILES.in next to that meson.build file.

Weblate does not read the source file list from meson.build. It uses POTFILES or POTFILES.in, matching Meson’s gettext convention. When the Meson project uses a non-default gettext directory or domain, mirror that layout in the component template path.

MO 파일 생성

애드온 ID:

weblate.gettext.mo

설정:

path

생성된 MO 파일의 경로

지정하지 않으면 PO 파일의 위치가 사용됩니다.

fuzzy

편집이 필요한 문자열 포함

편집이 필요한 문자열(fuzzy)은 일반적으로 번역으로 사용할 준비가 되지 않았습니다.

트리거:

저장소 커밋 전

변경된 모든 PO 파일에 대해 MO 파일을 자동으로 생성합니다.

생성된 MO 파일의 위치는 사용자 정의할 수 있으며, 해당 필드는 템플릿 마크업 을 사용합니다.

참고

번역이 제거되면 해당 PO 파일은 저장소에서 삭제되지만, 이 애드온이 생성한 MO 파일은 삭제되지 않습니다. MO 파일은 업스트림에서 수동으로 제거해야 합니다.

PO 파일을 POT에 맞게 업데이트 (msgmerge)

버전 5.13에서 변경: 설정 구성은 파일 형식 매개변수 로 이동되었습니다.

애드온 ID:

weblate.gettext.msgmerge

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 저장소 업데이트 후

“파일 마스크”로 설정된 모든 PO 파일을 “새 번역을 위한 템플릿”으로 설정된 POT 파일과 일치하도록 msgmerge를 사용하여 업데이트합니다.

이 애드온은 POT(템플릿) 파일이 새 문자열이나 기존 문자열의 변경으로 업데이트되는 gettext PO 파일을 다룰 때 필수적입니다. 저장소에서 POT 파일이 업데이트되면 이 애드온은 해당 변경 사항을 모든 언어 PO 파일에 자동으로 병합하여 다음을 바랍니다:

  • 새로운 번역 가능한 문자열이 모든 언어에 나타남

  • 제거된 문자열은 사용 중지로 표시됨

  • 수정된 문자열은 검토 필요(fuzzy)로 표시됨

Most msgmerge command-line options can be set up through file format parameters configuration. Enable the po_remove_obsolete parameter to remove obsolete #~ entries when PO files are saved.

POT 파일 업데이트 (Sphinx)

Added in version 5.17.

애드온 ID:

weblate.gettext.sphinx

설정:

interval

업데이트 주기

구성요소가 새로 고쳐질 때 애드온이 POT 파일을 업데이트하는 주기입니다.

사용 가능한 선택:

daily

매일

weekly

매주

monthly

매월

normalize_header

POT 헤더 정규화

gettext 헤더를 업데이트하고 POT 자리 표시자 주석을 바꿉니다.

location_mode

Source locations

Choose how extraction writes source locations to the POT file. Use this to keep locations in the template while omitting them from translated PO files.

사용 가능한 선택:

file

Use file format settings

keep

Extract locations to the POT file

omit

Do not extract locations

filter_mode

필터링

Sphinx 추출 후 번역할 필요가 없는 문자열을 선택적으로 제거합니다.

사용 가능한 선택:

none

없음

weblate_docs

Weblate 문서

트리거:

애드온 설치, 수동 트리거, 저장소 업데이트 후

프로젝트 구성을 로드하지 않고 Sphinx의 gettext 빌더를 사용하여 gettext 템플릿을 업데이트합니다.

This add-on updates the template configured in 신규 번역의 템플릿. It is available for gettext PO components, and the component must define a template for new translations.

The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.

The template update does not update translation PO files by itself. Keep PO 파일을 POT에 맞게 업데이트 (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.

Sphinx requirements

This add-on requires sphinx-build, provided by the sphinx installation extra. The template for new translations must be a .pot file below a locales directory. The directory before locales is used as the Sphinx source directory and must contain conf.py.

Extraction uses Weblate’s bundled Sphinx configuration and does not load the project configuration. Weblate runs the Sphinx gettext builder, normalizes source references to paths relative to the source directory, and copies the generated template back to the configured template path.

POT 파일 업데이트 (xgettext)

Added in version 5.17.

애드온 ID:

weblate.gettext.xgettext

설정:

interval

업데이트 주기

구성요소가 새로 고쳐질 때 애드온이 POT 파일을 업데이트하는 주기입니다.

사용 가능한 선택:

daily

매일

weekly

매주

monthly

매월

normalize_header

POT 헤더 정규화

gettext 헤더를 업데이트하고 POT 자리 표시자 주석을 바꿉니다.

location_mode

Source locations

Choose how extraction writes source locations to the POT file. Use this to keep locations in the template while omitting them from translated PO files.

사용 가능한 선택:

file

Use file format settings

keep

Extract locations to the POT file

omit

Do not extract locations

comment_mode

코드 주석

xgettext가 주석을 추출하지 않을지, 모든 주석을 추출할지, 특정 태그로 표시된 주석만 추출할지 선택하세요.

사용 가능한 선택:

off

주석을 추출하지 않음

all

모든 주석 추출

tagged

태그가 있는 주석 추출

comment_tag

주석 태그

태그 지정 주석 모드 사용 시 주석 추출을 위해 xgettext에 전달되는 태그입니다.

checks

xgettext 검사

추출된 메시지에 대해 활성화할 추가 xgettext 검증 검사입니다.

사용 가능한 선택:

ellipsis-unicode

ellipsis-unicode

space-ellipsis

space-ellipsis

quote-unicode

quote-unicode

bullet-unicode

bullet-unicode

keyword

추가 키워드

–keyword를 사용하여 xgettext에 전달하는 선택적 추가 키워드입니다.

keyword_exclusive

Use keywords exclusively

When enabled, passes --keyword without a value to xgettext before the additional keyword, disabling all default keywords so that only the keyword specified above is recognized.

input_mode

입력 소스

xgettext가 글롭 패턴 또는 POTFILES/POTFILES.in 매니페스트에서 소스 파일을 읽을지 선택하세요.

사용 가능한 선택:

patterns

소스 파일 패턴

potfiles

POTFILES 매니페스트

language

xgettext 언어

xgettext에 전달되는 프로그래밍 언어입니다. 예: Python 또는 C. xgettext가 확장자로 언어를 추정하도록 하려면 비워 두세요.

source_patterns

소스 파일 패턴

xgettext로 추출할 파일에 대한 줄바꿈으로 구분된 저장소 상대 글롭 패턴입니다.

potfiles_path

POTFILES 경로

POTFILES 또는 POTFILES.in의 저장소 상대 경로입니다. 항목은 저장소 루트를 기준으로 해석됩니다. 매니페스트 옆에 POTFILES.skip이 있으면 나열된 파일이 추출에서 제외됩니다.

트리거:

애드온 설치, 수동 트리거, 저장소 업데이트 후

선택한 소스 파일에 xgettext를 사용하여 gettext 템플릿을 업데이트합니다.

This add-on updates the template configured in 신규 번역의 템플릿. It is available for gettext PO components, and the component must define a template for new translations.

The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.

The template update does not update translation PO files by itself. Keep PO 파일을 POT에 맞게 업데이트 (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.

xgettext requirements

This add-on requires xgettext. Configure either source file patterns or a POTFILES / POTFILES.in manifest. Source file patterns are repository-relative glob patterns and only matching repository files are passed to xgettext.

Entries in POTFILES or POTFILES.in are resolved relative to the repository root. They must be relative paths, stay inside the repository, and point to existing files. Blank lines and lines starting with # are ignored. If a POTFILES.skip file exists next to the manifest, its entries are excluded from extraction.

Automatic repository refresh runs are skipped unless the changed files match the configured source patterns, match files listed in the manifest, change a watched manifest, or change the add-on configuration.

Start from the build-system extraction setup when configuring this add-on. Autotools projects usually keep gettext inputs in po/POTFILES.in and options such as the gettext domain and xgettext flags in po/Makevars or related Makefile.am files. Use manifest mode with the same POTFILES.in when its entries are plain repository-relative source paths, and copy relevant extraction behavior into the add-on settings, for example the language, comment extraction, checks, and additional keyword.

For other build systems, use the source list or extraction command they already run as the source of truth. CMake, custom Makefiles, npm scripts, or project specific extraction scripts often call xgettext directly or generate an intermediate file list. Configure source patterns for simple layouts, or use manifest mode when the project maintains a plain file list. If a build-system manifest contains transformations or prefixes that are not file paths, convert it to plain repository-relative paths before using it as POTFILES.

Git 커밋 스쿼시

애드온 ID:

weblate.git.squash

설정:

squash

커밋 스쿼시

사용 가능한 선택:

all

모든 커밋을 하나로

language

언어별

file

파일별

author

작성자별

append_trailers

스쿼시된 커밋 메시지에 트레일러 추가

트레일러 라인은 커밋 메시지의 자유 형식 부분 끝에 ‘Co-authored-by: …’와 같이 RFC 822 이메일 헤더와 유사하게 보이는 줄입니다.

commit_message

커밋 메시지

이 커밋 메시지는 스쿼시된 커밋의 결합된 커밋 메시지 대신 사용됩니다.

트리거:

애드온 설치, 저장소 커밋 후

변경 사항을 푸시하기 전에 Git 커밋을 스쿼시합니다.

힌트

불필요한 충돌을 방지하려면 웹훅이나 API를 통해 업스트림 변경 사항의 자동 수신을 구성하는 것이 좋습니다. 저장소 업데이트 를 참조하세요.

Git 커밋은 변경 사항을 푸시하기 전에 다음 모드 중 하나로 스쿼시할 수 있습니다:

  • 모든 커밋을 하나로

  • 언어별

  • 파일별

  • 작성자별

원본 커밋 메시지는 유지되지만, 작성자별 을 선택하거나 커밋 메시지를 사용자 지정하여 작성자 정보를 포함하지 않으면 작성자 정보가 손실됩니다.

원본 커밋 메시지는 선택적으로 사용자 정의 커밋 메시지로 대체할 수 있습니다.

트레일러(Co-authored-by: 와 같은 커밋 줄)는 원본 커밋 메시지에서 선택적으로 제거하여 스쿼시된 커밋 메시지 끝에 추가할 수 있습니다. 이는 모든 번역자에 대해 적절한 Co-authored-by: 표기도 생성합니다.

JSON 출력 사용자 정의

버전 5.12에서 변경: 구분자 뒤 공백 방지 옵션이 추가되었습니다.

Removed in version 5.13: 파일 형식 매개변수 (으)로 대체됨.

저장소를 업스트림으로 초기화

Added in version 5.17.

애드온 ID:

weblate.hosted.reset

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 매일

매일 밤 Weblate 저장소의 모든 변경 사항을 폐기합니다.

Java 속성 파일 형식 지정

애드온 ID:

weblate.properties.sort

설정:

case_sensitive

대소문자 구분 키 정렬 활성화

트리거:

저장소 커밋 전

Java 속성 파일을 형식화하고 정렬합니다.

  • 줄바꿈을 Unix 형식으로 통합합니다.

  • 유니코드 이스케이프 시퀀스가 있는 경우 대문자 형식으로 변환합니다.

  • 빈 줄과 주석을 제거합니다.

  • 키에 따라 문자열을 정렬합니다.

  • 중복 문자열을 제거합니다.

오래된 의견 제거

애드온 ID:

weblate.removal.comments

설정:

age

보관할 일수

트리거:

애드온 설치, 매일

의견 삭제 기간을 설정합니다.

오래되어 더 이상 유효하지 않은 의견을 제거하는 데 유용합니다. 의견이 오래되었다고 해서 중요성이 떨어지는 것은 아니므로 주의하여 사용하세요.

오래된 제안 제거

애드온 ID:

weblate.removal.suggestions

설정:

age

보관할 일수

votes

투표 임계치

제거 임계값입니다. 투표 수와 관계없이 제안을 제거하려면 비워 두세요. 투표가 꺼져 있으면 이 필드는 효과가 없습니다.

트리거:

애드온 설치, 매일

제안 삭제 기간을 설정합니다.

제안 투표(동료 검토 참조)와 함께 사용하면 주어진 기간 내에 충분한 긍정 투표를 받지 못한 제안을 제거하는 데 매우 유용합니다.

RESX 파일 업데이트

애드온 ID:

weblate.resx.update

설정:

` 이 애드온에는 구성이 없습니다.`

트리거:

애드온 설치, 저장소 업데이트 후

단일 언어 업스트림 기본 파일과 일치하도록 모든 번역 파일을 업데이트합니다. 사용되지 않는 문자열은 제거되고, 새 문자열은 원문 문자열의 복사본으로 추가됩니다.

힌트

오래된 번역 키만 제거하려면 번역 파일 정리 을 사용하세요.

Slack 웹훅

Added in version 5.12.

애드온 ID:

weblate.webhook.slack

설정:

webhook_url

웹훅 URL

event_filter

Change events to trigger

Choose which change events should trigger this add-on. Change events to trigger

events

Selected change events

Selected change events

트리거:

이벤트 변경

선택한 이벤트에 따라 Slack 채널로 알림을 전송합니다.

경고

알림 내용에 HTML 태그가 표시될 수 있습니다. 이는 곧 해결될 예정인 알려진 문제입니다. https://github.com/WeblateOrg/weblate/issues/15056을 참조하세요.

웹훅

Added in version 5.11.

버전 5.15에서 변경: 이제 비밀 키 길이가 사양을 준수하는지 검증됩니다.

애드온 ID:

weblate.webhook.webhook

설정:

webhook_url

웹훅 URL

secret

웹훅 비밀 키

표준 웹훅 비밀 키는 Base64로 인코딩된 문자열입니다.

event_filter

Change events to trigger

Choose which change events should trigger this add-on. Change events to trigger

events

Selected change events

Selected change events

트리거:

이벤트 변경

선택한 이벤트에 따라 표준 웹훅 사양을 준수하여 외부 서비스로 알림을 전송합니다.

The request payload complies with the Weblate Messaging schema. The action field uses the action name listed in Selected change events. The OpenAPI description can also be found at /api/docs/. Sample request body:

{
   "change_id": 99,
   "action": "Translation changed",
   "timestamp": "2019-08-24T14:15:22Z",
   "target": "Nazdar svete!",
   "old": "Nazdar!",
   "source": "Hello, world",
   "url": "/translate/project-slug/component-slug/cs/?checksum=46add148a53cab6f",
   "author": "author-username",
   "user": "user-username",
   "project": "project-slug",
   "component": "component-slug",
   "translation": "cs"
}

카테고리가 포함된 요청 본문 예시:

{
   "change_id": 8910,
   "action": "Component renamed",
   "timestamp": "2025-06-11T07:15:09Z",
   "target": ["new-name"],
   "old": ["component-slug"],
   "url": "/projects/project-slug/parent-category/child-category/sub-category/component-slug/",
   "user": "testuser",
   "project": "project-slug",
   "component": "component-slug",
   "category": [
      "sub-category",
      "child-category",
      "parent-category"
   ]
}

요청 헤더 예시:

{
   "webhook-id": "7f1c5477f6275a69af7b83236c20cb1a",
   "webhook-timestamp": "1748505623.044281",
   "webhook-signature": "v1,Ceo5qEr07ixe2NLpvHk3FH9bwy/WavXrAFQ/9tdO6mc="
}

webhook-signaturesecret 문자열, 요청 페이로드, webhook-timestamp, webhook-id 를 사용하여 생성된 HMAC 서명의 공백 구분 목록입니다. 이를 통해 웹훅 요청의 진위성과 무결성이 보장됩니다.

제공된 secret 은 24바이트(192비트)에서 64바이트(512비트) 사이의 Base64 인코딩 문자열입니다. 쉽게 식별할 수 있도록 whsec_ 접두사를 붙일 수 있습니다.

요청을 검증하려면 standardwebhooks 라이브러리의 Webhook.verify 메서드 또는 “표준 웹훅 사양” 구현을 사용할 수 있습니다.

사용되지 않는 애드온

XML 출력 사용자 정의

Added in version 4.15.

Removed in version 5.13: 파일 형식 매개변수 (으)로 대체됨.

YAML 출력 사용자 정의

Removed in version 5.13: 파일 형식 매개변수 (으)로 대체됨.

일반 애드온 매개변수

기계 번역 엔진

사용 가능한 선택:

alibaba

Alibaba

aws

Amazon 번역

anthropic

Anthropic

apertium-apy

Apertium APy

microsoft-translator

Azure AI 번역기

azure-openai

Azure OpenAI

baidu

Baidu

cyrtranslit

CyrTranslit

deepl

DeepL

glosbe

Glosbe

google-translate-api-v3

Google Cloud Translation Advanced

google-translate

Google Cloud Translation Basic

ltengine

LTEngine

libretranslate

LibreTranslate

mistral

Mistral

modernmt

ModernMT

mymemory

MyMemory

netease-sight

Netease Sight

ollama

Ollama

openai

OpenAI

sap-translation-hub

SAP Translation Hub

systran

Systran

weblate

Weblate

weblate-translation-memory

Weblate 번역 메모리

yandex

Yandex

yandex-v2

Yandex v2

youdao-zhiyun

Youdao Zhiyun

tmserver

tmserver

파일 형식

사용 가능한 선택:

apple-xliff

Apple 확장이 포함된 XLIFF 1.2

appstore

앱 스토어 메타데이터 파일

arb

ARB 파일

aresource

Android String Resource

asciidoc

AsciiDoc 파일

ass

Advanced SubStation Alpha 자막 파일

catkeys

Haiku catkeys

cmp-resource

Compose Multiplatform 리소스

csv

CSV 파일

csv-multi

다중값 CSV 파일

csv-simple

Simple CSV 파일

dokuwiki

DokuWiki 텍스트 파일

dtd

DTD 파일

flatxml

Flat XML 파일

fluent

Fluent 파일

formatjs

Format.JS JSON 파일

go-i18n-json

go-i18n v1 JSON 파일

go-i18n-json-v2

go-i18n v2 JSON 파일

go-i18n-toml

go-i18n TOML 파일

gotext

gotext JSON 파일

gwt

GWT 속성

html

HTML 파일

i18next

i18next JSON 파일 v3

i18nextv4

i18next JSON 파일 v4

idml

IDML 파일

ini

INI 파일

islu

Inno Setup INI 파일

joomla

Joomla 언어 파일

json

JSON 파일

json-nested

JSON 중첩 구조 파일

laravel

Laravel PHP 문자열

markdown

Markdown 파일

mdx

MDX 파일

mediawiki

MediaWiki 텍스트 파일

mi18n-lang

@draggable/i18n 언어 파일

moko-resource

Mobile Kotlin 리소스

nextcloud-json

Nextcloud JSON 파일

odf

OpenDocument 파일

php

PHP 문자열

plainxliff

XLIFF 1.2 번역 파일

po

gettext PO 파일

po-mono

gettext PO 파일 (단일 언어)

poxliff

gettext 확장이 포함된 XLIFF 1.2

properties

Java 속성

rc

RC 파일

resjson

RESJSON 파일

resourcedictionary

ResourceDictionary 파일

resx

.NET 리소스 파일

ruby-yaml

Ruby YAML 파일

srt

SubRip 자막 파일

ssa

SubStation Alpha 자막 파일

strings

iOS 문자열

stringsdict

Stringsdict 파일

sub

MicroDVD 자막 파일

tbx

TermBase eXchange 파일

toml

TOML 파일

ts

Qt Linguist translation file (version 2)

ts1

Qt Linguist translation file (version 1)

txt

일반 텍스트 파일

webextension

WebExtension JSON 파일

wxl

WixLocalization 파일

xliff

배치 가능 항목을 지원하는 XLIFF 1.2

xliff2

XLIFF 2.0 번역 파일

xliff2-placeables

배치 가능 항목을 지원하는 XLIFF 2.0 번역 파일

xlsx

Excel Open XML

xwiki-fullpage

XWiki 전체 페이지

xwiki-java-properties

XWiki Java 속성

xwiki-page-properties

XWiki 페이지 속성

yaml

YAML 파일

Change events to trigger

사용 가능한 선택:

content

Translation content events

all

All change events

custom

Selected change events

Selected change events

The following change actions can appear in notification payloads. Fedora Messaging uses the identifier column in message topics, while webhook payloads use the name column in the action field.

사용 가능한 선택:

ID

Identifier

이름

설명

0

resource_updated

리소스 업데이트됨

A translation file was synchronized with its repository.

1

translation_completed

번역 완료됨

A language translation became fully translated after an individual edit. Automatic translation, uploads, and bulk edits do not emit this event.

2

translation_changed

번역 변경됨

An existing translation was edited by a user.

3

comment_added

의견 추가됨

A comment was added to a string.

4

suggestion_added

제안 추가됨

A translation suggestion was added.

5

translation_added

번역 추가됨

A previously untranslated string was translated by a user.

6

automatically_translated

자동으로 번역됨

A translation was added or changed by automatic translation. This is emitted instead of Translation added or Translation changed.

7

suggestion_accepted

제안 승인됨

A translation suggestion was accepted as the translation.

8

translation_reverted

번역 되돌려짐

A translation was restored to an earlier value.

9

translation_uploaded

번역 업로드됨

A translation was added or changed by a translation file upload. This is emitted instead of Translation added or Translation changed.

13

source_string_added

원문 문자열 추가됨

A source string was added outside repository or upload updates.

14

component_locked

구성요소 잠김

A component was locked for translation.

15

component_unlocked

구성요소 잠금 해제됨

A component was unlocked for translation.

17

changes_committed

변경사항 커밋됨

Pending component changes were committed.

18

changes_pushed

변경사항 푸시됨

Repository changes were pushed upstream.

19

repository_reset

저장소 초기화됨

A repository was reset to its upstream state.

20

repository_merged

저장소 병합됨

Upstream repository changes were merged.

21

repository_rebased

저장소 리베이스됨

Repository changes were rebased on upstream.

22

repository_merge_failed

저장소 병합 실패함

Merging upstream repository changes failed.

23

repository_rebase_failed

저장소 리베이스 실패함

Rebasing repository changes failed.

24

parsing_failed

구문분석 실패함

Weblate could not parse a translation file.

25

translation_removed

번역 삭제됨

A language translation was removed.

26

suggestion_removed

제안 삭제됨

A translation suggestion was removed.

27

translation_replaced

번역 대체됨

A translation was changed by a search-and-replace operation. This is emitted instead of Translation changed.

28

repository_push_failed

저장소 푸시 실패함

Pushing repository changes upstream failed.

29

suggestion_removed_during_cleanup

정리 도중 제안 제거됨

An obsolete translation suggestion was removed during cleanup.

30

source_string_changed

원문 문자열 변경됨

A source string was edited in Weblate.

31

string_added

문자열 추가됨

A new string was added in Weblate.

32

bulk_status_changed

일괄 상태 변경됨

The translation state of one or more strings was changed in bulk.

33

visibility_changed

공개 범위 변경됨

Project or component visibility was changed.

34

user_added

사용자 추가됨

A user was granted access.

35

user_removed

사용자 제거됨

A user’s access was removed.

36

translation_approved

번역 승인됨

A translation was approved during review.

37

marked_for_edit

편집 필요로 표시됨

A translation was marked as needing editing.

38

component_removed

구성요소 제거됨

A translation component was removed.

39

project_removed

프로젝트 제거됨

A translation project was removed.

41

project_renamed

프로젝트 이름 변경됨

A translation project was renamed.

42

component_renamed

구성요소 이름 변경됨

A translation component was renamed.

43

moved_component

구성요소 이동됨

A component was moved within a project.

45

contributor_joined

기여자 참여함

A user made their first contribution to a translation.

46

announcement_posted

공지사항 게시됨

An announcement was posted.

47

alert_triggered

경고 발생

A component alert was triggered.

48

language_added

언어 추가됨

A language translation was added.

49

language_requested

언어 추가 요청됨

A user requested a new language.

50

project_created

프로젝트 생성됨

A translation project was created.

51

component_created

구성요소 생성됨

A translation component was created.

52

user_invited

사용자 초대됨

A user was invited to a project.

53

repository_notification_received

저장소 알림 수신됨

Weblate received a repository notification from a code host.

54

translation_replaced_file_by_upload

업로드한 파일로 번역 대체됨

A translation file was replaced by an uploaded file.

55

license_changed

라이선스 변경됨

Project or component license information changed.

56

contributor_license_agreement_changed

기여자 약관(CLA) 변경됨

The contributor license agreement was changed.

57

screenshot_added

스크린샷 추가됨

A screenshot was associated with a string.

58

screenshot_uploaded

스크린샷 업로드됨

A screenshot image was uploaded.

59

string_updated_in_the_repository

저장소에 문자열 업데이트됨

A string was changed while synchronizing from the repository.

60

add-on_installed

애드온 설치됨

An add-on was installed.

61

add-on_configuration_changed

애드온 구성 변경됨

An add-on’s configuration was changed.

62

add-on_uninstalled

애드온 제거됨

An add-on was uninstalled.

63

string_removed

문자열 제거됨

A string was removed from a translation.

64

comment_removed

의견 삭제됨

A string comment was removed.

65

comment_resolved

의견 해결됨

A string comment was marked as resolved.

66

explanation_updated

설명 업데이트됨

The explanation for a source string was updated.

67

category_removed

카테고리 삭제됨

A component category was removed.

68

category_renamed

카테고리 이름 변경됨

A component category was renamed.

69

category_moved

카테고리 이동됨

A component category was moved.

70

saving_string_failed

문자열 저장 실패

Weblate could not save a changed string.

71

string_added_in_the_repository

저장소에 문자열 추가됨

A new string was found while synchronizing from the repository.

72

string_updated_in_the_upload

업로드로 문자열 업데이트됨

A string was changed while processing an uploaded file.

73

string_added_in_the_upload

업로드로 문자열 추가됨

A new string was found while processing an uploaded file.

74

translation_updated_by_source_upload

원문 업로드로 번역 업데이트됨

A translation was synchronized after uploading a source file.

75

component_translation_completed

구성요소 번역 완료

All language translations in a component became fully translated after an individual edit. Automatic translation, uploads, and bulk edits do not emit this event.

76

applied_enforced_check

검사 강제 적용

A translation was marked as needing editing by an enforced check.

77

propagated_change

변경 사항 전파됨

A translation edit was propagated to another matching string.

78

file_uploaded

파일 업로드됨

A file was uploaded to a translation.

79

extra_flags_updated

추가 플래그 업데이트됨

Additional source-string flags were updated.

80

font_uploaded

글꼴 업로드됨

A font was uploaded.

81

font_changed

글꼴 변경됨

An uploaded font was changed.

82

font_removed

글꼴 삭제됨

An uploaded font was removed.

83

forced_synchronization_of_translations

번역 강제 동기화

Translation files were forcibly synchronized with the repository.

84

forced_rescan_of_translations

번역 강제 재검사

Translation files were forcibly rescanned for changes.

85

screenshot_removed

스크린샷 제거됨

A screenshot was removed.

86

label_added

레이블 추가됨

A label was added to a string.

87

label_removed

레이블 제거됨

A label was removed from a string.

88

repository_cleanup

저장소 정리

The repository working tree was cleaned up.

89

source_string_added_in_the_upload

업로드로 원문 문자열 추가됨

A source string was added while processing an uploaded file.

90

source_string_added_in_the_repository

저장소에 원문 문자열 추가됨

A source string was added while synchronizing from the repository.

91

project_backed_up

프로젝트 백업됨

A project backup was created.

92

project_restored

프로젝트 복원됨

A project was restored from a backup.

93

component_restored

구성요소 복원됨

A component was restored from a backup.

94

user_edit_reverted

사용자 편집 되돌림

All selected edits by a user were reverted.

95

project_setting_changed

프로젝트 설정 변경됨

A project setting was changed.

96

component_setting_changed

구성요소 설정 변경됨

A component setting was changed.

97

user_access_changed

사용자 접근 변경됨

A user’s access permissions were changed.

98

workspace_created

작업공간 생성됨

A workspace was created.

99

workspace_setting_changed

작업공간 설정 변경됨

A workspace setting was changed.

100

project_moved

프로젝트 이동됨

A project was moved into or out of a workspace.

101

remote_repository_updated

Remote repository updated

A remote repository update was completed.

102

remote_repository_update_failed

Remote repository update failed

Updating a remote repository failed.

103

alert_dismissed

Alert dismissed

A component alert was dismissed.

104

alert_reopened

Alert reopened

A component alert was reopened after its context changed.

애드온 목록 사용자 정의

애드온 목록은 WEBLATE_ADDONS 로 구성됩니다. 다른 애드온을 추가하려면 이 설정에 절대 클래스 이름을 포함시키기만 하면 됩니다.

애드온 작성

직접 애드온을 작성할 수도 있습니다. weblate.addons.base.BaseAddon 의 하위 클래스를 만들어 애드온 메타데이터를 정의한 후 콜백을 구현하여 처리를 수행합니다.

더 보기

애드온 개발

애드온에서 스크립트 실행

애드온을 사용하여 외부 스크립트를 실행할 수도 있습니다. 이전에는 Weblate에 통합되어 있었지만, 이제는 애드온으로 스크립트를 감싸는 코드를 작성해야 합니다.

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""Example pre commit script."""

from __future__ import annotations

from typing import ClassVar

from django.utils.translation import gettext_lazy

from weblate.addons.events import AddonEvent
from weblate.addons.scripts import BaseScriptAddon


class ExamplePreAddon(BaseScriptAddon):
    # Event used to trigger the script
    events: ClassVar[set[AddonEvent]] = {
        AddonEvent.EVENT_PRE_COMMIT,
    }
    # Name of the addon, has to be unique
    name = "weblate.example.pre"
    # Verbose name and long description
    verbose = gettext_lazy("Execute script before commit")
    description = gettext_lazy("This add-on executes a script.")

    # Script to execute
    script = "/bin/true"
    # File to add in commit (for pre commit event)
    # does not have to be set
    add_file = "po/{{ language_code }}.po"

설치 지침은 사용자 정의 품질 검사, 애드온, 자동 제안 및 자동 수정 를 참조하세요.

스크립트는 지정된 구성요소의 VCS 저장소 루트를 현재 디렉터리로 설정한 상태에서 실행됩니다.

추가로 다음 환경 변수를 사용할 수 있:

WL_VCS

사용된 버전 관리 시스템.

WL_REPO

업스트림 저장소 URL.

WL_PATH

VCS 저장소의 절대 경로.

WL_BRANCH

현재 구성요소에 설정된 저장소 브랜치.

WL_FILEMASK

현재 구성요소의 파일 마스크.

WL_TEMPLATE

단일 언어 번역의 템플릿 파일 이름 (비어 있을 수 있음).

WL_NEW_BASE

새 번역 생성에 사용되는 파일의 이름 (비어 있을 수 있음).

WL_FILE_FORMAT

현재 구성요소에서 사용되는 파일 형식.

WL_LANGUAGE

현재 처리 중인 번역의 언어 (구성요소 수준 훅에서는 사용할 수 없음).

WL_PREVIOUS_HEAD

업데이트 후 이전 HEAD (업데이트 후 훅 실행 후에만 사용 가능).

WL_COMPONENT_SLUG

URL 구성에 사용되는 구성요소 슬러그.

WL_PROJECT_SLUG

URL 구성에 사용되는 프로젝트 슬러그.

WL_COMPONENT_NAME

구성요소 이름.

WL_PROJECT_NAME

프로젝트 이름.

WL_COMPONENT_URL

구성요소 URL.

WL_ENGAGE_URL

프로젝트 참여 URL.

더 보기

구성요소 설정

업데이트 후 저장소 처리

VCS 업스트림 소스가 변경될 때 번역 파일을 업데이트하는 데 사용할 수 있습니다. 이를 위해 Weblate는 VCS에 커밋된 파일만 인식하므로, 스크립트의 일부로 변경 사항을 커밋해야 합니다.

예를 들어 Gulp에서는 다음 코드를 사용할 수 있음:

#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json

번역의 커밋 전 처리

커밋 스크립트를 사용하여 저장소에 커밋되기 전에 번역을 자동으로 변경합니다.

현재 번역의 파일 이름을 포함하는 단일 매개변수로 전달됩니다.

애드온 활동 로깅

애드온 활동 로그는 애드온 실행을 추적하며 애드온 활동을 모니터링하는 데 사용할 수 있습니다.

Each entry records whether processing is pending, successful, failed, or skipped. Skipped entries include the reason the add-on did not run, such as an incompatible component, no relevant changes, or a configured schedule that is not due yet. A successful entry can still mean that the add-on checked its inputs but found nothing to change.

For scope-wide add-ons that process components independently, the activity log contains a separate entry for each component.

ADDON_ACTIVITY_LOG_EXPIRY 를 설정하여 특정 시간 간격 후 로그를 정리할 수 있습니다.