-
Notifications
You must be signed in to change notification settings - Fork 5
Transifex を使って翻訳
Transifex を使って Sakai の翻訳を行う方法を述べます. 通常の翻訳で Transifex を使う必要はあまりないかもしれませんが, 大量の文章をスクリプトで変換しようとする場合などは有効です.
Sakai の他言語対応は拡張子が .properties
のファイルにより行われています.
Sakai の翻訳は翻訳支援システムである Transifex で行われています.
Transifex からは Sakai のための .po
ファイルが入手でき,
.properties
ファイルはこの .po
ファイルから生成されます.
Transifex とローカルの .po
ファイル間のやり取りは l10n ツールによって簡単に行うことができます.
- Python 2.x (3.x でも大丈夫かもしれない)
- pip
- Git
- GitHub アカウント
- Transifex アカウント
- Sakai のグループにメンバーとして登録されていることが必要
Sakai または OpenPandA を Git を用いてクローンし,そのディレクトリの下に l10n をクローンします.
$ git clone [email protected]:kyoto -u/openpanda.git
$ cd ./openpanda
$ git clone [email protected]:JaSakai/l10n.git
Transifex と自分の PC 間で翻訳ファイルをやり取りするためのツール tx をインストールします.
$ pip install transifex-client
$ pip install -upgrade transifex-client
tx の初期化を以下のように行います
$ tx init
Transifex instance [https://www.transifex.com]: #何も入力しない
Creating skelton ...
Creating config file ...
No configuration file found.
No entry found for host https://transifex.com. Creating...
Please enter your transifex username: #transifexのユーザ名を入力
Password: #パスワードを入力
Updating /home/username/.transifex file...
Done
このとき入力した情報は暗号化されずに ~/.transifex に保存されます.
次にプロジェクトに対して l10n ツールで初期化を行います.
先ほどクローンした l10n
ディレクトリの下に移動し次のコマンドを実行します.
$ python tmx.py init
Transifex から .po
ファイルをダウンロードしさらに .properties
ファイルに変換するには, l10n
ディレクトリの下で
$ python tmx.py download -u -l ja
とします.
すると ./ja
というディレクトリが作成され .po
ファイルがダウンロードされます.
またこの .po
ファイルから生成された .properties
ファイルがローカルの openpanda に反映されます.
この .po
ファイルや .properties
ファイルを 編集することで翻訳を行うことができます.
翻訳した .properties
ファイルを .po
ファイルに変換し Transifex にアップロードするには l10n
ディレクトリの下で次のようにします.
$ python tmx.py upload -mu
このとき Transifex で翻訳済みだったものは無視されアップロードされません(.po
ファイルには反映されます).
新たに翻訳したもののみが Transifex に反映されます.
.properties
ファイルの構造は次のようになっている
#comment
key_0=text_0
key_1=text_1
key_2=text_2
#
で始まる行はコメントである.
key_n
が Sakai のソースコードで参照するキーとなり,text_n
がそのキーに対応する値となる.
この値は ascii 文字以外はユニコードエスケープになっている.
.po
ファイルの構造は次のようになっている.
#. java.acccess
#: access/access-impl/impl/src/bundle/access.properties:1
msgctxt "access/access -impl/impl/src/bundle/access.properties:java.acccess"
msgid "Access:"
msgstr "アクセス:"
各翻訳単位ごとに, 1 行目に .properties
のキーに対応する文字列があり, 2 行目はその .properties
ファイルのソースファイル名と番号が記述されている.
3 行目の msgctxt
は別ファイルの同じ翻訳テキストを区別するための情報である.
4 行目の msgid
は翻訳対象となる英文である.
5 行目の msgstr
は翻訳後の文字列である.
ここでは .po
ファイルをスクリプトを用いて編集する方法を紹介する.
まず Python のライブラリ polib が必要なのでインストールする(l10n ツールについてくるのでそれを用いてもよい).
$ pip install polib
例えば今,全ての「。」を全角ピリオド「.」に変換したいとする. まず python スクリプトファイルを作成し l10n の下に保存する.
import polib
import tmx
def conv( filename ) :
po = polib.pofile( filename )
flag = False
print( filename )
for e in po :
e.msgstr = trans( e.msgstr )
po.save( filename )
def trans( msgstr ) :
return msgstr.replace(’。’, ’.’)
def main() :
l = tmx.EnumModulesFromPo(’ja’)
for f in l :
conv( ’./ja/’ + f + ’.po’ )
if __name == ’__main__’ :
main ()
これを以下のように実行すればよい.
$ python trans.py
生成された .po
を .properties
に変換するには
$ python
>>> import l10n
>>> import tmx
>>> polist = tmx.EnumModulesFromPo(’ja’)
>>> l10n.l10n( polist, True, ’ja’, True, False )
>>> quit ()
とする.