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 로 부터 전체 최신 번역 다운받기
# 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 를 한국어 빌드하기
...
[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 할 파일 폴더 선택
$ 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/