0. 환경 세팅

$ sudo easy_install --upgrade transifex-client

sudo apt-get install gnome-doc-utils


- transifex 환경 설정 파일 저장

$ vi ~/.transifexrc

[https://www.transifex.com]
hostname = https://www.transifex.com
password = 오픈스택패스워드
token =
username = skanddh@gmail.com

[https://www.transifex.net]
hostname = https://www.transifex.com
password = 오픈스택패스워드
token =
username = skanddh@gmail.com


1. git 으로 다운받기


2. transifex 로 부터 전체 최신 번역 다운받기

$ tx pull -f -l ko_KR

 

# install-guide 만 다운받고 싶을 때

$ tx pull -f -l ko_KR -r openstack-manuals-i18n.install-guide


2-1. 한글 폰트 설치

$ git clone https://github.com/stackforge/clouddocs-maven-plugin

cd clouddocs-maven-plugin/src/main/resources/fonts/

$ mkdir -p nanum-font

wget http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip

unzip NanumFont_TTF_ALL.zip -d ~/Git/clouddocs-maven-plugin/src/main/resources/fonts/nanum-font/

clouddocs-maven-plugin/src/main/resources/cloud/fo

$ vi docbook.xsl


  <xsl:param name="bodyFont">

    <xsl:choose>

      <xsl:when test="starts-with(/*/@xml:lang, 'zh')">AR-PL-New-Sung</xsl:when>

      <xsl:when test="starts-with(/*/@xml:lang, 'ja')">TakaoGothic</xsl:when>

      <xsl:when test="starts-with(/*/@xml:lang, 'ko')">NanumGothic</xsl:when>

      <xsl:when test="starts-with(/*/@xml:lang, 'ko_KR')">NanumGothic</xsl:when>

      <xsl:otherwise>CartoGothic Std</xsl:otherwise>

    </xsl:choose>

  </xsl:param>


  <xsl:param name="monospace.font.family">

    <xsl:choose>

      <xsl:when test="$monospaceFont != ''"><xsl:value-of select="$monospaceFont"/></xsl:when>

      <xsl:when test="starts-with(/*/@xml:lang, 'zh')">AR-PL-New-Sung</xsl:when>

      <xsl:when test="starts-with(/*/@xml:lang, 'ja')">TakaoGothic</xsl:when>

      <xsl:when test="starts-with(/*/@xml:lang, 'ko')">NanumGothic</xsl:when>

      <xsl:when test="starts-with(/*/@xml:lang, 'ko_KR')">NanumGothic</xsl:when>

      <xsl:otherwise>monospace</xsl:otherwise>

    </xsl:choose>

  </xsl:param>


$ cd clouddocs-maven-plugin

$ vi pom.xml

...

<version>2.1.5-SNAPSHOT</version>

...

$ mvn clean install


3. install-guide 를 한국어 빌드하기

$ vi .tx/config


...

[openstack-manuals-i18n.common]

file_filter = doc/common/locale/<lang>.po

minimum_perc = 8

source_file = doc/common/locale/common.pot

source_lang = ko_KR

type = PO


[openstack-manuals-i18n.install-guide]
file_filter = doc/install-guide/locale/<lang>.po
minimum_perc = 75
source_file = doc/install-guide/locale/install-guide.pot
source_lang = ko_KR                # en -> ko_KR 로 변경
type = PO

...


$ cd doc/install-guide

$ mvn clean generate-sources

 

 

4. 3번이 안될 때 tox 로 한국어 빌드하기


- XML 파일을 읽어서 PO Template 파일(POT)로 만들기

./tools/generatepot doc/install-guide/


- POT Template 파일 각 언어에 맞게 PO 파일 만들기 (Transifex 에 올려서 번역 작업)


- generation 할 파일 폴더 선택

$ sudo pip install tox

$ tox -e py27

$ source .tox/py27/bin/activate

 

(py27) $ vi doc-tools-check-languages.conf


# 빌드시에 common 은 반드시 필요함

declare -A DIRECTORIES=(
["fr"]="common glossary user-guide image-guide"
["ja"]="common glossary image-guide install-guide user-guide user-guide-admin"
["pt_BR"]="common install-guide"
["zh_CN"]="common glossary arch-design image-guide"
["ko_KR"]="common install-guide"
)

# books to be built
declare -A BOOKS=(
["fr"]="user-guide image-guide"
["ja"]="image-guide install-guide user-guide user-guide-admin"
["pt_BR"]="install-guide"
["zh_CN"]="arch-design image-guide"
["ko_KR"]="install-guide"
)


# common 모듈의 ko_KR.po 파일이 만드시 있어야 함

(py27) $ cd doc/common/locale

(py27) $ cp ja.po ko_KR.po


- tox 로 번역된 메세지와 통합하여 DocBook 을 generate 한다. (generated 폴더 생성) 

(py27) $ tox -e checkniceness - to run the niceness tests (for example, to see extra whitespaces)

(py27) $ tox -e checksyntax - to run syntax checks
(py27) $ tox -e checkdeletions - to check that no deleted files are referenced
(py27) $ tox -e checkbuild - to actually build the manual(s). This will also generate a directory publish-docs that contains the built files for inspection. You can also use doc/local-files.html for looking at the manuals.
(py27) $ tox -e checklang - to check all translated manuals

 

혹은


$ tox -e buildlang -- ko_KR


- generated 폴더에서 PDF 파일 만들기

(py27) $ cd generated/ko_KR

(py27) $ vi pom.xml

 

  <modules>
    <!--module>admin-guide-cloud</module>
    <module>arch-design</module>
    <module>cli-reference</module>
    <module>config-reference</module>
    <module>glossary</module>
    <module>hot-reference</module>
    <module>image-guide</module-->
    <module>install-guide</module>
    <!--module>user-guide</module>
    <module>user-guide-admin</module-->
  </modules>

...

  <build>

    <plugins>

      <plugin>

        <groupId>com.rackspace.cloud.api</groupId>

        <artifactId>clouddocs-maven-plugin</artifactId>

        <!--version>2.1.3</version-->

        <version>2.1.5-SNAPSHOT</version>

      </plugin>

    </plugins>

  </build>


(py27) $ cd install-giude 

(py27) $ mvn clean generate-sources




[ RST 파일로 만들 경우 ]


1. Sphinx 설치

$ sudo pip install Sphinx


2. 각각의 RST 파일로 각각의 POT 파일 만들기 (Slicing)

sphinx-build -b gettext doc/playground-user-guide/source/ doc/playground-user-guide/source/locale/


3. 각각의 POT 파일을 하나의 POT 파일로 통합하기 (Slicing)

msgcat doc/playground-user-guide/source/locale/*.pot > doc/playground-user-guide/source/locale/playground-user-guide.pot


4. POT 파일을 Transifex에 올려서 언어에 맞게 PO 파일을 만들기 (번역 작업)

   - 이 작업은 commit 이 일어나면 jenkins 가 알아서 작업 해 줌

$ tx set --auto-local -r openstack-i18n.playground-user-guide "doc/playground-user-guide/source/locale/ko_KR/LC_MESSAGES/playground-user-guide.po"  --source-lang en --source-file doc/playground-user-guide/source/locale/playground-user-guide.pot -t PO --execute

$ tx push -s


5. 다운로드

tx set --auto-local -r openstack-i18n.playground-user-guide] "doc/playground-user-guide/source/locale/ko_KR/LC_MESSAGES/playground-user-guide.po"  --source-lang en --source-file doc/playground-user-guide/source/locale/playground-user-guide.pot -t PO --execute

$ tx pull -l ko_KR


6. build HTML


- 통합된 PO 파일을 작은 PO 파일로 나눔

msgmerge -o doc/playground-user-guide/source/locale/ko_KR/LC_MESSAGES/A.po doc/playground-user-guide/source/locale/ko_KR/LC_MESSAGES/playground-user-guide.po doc/playground-user-guide/source/locale/A.pot


- 작은 PO 파일을 작은 MO 파일로 변환

msgfmt "doc/playground-user-guide/source/locale/ko_KR/LC_MESSAGES/A.po" -o "doc/playground-user-guide/source/locale/ko_KR/LC_MESSAGES/A.mo"


- build HTML

sphinx-build -D "language='ko_KR' doc/playground-user-guide/source/ doc/playground-user-guide/build/html



* 소스 코드로 부터 PO 파일로 추출하기

$ pybabel extract -o nova/locale/nova.pot nova/



Posted by Kubernetes Korea co-leader seungkyua@gmail.com