자주 묻는 질문¶
설정¶
자동화된 워크플로를 어떻게 만드나요?¶
Weblate는 모든 번역 작업을 반자동으로 처리할 수 있습니다. 저장소에 대한 푸시 접근 권한을 부여하면 병합 충돌이 발생하지 않는 한 번역이 사용자 개입 없이 진행됩니다.
SSH를 통해 저장소에 어떻게 접근하나요?¶
SSH 키 설정에 대한 정보는 저장소 접근 를 참조하세요.
번역의 병합 충돌을 어떻게 해결하나요?¶
번역 파일이 Weblate와 업스트림 저장소 모두에서 동시에 변경될 때 병합 충돌이 발생할 수 있습니다. 일반적으로 번역 파일을 변경하기 전에 (예: msgmerge를 실행하기 전에) Weblate 번역을 병합하면 이를 방지할 수 있습니다. Weblate에 보류 중인 모든 번역을 커밋하도록 지시하고 ( Operations 메뉴의 Repository maintenance 에서 수행 가능) 저장소를 병합하세요 (자동 푸시가 설정되지 않은 경우).
이미 병합 충돌이 발생한 경우 로컬 머신에서 모든 충돌을 해결하는 가장 쉬운 방법은 Weblate를 원격 저장소로 추가하고 업스트림에 병합한 후 충돌을 수정하는 것입니다. 변경 사항을 다시 푸시하면 Weblate는 다른 특별한 작업 없이 병합된 버전을 사용할 수 있습니다.
참고
풀 리퀘스트에서 충돌을 해결한다면 일반 병합 커밋으로 병합하세요. 스쿼시 병합하지 마세요. 스쿼시 병합은 Weblate 커밋을 보존하는 대신 새 커밋을 만들기 때문에, Weblate가 로컬 커밋이 이미 업스트림에 포함되어 있음을 인식하지 못하고 복구를 위해 저장소 재설정이 필요할 수 있습니다.
참고
Weblate는 클론 시간과 디스크 사용량을 줄이기 위해 기본적으로 얕은 클론을 사용합니다. 따라서 아래 워크플로는 최신 업스트림 저장소 체크아웃에서 시작할 때 가장 잘 작동합니다. 내보낸 Weblate 저장소에서 직접 클론하거나 업스트림 체크아웃에 최근 커밋이 누락된 경우 git remote update weblate 가 warning: no common commits, bad revision 또는 누락된 객체와 같은 오류로 실패할 수 있습니다. 이것이 반드시 Weblate와 업스트림 저장소에 충돌하는 변경 사항이 있다는 의미는 아닙니다. 이 워크플로를 더 안정적으로 만들려는 관리자는 VCS_CLONE_DEPTH 를 조정할 수 있습니다.
참고
설정에 따라 Weblate 저장소에 접근하려면 인증이 필요할 수 있습니다. Weblate의 내장 Git 내보내기 를 사용할 때는 사용자 이름과 API 키로 인증합니다.
참고
Weblate는 Git 저장소 자체를 제공하지만 Git LFS 객체는 제공하지 않습니다. Git LFS를 사용하는 저장소의 경우, 업스트림 저장소에서 클론하고 Weblate를 다른 원격 저장소로 추가하세요. Git 추적 파일만 필요한 경우 GIT_LFS_SKIP_SMUDGE=1 로 Weblate에서 클론하여 Git LFS 객체 다운로드를 건너뛸 수 있습니다.
최신 업스트림 저장소 체크아웃에서 시작할 때 워크플로는 일반적으로 다음과 같습니다:
# Open an existing up-to-date checkout of the upstream repository or perform
# a fresh one:
git clone UPSTREAM_REPOSITORY_URL
cd REPO
# Commit all pending changes in Weblate, you can do this in the UI as well:
wlc commit
# Lock the translation in Weblate, again this can be done in the UI as well:
wlc lock
# Add Weblate as remote:
git remote add weblate https://hosted.weblate.org/git/project/component/
# You might need to include credentials in some cases:
git remote add weblate https://username:APIKEY@hosted.weblate.org/git/project/component/
# Update weblate remote:
git remote update weblate
# Merge Weblate changes:
git merge weblate/main
# Resolve conflicts:
edit …
git add …
…
git commit
# Rebase changes (if Weblate is configured to do rebases)
git rebase origin/main
# Push changes to upstream repository, Weblate will fetch merge from there:
git push
# Open Weblate for translation:
wlc unlock
Weblate에서 여러 분기를 사용하는 경우 모든 분기에 대해 동일한 작업을 수행할 수 있음:
# Add and update Weblate remotes
git remote add weblate-one https://hosted.weblate.org/git/project/one/
git remote add weblate-second https://hosted.weblate.org/git/project/second/
git remote update weblate-one weblate-second
# Merge QA_4_7 branch:
git checkout QA_4_7
git merge weblate-one/QA_4_7
... # Resolve conflicts
git commit
# Merge main branch:
git checkout main
git merge weblates-second/main
... # Resolve conflicts
git commit
# Push changes to the upstream repository, Weblate will fetch the merge from there:
git push
gettext PO 파일의 경우 반자동 방식으로 충돌을 병합하는 방법이 있음:
Weblate Git 저장소의 로컬 클론을 가져와 보관합니다. 또한 업스트림 Git 저장소의 두 번째 새 로컬 클론도 가져옵니다 (즉, 업스트림 Git 저장소의 복사본 두 개가 필요함: 원본과 작업 복사본):
# Add remote:
git remote add weblate /path/to/weblate/snapshot/
# Update Weblate remote:
git remote update weblate
# Merge Weblate changes:
git merge weblate/main
# Resolve conflicts in the PO files:
for PO in `find . -name '*.po'` ; do
msgcat --use-first /path/to/weblate/snapshot/$PO\
/path/to/upstream/snapshot/$PO -o $PO.merge
msgmerge --previous --lang=${PO%.po} $PO.merge domain.pot -o $PO
rm $PO.merge
git add $PO
done
git commit
# Push changes to the upstream repository, Weblate will fetch merge from there:
git push
여러 분기를 한 번에 번역하려면 어떻게 하나요?¶
Weblate는 하나의 프로젝트 설정 내에서 번역 변경 사항 푸시를 지원합니다. 이 기능이 켜진 모든 구성요소 설정 (기본 동작)에 대해 변경 사항이 다른 구성요소에 자동으로 전파됩니다. 이렇게 하면 분기 자체가 이미 많이 분기되어 번역 변경 사항을 단순히 병합할 수 없는 경우에도 번역이 동기화된 상태로 유지됩니다.
Weblate에서 변경 사항을 병합한 후 (개발 워크플로에 따라) 차이를 무시하고 이러한 분기를 병합해야 할 수 있음:
git merge -s ours origin/maintenance
더 보기
멀티플랫폼 프로젝트를 어떻게 번역하나요?¶
Weblate는 다양한 파일 형식을 지원하며 ( 현지화 파일 형식 참조) 가장 쉬운 방법은 각 플랫폼의 네이티브 형식을 사용하는 것입니다.
모든 플랫폼 번역 파일을 하나의 프로젝트에 구성요소로 추가하면 ( 번역 프로젝트 및 구성요소 추가 참조) 번역 전파 기능 (기본적으로 켜져 있으며 구성요소 설정 에서 끌 수 있음)을 활용하여 모든 플랫폼의 문자열을 한 번에 번역할 수 있습니다.
더 보기
Weblate가 사용하는 Git 저장소를 어떻게 내보내나요?¶
저장소에는 특별한 점이 없으며, DATA_DIR 디렉터리 아래에 vcs/<project>/<component>/ 로 존재합니다. 이 머신에 SSH 접근 권한이 있으면 저장소를 직접 사용할 수 있습니다.
익명 접근의 경우 Git 서버를 실행하여 저장소를 외부에 제공할 수 있습니다.
또는 Weblate 내부의 Git 내보내기 를 사용하여 이를 자동화할 수 있습니다.
변경 사항을 업스트림에 다시 푸시하는 옵션은 무엇인가요?¶
이는 설정에 크게 좌우되며, Weblate는 이 영역에서 매우 유연합니다. Weblate에서 사용되는 몇 가지 워크플로 예시는 다음과 같음:
Weblate가 자동으로 변경 사항을 푸시하고 병합합니다 ( 자동화된 워크플로를 어떻게 만드나요? 참조).
수동으로 Weblate에 푸시를 지시합니다 (업스트림 저장소에 대한 푸시 접근 권한이 필요합니다).
누군가가 Weblate Git 저장소의 변경 사항을 수동으로 업스트림 저장소에 병합합니다.
누군가가 Weblate가 생성한 히스토리를 다시 작성하고 (예: 병합 커밋 제거) 변경 사항을 병합한 후 Weblate에 업스트림 저장소의 콘텐츠를 재설정하도록 지시합니다.
물론 이 모든 것을 원하는 대로 조합할 수 있습니다.
소스 코드를 노출하지 않고 Weblate 접근을 번역으로만 제한하려면 어떻게 하나요?¶
git submodule 을 사용하여 소스 코드에서 번역을 분리하면서도 버전 관리 하에 유지할 수 있습니다.
번역 파일로 저장소를 만듭니다.
이를 코드에 서브모듈로 추가함:
git submodule add git@example.com:project-translations.git path/to/translations
Weblate를 이 저장소에 연결하면 소스 코드가 포함된 저장소에 대한 접근이 더 이상 필요하지 않습니다.
다음과 같이 Weblate의 번역으로 메인 저장소를 업데이트할 수 있음:
git submodule update --remote path/to/translations
자세한 내용은 git submodule 문서를 참조하세요.
Weblate가 올바르게 설정되었는지 어떻게 확인할 수 있나요?¶
Weblate에는 관리 인터페이스에서 확인할 수 있는 구성 검사 세트가 포함되어 있습니다. 관리 인터페이스의 Performance report 링크를 따르거나 /manage/performance/ URL을 직접 열면 됩니다.
왜 모든 커밋이 Weblate <noreply@weblate.org>로 커밋되나요?¶
Weblate는 모든 커밋에 대해 Weblate <noreply@weblate.org> 를 기본 커미터 로 사용하며, 이는 DEFAULT_COMMITER_EMAIL 및 DEFAULT_COMMITER_NAME 으로 구성됩니다. 이는 커밋이 Weblate를 통해 처리되었음을 나타내는 기술적 식별자입니다.
그러나 각 커밋의 작성자 는 번역을 수행한 개별 사용자로 정확하게 기록됩니다 (Git 사용 시). 즉, 커밋 작성자 필드를 검사하여 실제로 각 문자열을 번역한 사람을 확인할 수 있습니다. Mercurial에도 동일하게 적용되며, Subversion만 이 기능이 없습니다.
참고
Git에서는 커미터 (커밋 객체를 생성한 사람)와 작성자 (변경을 수행한 사람)를 구별합니다. Weblate는 개별 번역자의 기여를 작성자로 보존하면서 커미터 역할을 합니다.
작성자를 확인할 수 없는 커밋 (예: 익명 제안이나 기계 번역 결과로 인한 자동 변경)의 경우 작성자는 익명 사용자로 설정됩니다. 익명 사용자의 이름과 이메일 주소는 ANONYMOUS_USER_NAME 에서 구성할 수 있습니다.
더 보기
Weblate에서 히스토리를 잃지 않고 저장소의 파일을 이동하려면 어떻게 해야할까요?¶
파일 위치를 변경한 후 문자열에 연결된 히스토리, 의견 또는 스크린샷을 유지하려면 이러한 문자열이 Weblate에서 삭제되지 않도록 해야 합니다. Weblate 저장소가 업데이트되었지만 구성요소 구성이 여전히 이전 파일을 가리키는 경우 이러한 삭제가 발생할 수 있습니다. 이는 Weblate가 모든 번역을 삭제해야 한다고 가정하게 만듭니다.
이에 대한 해결책은 Weblate와 동기화하여 작업을 수행하는 것임:
Weblate에서 영향받는 구성요소를 잠급니다.
보류 중인 변경 사항을 커밋하고 업스트림 저장소에 병합합니다.
프로젝트 설정 에서 웹훅 수신을 비활성화합니다. 이렇게 하면 Weblate가 저장소의 변경 사항을 즉시 보는 것을 방지합니다.
저장소에서 필요한 변경을 수행하고 (예: git mv 사용) 업스트림 저장소에 푸시합니다.
새 설정에 맞게 구성요소 설정 를 변경합니다. 구성을 변경하면 Weblate가 업데이트된 저장소를 가져와 기존 문자열을 유지하면서 변경된 위치를 인식합니다.
구성요소의 잠금을 해제하고 프로젝트 구성에서 훅을 다시 활성화합니다.
힌트
이러한 disruptive 변경 전에 프로젝트 수준 백업 을 수행하는 것이 유용할 수 있습니다.
사용법¶
다른 사람의 번역을 어떻게 검토하나요?¶
Weblate에는 여러 검토 기반 워크플로가 있습니다 ( 번역 워크플로 참조).
알림 에서 이루어진 모든 변경 사항을 구독하고 이메일로 도착하는 다른 사람의 기여를 확인할 수 있습니다.
번역 보기 하단에 검토 도구가 있어 특정 날짜 이후 다른 사람이 수행한 번역을 훑어볼 수 있습니다.
더 보기
원문 문자열에 대한 피드백을 어떻게 제공하나요?¶
번역 아래의 컨텍스트 탭에서 Comments 탭을 사용하여 원문 문자열에 대한 피드백을 제공하거나 다른 번역자와 토론할 수 있습니다.
더 보기
번역할 때 기존 번역을 어떻게 사용할 수 있나요?¶
공유 번역 메모리 덕분에 Weblate 내의 모든 번역을 사용할 수 있습니다.
기존 번역 메모리 파일을 Weblate로 가져올 수 있습니다.
가져오기 기능을 사용하여 컴펜디움을 번역, 제안 또는 검토가 필요한 번역으로 로드하세요. 컴펜디움이나 유사한 번역 데이터베이스를 사용한 일회성 번역에 가장 좋은 방법입니다.
보유한 모든 데이터베이스로 tmserver 를 설정하고 Weblate가 사용하도록 할 수 있습니다. 번역 중 여러 번 사용하려는 경우에 좋습니다.
다른 옵션은 모든 관련 프로젝트를 단일 Weblate 인스턴스에서 번역하는 것입니다. 이렇게 하면 다른 프로젝트의 번역도 자동으로 가져옵니다.
Weblate는 번역 외에 번역 파일도 업데이트하나요?¶
Weblate는 번역 파일의 변경을 최소화하려고 합니다. 일부 파일 형식에서는 파일 재포맷이 발생할 수 있습니다. 파일을 원하는 형식으로 유지하려면 프리 커밋 훅을 사용하세요.
더 보기
업데이트된 POT 파일을 PO 번역과 어떻게 병합하나요?¶
POT 템플릿이 변경될 때 PO 파일을 업데이트하는 방법에 대한 정보는 대상 언어 파일 업데이트 를 참조하세요.
언어 정의는 어디에서 오며 자체 정의를 어떻게 추가할 수 있나요?¶
기본 언어 정의 세트는 Weblate와 Translate-toolkit에 포함되어 있습니다. 150개 이상의 언어를 포함하며 복수형 또는 텍스트 방향에 대한 정보를 포함합니다.
관리 인터페이스에서 자체 언어를 자유롭게 정의할 수 있으며, 관련 정보를 제공하기만 하면 됩니다.
더 보기
Weblate가 퍼지 문자열의 변경 사항을 강조 표시할 수 있나요?¶
Weblate는 이를 지원하지만 차이를 표시하려면 데이터가 필요합니다.
Gettext PO 파일의 경우 PO 파일을 업데이트할 때 msgmerge 에 --previous 매개변수를 전달해야 합니다. 예:
msgmerge --previous -U po/cs.po po/phpmyadmin.pot
단일 언어 번역의 경우 Weblate가 ID로 이전 문자열을 찾을 수 있으므로 차이를 자동으로 표시합니다.
템플릿을 업데이트했는데 Weblate가 왜 여전히 이전 번역 문자열을 표시하나요?¶
Weblate는 번역자가 번역할 수 있도록 하는 것 외에는 번역 파일을 어떤 방식으로도 조작하지 않습니다. 따라서 템플릿이나 소스 코드가 변경되어도 번역 가능한 파일을 업데이트하지 않습니다. 수동으로 이를 수행하고 변경 사항을 저장소에 푸시해야 합니다. 그러면 Weblate가 변경 사항을 자동으로 가져옵니다.
참고
일반적으로 번역 파일을 업데이트하기 전에 Weblate에서 수행한 변경 사항을 병합하는 것이 좋습니다. 그렇지 않으면 병합해야 하는 충돌이 발생할 수 있습니다.
번역 파일 이름 변경을 어떻게 처리하나요?¶
저장소에서 파일 이름을 변경할 때 Weblate가 이를 파일의 제거 및 추가로 볼 수 있습니다. 이로 인해 문자열 히스토리, 의견 및 제안이 손실될 수 있습니다.
이를 방지하려면 다음 단계로 이름 변경을 수행하세요:
로컬 VCS 저장소 관리 에서 번역 구성요소를 잠급니다.
로컬 VCS 저장소 관리 에서 보류 중인 변경 사항을 커밋합니다.
Weblate 변경 사항을 업스트림 저장소에 병합합니다.
후크 활성화 를 사용하여 훅을 통한 업데이트 수신을 비활성화합니다.
저장소에서 파일 이름 변경을 수행합니다.
새 파일 이름에 맞게 구성요소 구성을 업데이트합니다.
업데이트 훅을 활성화하고 구성요소의 잠금을 해제합니다.
힌트
이러한 disruptive 변경 전에 프로젝트 수준 백업 을 수행하는 것이 유용할 수 있습니다.
문제 해결¶
요청이 때때로 “too many open files” 오류로 실패합니다¶
Git 저장소가 너무 커지고 저장소가 많을 때 때때로 발생합니다. Git 저장소를 압축하면 이 상황이 개선됩니다.
가장 쉬운 방법은 다음을 실행하는 것임:
# Go to DATA_DIR directory
cd data/vcs
# Compress all Git repositories
for d in */* ; do
pushd $d
git gc
popd
done
더 보기
사이트에 접근할 때 “Bad Request (400)” 오류가 발생합니다¶
이는 대부분 잘못 구성된 ALLOWED_HOSTS 가 원인입니다. Weblate에서 접근하려는 모든 호스트 이름을 포함해야 합니다. 예:
ALLOWED_HOSTS = ["weblate.example.com", "weblate", "localhost"]
더 보기
“하나의 언어(en)에 대한 파일이 더 있습니다”는 무엇을 의미하나요?¶
이는 일반적으로 원문 언어의 번역 파일이 있을 때 발생합니다. Weblate는 원문 문자열을 추적하고 이를 위해 원문 언어를 예약합니다. 동일한 언어의 추가 파일은 처리되지 않습니다.
원문 언어로의 번역이 필요한 경우 구성요소 설정에서 원문 언어 를 변경하세요. 원문 언어로 English (Developer) 를 사용하거나 원문 문자열의 품질 관문 를 활용할 수 있습니다.
원문 언어의 번역 파일이 필요하지 않은 경우 저장소에서 제거하세요.
원문 언어의 번역 파일이 필요하지만 Weblate에서 무시해야 하는 경우 언어 필터 를 조정하여 제외하세요.
힌트
다른 언어에 대해서도 유사한 오류 메시지가 표시될 수 있습니다. 이 경우 가장 가능성이 높은 이유는 여러 파일이 Weblate에서 단일 언어에 매핑되기 때문입니다.
이는 오래된 언어 코드를 새 코드와 함께 사용하거나 (일본어의 경우 ja 와 jp) 국가별 코드와 일반 코드를 모두 포함하는 경우 (fr 과 fr_FR) 발생할 수 있습니다. 자세한 내용은 언어 코드 파싱 를 참조하세요.
기능¶
Weblate는 Git과 Mercurial 이외의 다른 VCS를 지원하나요?¶
Weblate는 현재 Git (GitHub 풀 리퀘스트, Gerrit 리뷰 요청, Subversion 에 대한 확장 지원 포함)과 Mercurial 외에는 네이티브 지원을 제공하지 않지만, 다른 VCS용 백엔드를 작성할 수 있습니다.
Weblate는 VCS 없는 작동도 지원합니다 ( 로컬 파일 참조).
참고
다른 VCS의 네이티브 지원을 위해 Weblate는 분산 VCS 사용을 필요로 하며, Git과 Mercurial 이외의 것에서도 작동하도록 조정할 수 있지만 누군가가 이 지원을 구현해야 합니다.
더 보기
Weblate는 번역자에게 어떻게 크레딧을 부여하나요?¶
Weblate에서 이루어진 모든 변경 사항은 번역자 이름으로 VCS에 커밋됩니다. 이와 같이 모든 변경에는 적절한 저작권이 있으며 코드에 사용하는 표준 VCS 도구를 사용하여 추적할 수 있습니다.
또한 번역 파일 형식이 지원하는 경우 파일 헤더가 업데이트되어 번역자의 이름이 포함됩니다.
더 보기
Weblate가 왜 모든 PO 파일을 단일 트리에 표시하도록 강제하나요?¶
Weblate는 모든 PO 파일이 단일 구성요소로 표현되도록 설계되었습니다. 이는 번역자가 실제로 무엇을 번역하고 있는지 알 수 있으므로 번역자에게 유리합니다.
버전 4.2에서 변경: 번역자는 프로젝트의 모든 구성요소를 특정 언어로 전체적으로 번역할 수 있습니다.
Weblate가 sr_Latn이나 zh_Hant와 같은 언어 코드를 사용하는 이유는 무엇인가요?¶
이는 이전에 잘못 사용된 수정자 (@latin 변형의 경우) 또는 국가 코드 (중국어의 경우) 대신 실제로 다른 언어임을 더 잘 나타내기 위해 RFC 5646 에 의해 정의된 언어 코드입니다.
Weblate는 레거시 언어 코드를 여전히 이해하고 현재 코드에 매핑합니다 - 예를 들어 sr@latin 은 sr_Latn 으로, zh@CN 은 zh_Hans 로 처리됩니다.
참고
Weblate는 기본적으로 밑줄이 있는 POSIX 스타일 언어 코드를 사용합니다. 자세한 내용은 언어 정의 를 참조하세요.