[ English | русский | English (United Kingdom) | Indonesia | 한국어 (대한민국) | 中文 (简体, 中国) | Deutsch | 日本語 ]

도구

이 페이지는 i18n 활동에 대한 다양한 작업을 다루고 있습니다.

Zanata CLI

OpenStack은 Zanata를 번역 플랫폼으로 사용합니다. 번역 플랫폼에 대한 대부분의 작업은 자동화되어 있지만, 번역 플랫폼과 수동으로 통신하려면 Zanata CLI 를 사용하십시오.

사용자 구성

사용자 별 설정이 들어있는 $HOME/.config/zanata.ini 에 설정 파일을 만들어야합니다. 설정 파일을 만드는 방법에 대한 정보는 Zanata CLI configuration 을 살펴보시면 됩니다.

프로젝트 구성

번역 플랫폼과 교류하려면 관심이 있는 프로젝트의 최상위 디렉토리에 zanata.xml 이라는 프로젝트 구성 파일을 준비해야합니다. OpenStack 프로젝트에는 git에 zanata.xml 이 없습니다, 그러므로 리포지토리를 만들려면 수동으로 만들어야합니다.

다음은 zanata.xml 의 예입니다. 대부분의 경우 편집해야 할 항목은 projectproject-version 입니다.

<config xmlns="http://zanata.org/namespace/config/">
  <url>https://translate.openstack.org/</url>
  <project>horizon</project>
  <project-version>master</project-version>
  <project-type>gettext</project-type>
  <src-dir>.</src-dir>
  <trans-dir>.</trans-dir>
  <rules>
    <rule pattern="**/*.pot">{path}/{locale_with_underscore}/LC_MESSAGES/{filename}.po</rule>
  </rules>
  <excludes>.tox/**</excludes>
</config>

Zanata의 번역을 가져옵니다.

Zanata에서 번역본을 다운로드하려면 프로젝트 디렉토리로 이동 한 후 다음 명령을 실행하십시오. 보통 몇 가지 언어에만 관심이 있으므로 --locales 옵션이 유용 할 것입니다. 더 많은 옵션을 보려면``zanata pull –help`` 의 출력을 보십시오.

$ zanata-cli pull --locales ja,ko-KR,zh-CN

문서 프로젝트 처리

참고

openstack-manuals 프로젝트에 대해 작성되었습니다. Pike 개발주기의 마지막 시점에, the document migration community-wide effort 이 진행되고 있습니다. 이 문서화 된 프로세스는 가까운 시일이내에 변경 될 수 있습니다.

OpenStack 문서는 RST 형식을 사용합니다. RST 문서를 번역하는 단계는 다음과 같습니다:

  • Slicing: RST 문서에서 PO 템플릿 생성

  • Uploading: Zanata에 번역 리소스 업로드

  • Translating: 번역 메모리 및 용어 관리를 포함하여 Zanata의 번역을 관리합니다.

  • Downloading: 자동화 된 스크립트로 번역 된 결과를 다운로드하십시오.

  • Building: RST 문서 및 번역 된 결과에서 HTML을 작성하십시오.

Sphinx는 ROT 소스 파일을 POT과 HTML을 포함한 다양한 출력 형식으로 변환하는 도구입니다. 아래 단계를 수행하기 전에 Sphinx 를 설치해야합니다. 거의 모든 프로젝트는 리포지토리에``test-requirements.txt`` 를 가지고 있으며,이 파일을 검사하여 필요한 Sphinx 버전을 확인할 수 있습니다.

$ pip install Sphinx

또는 더 편리한 방법은 다음과 같습니다:

$ pip install -r test-requirements.txt

Slicing

우리는 RST 파일을 POT 파일로 변환하기 위해 sphinx-build를 사용합니다. 문서 당 하나의 POT 파일을 갖기를 원하기 때문에 우리는 msgcat을 사용하여 sphinx-build 이후에 해당 POT과 병합합니다.

$ sphinx-build -b gettext doc/[docname]/source/ doc/[docname]/source/locale/
$ msgcat doc/[docname]/source/locale/*.pot > doc/[docname]/source/locale/[docname].pot

Uploading

우리는 Zanata CLI 를 사용하여 POT 파일을 번역 플랫폼에 업로드합니다.

Downloading

번역 플랫폼에서 번역된 PO 파일을 다운로드하려면 Zanata CLI 를사용합니다.

Building

HTML 파일을 만들기 위해 sphinx-build를 사용하기 전에 단일 PO 파일의 변환을 작은 PO 파일로 보내야합니다. 예 :

$ msgmerge -o doc/[docname]/source/locale/zh_CN/LC_MESSAGES/A.po \
    doc/[docname]/source/locale/zh_CN/LC_MESSAGES/[docname].po \
    doc/[docname]/source/locale/A.pot

그런 다음 모든 PO 파일에 대해 다음 명령을 실행하여 MO 파일을 빌드해야합니다:

$ msgfmt doc/[docname]/source/locale/zh_CN/LC_MESSAGES/A.po \
   -o doc/[docname]/source/locale/zh_CN/LC_MESSAGES/A.mo

마지막으로, HTML 파일을 생성 할 수 있습니다.

$ sphinx-build -D "language='zh_CN' doc/[docname]/source/ \
    doc/[docname]/build/html

python 프로젝트 처리

대부분의 Python 프로젝트에서, I18N을 위해 선호되는 도구는 gettext와 babel입니다. gettext 모듈은 Python 모듈 및 응용 프로그램에 대한 국제화 (I18N) 및 지역화 (L10N) 서비스를 제공합니다. Babel은 Python 응용 프로그램을 국제화하기 위한 도구 모음입니다.

Extracting

** PROJECT ** 는 nova 와 같은 프로젝트 이름이고 ** VERSION ** 은 버전 번호입니다. pybabel을 사용하여 코드에서 PO 템플릿 (POT)으로 메시지를 추출 할 수 있습니다. POT 파일 헤더에서 사용되는 것처럼 로컬에서 사용하는 경우 --project--version 옵션을 생략할 수 있습니다.

$ pybabel extract \
    --add-comments Translators: \
    -k "_C:1c,2" -k "_P:1,2" \
    --project=${PROJECT} --version=${VERSION} \
    -o ${modulename}/locale/${modulename}.pot \
    ${modulename}

예를 들어, nova에서는,

$ pybabel extract \
    --add-comments Translators: \
    -k "_C:1c,2" -k "_P:1,2" \
    --project=nova --version=${VERSION} \
    -o nova/locale/nova.pot nova/

Uploading

OpenStack의 각 Python 프로젝트에는 메시지를 추출하고 PO 템플릿을 생성되어 “commit”이벤트에 의해 트리거되는 Zanata에 업로드하는 자동화 작업이 있습니다. 참조: here.

Downloading

OpenStack의 각 Python 프로젝트에는 PO 파일의 번역을 각 프로젝트의 소스 폴더 아래에있는 “locale”폴더로 다운로드하는 자동화 작업이 매일 있습니다. 참조: here. Gerrit에서 검토 요청을 생성합니다. review 다음에 PO 파일의 번역이 병합됩니다.

번역 사용

Python 서버 프로젝트에서 번역 된 메시지를 표시하려면 메시지 카탈로그를 컴파일해야하며 oslo.i18n documentation 에서 설명하는 지침에 따라 서버 서비스를 구성해야합니다.

horizon 프로젝트 처리

For horizon related projects, Django, a framework which horizon is built on, provides integrated translation support.

참고

Unlike documentations and python projects, horizon and plugins use zh-hans and zh-hant for Chinese locales instead of zh-cn and zh-tw respectively since Wallaby release. This follows the Django recommendation which happened in Django 1.7. The details are found in the mailing list post.

Extracting

horizon provides a command to extract the messages in code to PO template (POT). Run the following command in your repository.

$ python manage.py extract_messages -m ${MODULE_NAME}

where MODULE_NAME is a python module name of horizon or its plugin.

For example, in case of manila-ui,

$ python manage.py extract_messages -m manila_ui

The above command is a wrapper for pybabel and the translation job uses pybabel directly.

Uploading

OpenStack의 각 horizon 관련 프로젝트에는 메시지를 추출하고 PO 템플릿을 생성되어 “commit”이벤트에 의해 트리거되는 Zanata에 업로드하는 자동화 작업이 있습니다. 참조: here.

Downloading

OpenStack의 각 horizon 관련 프로젝트에는 PO 파일의 번역을 각 프로젝트의 소스 폴더 아래에있는 “locale”폴더로 다운로드하는 자동화 작업이 매일 있습니다. 참조: here. Gerrit에서 검토 요청을 생성합니다. review 다음에 PO 파일의 번역이 병합됩니다.

참고

As noted above, in Wallaby or later releases, zh-hans and zh-hant are used for Chinese locales. On the other hand, zh-cn and zh-tw continues to be used in Zanata. When the job downloads translations from Zanata, the job stores translations for zh-cn and zh-tw to zh-hans and zh-hant directories under locale.

번역 사용

To display translated messages in OpenStack dashboard, you need to compile message catalogs. Django picks up translated messages automatically once they are compiled. The following command compiles messages in your project.

$ python manage.py compilemessages

프로젝트 유지보수

참고

아래 스크립트는 여러 개의 파이썬 모듈에 의존합니다. 이러한 종속성을 설치하려면, pip install -e requirements.txt 을 실행하십시오.

더 편리한 방법은``tox -e venv – python <script-name>`` 처럼 ** tox ** 를 사용하는 것입니다.

** tox ** 는 PyPI에서 사용할 수 있으며 다양한 Linux 배포판에서도 사용할 수 있습니다. pip install tox 또는 (Ubuntu인 경우) apt-get install python-toxtox 를 설치합니다.

Zanata에서의 번역자 목록 동기화

I18n 프로젝트는 언어 팀과 회원들의 목록을 관리합니다. 이 목록은 Stackalytics에서 번역 통계를 수집하는데 사용됩니다 (자세한 내용은 Stackalytics 참조). 또한 아래 스크립트에서 사용됩니다.

목록의 파일 이름은 tools/translation_team.yaml 입니다.

이 목록은 Zanata에 대한 정보 캐시이며 Zanata와 계속 동기화해야합니다.

변역자 목록을 동기화하려면 다음 명령을 실행하십시오:

tox -e zanata-users-sync

위 내용은 내부적으로 실행됩니다:

python tools/zanata/zanata_users.py --output-file tools/zanata/translation_team.yaml

번역 통계 가져 오기

AC status in I18n project is determined based on translation statistics in a specific period.

tools/zanata/zanata_stats.py 스크립트는 Zanata의 번역 통계를 검색하는 데 도움이됩니다.

스크립트를 실행하십시오:

tox -e venv -- python ./tools/zanata/zanata_stats.py <options>

--help 옵션은 자세한 사용법을 보여줍니다.

Zanata 사용자 정보 추출

At the moment, the I18n SIG Chair needs to maintain the AC list of the I18n project manually around the end of each release cycle. This requires name and e-mail address of individual translators.

tools/zanata/zanata_userinfo.py 스크립트는 이것을 돕습니다. Zanata API와 상호 작용하여 사용자 이름과 전자 메일 주소가있는 번역자 목록 (예: translation_team.yaml) 이 들어있는 YAML 파일을 읽음으로써 CSV 파일을 생성합니다.

참고

이 스크립트에는 Zanata 관리자 권한이 필요합니다.