Crowdin에서 번역 병합

Crowdin은 gitlab.pot 파일을 Crowdin 서비스와 자동으로 동기화하여 외부화된 새로 추가된 문자열을 번역 커뮤니티에 제공합니다.

GitLab Crowdin Bot은 또한 새로 승인된 번역을 가져와 locale/<language>/gitlab.po 파일로 병합하는 병합 요청을 생성합니다. 새로 생성된 병합 요청과 병합된 병합 요청은 gitlab-crowdin-bot에 의해 생성된 병합 요청을 확인하세요.

유효성 검사

기본적으로 Crowdin은 커밋 메시지에 [skip ci]를 포함하여 번역을 커밋합니다. 이렇게 함으로써 적지 않은 파이프라인이 실행되는 것을 피합니다. 번역을 병합하기 전에 번역을 유효성을 검증하기 위해 새 파이프라인을 트리거하여야 합니다. 정적 분석은 Crowdin이 수행하지 않는 유효성을 검증합니다. master-i18n 브랜치에 대한 새 파이프라인을 생성하세요. https://gitlab.com/gitlab-org/gitlab/pipelines/new(개발자 권한 필요).

파이프라인 작업에서 PoLinter 클래스를 사용하여 번역을 유효성을 검증합니다. 린터가 오류를 발견하면 작업 로그에 표시됩니다. 실패한 파이프라인에 대한 예시는 다음 오류 메시지를 참조하세요.

유효성 검사 오류가 발생하면 Crowdin에서 문제가 된 문자열을 수동으로 승인 취소하고 오류를 수정하는 방법에 대한 코멘트를 남겨야 합니다:

  1. gitlab-crowdin-bot 계정으로 Crowdin에 로그인하세요.
  2. 문제가 된 문자열을 찾으세요.
  3. 특정 대상 언어에 대한 번역을 승인 취소하려면 현재 번역이 잘못되었습니다(Current translation is wrong)를 선택합니다.
  4. 작업 로그에서 오류 메시지를 코멘트로 포함하세요.

유효하지 않은 번역은 이후에 제외되며, 병합 요청은 업데이트됩니다. 이 프로세스를 자동화하는 것은 이슈 23256에서 제안되었습니다.

번역이 각각 기준을 위반한 경우, Crowdin에서 승인 취소해야 합니다. 우리의 문자열은 HTML에 대해 변수를 사용해야 합니다.

번역이 계속 이어지지 않도록 Crowdin 측에서 통합을 잠시 중지하는 것이 유용할 수 있습니다. Crowdin 통합 설정 페이지에서 동기화 일시 중지(Pause sync)를 선택하여 이를 수행할 수 있습니다.

번역 병합

모든 번역이 적절하다고 판단되고 파이프라인이 통과되면 번역을 기본 브랜치로 병합할 수 있습니다. 번역을 병합할 때, 소스 브랜치 제거(Remove source branch) 확인란을 선택해야 합니다. 이렇게 하면 Crowdin이 새 번역을 병합한 후 master-i18n 브랜치를 기본 브랜치에서 다시 생성하게 됩니다.

지금 우리는 이러한 전체 프로세스를 자동화 중입니다.

병합 요청 다시 생성

Crowdin은 이전 병합 요청이 닫히면 즉시 새 병합 요청을 생성합니다. 그러나 매번 master-i18n 브랜치를 다시 생성하지는 않습니다. 따라서 병합 요청을 강제로 다시 생성하려면 열린 병합 요청을 모두 닫고 master-18n 브랜치를 삭제하세요.

병합 요청에 수정된 오류가 포함되어 있을 때 이것이 수정되었을 때 이를 위해 필요할 수 있습니다.

Crowdin에서 GitLab 통합 다시 생성

참고: 이 지침은 GitLab 팀 멤버에게만 적용됩니다.

만약 Crowdin에서 어떠한 이유로 GitLab 통합이 존재하지 않는다면, 다음 단계로 다시 생성할 수 있습니다:

  1. gitlab-crowdin-bot으로 GitLab에 로그인하세요. (GitLab 팀 멤버라면 GitLab 공유 1Password 계정에서 자격 증명을 찾으세요.)
  2. GitLab 통합을 통해 Crowdin에 로그인하세요.
  3. Settings > Integrations > GitLab > Set Up Integration으로 이동하세요.
  4. gitlab-org/gitlab 저장소를 선택하세요.
  5. 번역을 위해 브랜치 선택(Select Branches for Translation)에서 master를 선택하세요.
  6. 서비스 브랜치 이름(Service Branch Name)master-i18n인지 확인하세요.

번역 수준 수동으로 업데이트

Crowdin에서 번역 수준을 자동으로 가져오는 방법은 없으며, 이를 언어 선택 드롭다운 목록에 표시하려면 이 정보를 표시해야 합니다. 따라서 번역 수준은 i18n.rbTRANSLATION_LEVELS 상수에 하드코딩되며 정기적으로 업데이트해야 합니다.

번역 수준을 업데이트하려면:

  1. Crowdin에서 번역 수준(승인된 단어의 백분율)을 가져오세요.
  2. i18n.rb에서 하드코딩된 번역 수준을 업데이트하세요.