1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonにおける翻訳

Posted at

この記事では、Pythonの翻訳機能について記載します。

GNU gettext

Djangoの多言語機能を使うためには、GNU gettextパッケージが必要。
gettextパッケージは、Pythonだけではなく、他の言語等でも使用されている。

gettext モジュールは、 Python のモジュールやアプリケーションの国際化 (I18N, I-nternationalizatio-N) および地域化 (L10N, L-ocalizatio-N) サービスを提供します。 このモジュールは GNU gettext メッセージカタログの API と、より高水準で Python ファイルに適しているクラス形式の API の両方をサポートしてます。
`https://docs.python.org/ja/3/library/gettext.html#module-gettext`

このパッケージには、標準で翻訳に使えるメソッドが豊富にある。
以下の公式ドキュメントに、以下のように各メソッドについての詳細が記載されている。

gettext.gettext(message)
現在のグローバルドメイン、言語、およびロケールディレクトリに基づいて、 message の地域化された訳文を返します。 通常、この関数はローカルな名前空間にある _() という別名を持ちます (下の例を参照してください)。
`https://docs.python.org/ja/3.7/library/gettext.html`

po、mo、potファイルについて.

翻訳を行うにあたって、以下のファイルを使用する必要がある。

.potファイル
poの元になるファイル(テキストファイル)
.poファイル
potファイルに翻訳文を記入したファイル
.moファイル
poファイルからgettextにより作成されたバイナリファイル。

  • poファイル
msgid "this is a string"
msgstr "これは文字です"

msgidに翻訳文の元。
msgstrに翻訳後の文。

gettextなどで、.poから.moを作成する。

  • 作業手順
  1. gettextのインストール
  2. 設定変更
    settings.pyに設定を追加する。
LANGUAGE_CODE = 'ja'

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

3.ローケルファイル作成
workspaceにおいては、以下にファイルがある。

workspace
- locale
 - en
  - LC_MESSAGES
   - django.mo
   - django.po
 - ja
  - LC_MESSAGES
   - django.mo
   - django.po

4.ローケルファイルの編集とコンパイル
.poファイルに追加したい翻訳を追加などする。
そして、以下のコマンドを実行する。

docker-compose run server python manage.py compilemessages -l ja
docker-compose run server python manage.py compilemessages -l en
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?