メッセージとカタログ

このモジュールは、ディレクトリおよびメッセージ情報を保存するための基本インターフェースを提供する。これは通常gettextディレクトリを修正するために用いられるが,実際に翻訳を使用するためには用いられていない

カタログ.

class babel.messages.catalog.Catalog(locale=None, domain=None, header_comment='# Translations template for PROJECT.\n# Copyright (C) YEAR ORGANIZATION\n# This file is distributed under the same license as the PROJECT project.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#', project=None, version=None, copyright_holder=None, msgid_bugs_address=None, creation_date=None, revision_date=None, last_translator=None, language_team=None, charset=None, fuzzy=True)

メッセージリストの表示形式.

__iter__()

リスト中のすべてのエントリを追加順にトラバースして生成する Message オブジェクトは、エントリごとに作成されます。

戻り値の型

iterator

add(id, string=None, locations=(), flags=(), auto_comments=(), user_comments=(), previous_id=(), lineno=None, context=None)

指定されたIDを有するメッセージを追加または更新する。

>>> catalog = Catalog()
>>> catalog.add(u'foo')
<Message ...>
>>> catalog[u'foo']
<Message u'foo' (flags: [])>

この方法は簡単に1つを構築しました Message object with the given arguments and invokes `_ _setitem__``オブジェクトと.

パラメータ
  • id -- メッセージID、または (singular, plural) 多元化可能なメッセージのためのタプル

  • string -- 翻訳されたメッセージ文字列、または (singular, plural) 多元化可能なメッセージのためのタプル

  • locations -- 一連 (filename, lineno) タプル.

  • flags -- 旗のグループや一連の旗

  • auto_comments -- 一連の自動注釈.

  • user_comments -- 一連のユーザーコメント

  • previous_id -- 前のメッセージID、または (singular, plural) 多元化可能なメッセージのためのタプル

  • lineno -- POファイルでmsgid行の行番号を見つけます(あれば

  • context -- 情報文脈.

check()

目次中の翻訳に対して様々な検証検査を行う.

検証されていないすべてのメッセージについて、この方法は1つを生成する。 (message, errors) メタグループ、その中で message はい。 Message 相手と errors 一連のものです TranslationError 物体です。

戻り値の型

iterator

delete(id, context=None)

指定されたIDおよびコンテキストを有するメッセージを削除します。

パラメータ
  • id -- メッセージID

  • context -- メッセージコンテキスト、または None 文脈がない場合

get(id, context=None)

指定されたIDおよびコンテキストを有するメッセージを返す.

パラメータ
  • id -- メッセージID

  • context -- メッセージコンテキスト、または None 文脈がない場合

property header_comment

目次の見出し注釈。

>>> catalog = Catalog(project='Foobar', version='1.0',
...                   copyright_holder='Foo Company')
>>> print(catalog.header_comment) 
# Translations template for Foobar.
# Copyright (C) ... Foo Company
# This file is distributed under the same license as the Foobar project.
# FIRST AUTHOR <EMAIL@ADDRESS>, ....
#

文字列からヘッダを設定することもできます。見出しを再検索する際には,任意の既知の大文字変数が置き換えられる:

>>> catalog = Catalog(project='Foobar', version='1.0',
...                   copyright_holder='Foo Company')
>>> catalog.header_comment = '''\
... # The POT for my really cool PROJECT project.
... # Copyright (C) 1990-2003 ORGANIZATION
... # This file is distributed under the same license as the PROJECT
... # project.
... #'''
>>> print(catalog.header_comment)
# The POT for my really cool Foobar project.
# Copyright (C) 1990-2003 Foo Company
# This file is distributed under the same license as the Foobar
# project.
#
タイプ

unicode

language_team

言語チームの名前とメールアドレスです。

last_translator

最後の通訳の名前とメールアドレスです。

property mime_headers

ディレクトリのMIMEヘッダ、特殊な使用 msgid "" 入る。

領域設定が設定されているか否かによって,この属性の振舞いはやや異なり,後者はディレクトリが実際に翻訳されたテンプレートであることを示している.

以下は、このようなディレクトリテンプレートの出力例である。

>>> from babel.dates import UTC
>>> created = datetime(1990, 4, 1, 15, 30, tzinfo=UTC)
>>> catalog = Catalog(project='Foobar', version='1.0',
...                   creation_date=created)
>>> for name, value in catalog.mime_headers:
...     print('%s: %s' % (name, value))
Project-Id-Version: Foobar 1.0
Report-Msgid-Bugs-To: EMAIL@ADDRESS
POT-Creation-Date: 1990-04-01 15:30+0000
PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language-Team: LANGUAGE <LL@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Generated-By: Babel ...

次に、設定領域設定時の出力例を示す。

>>> revised = datetime(1990, 8, 3, 12, 0, tzinfo=UTC)
>>> catalog = Catalog(locale='de_DE', project='Foobar', version='1.0',
...                   creation_date=created, revision_date=revised,
...                   last_translator='John Doe <jd@example.com>',
...                   language_team='de_DE <de@example.com>')
>>> for name, value in catalog.mime_headers:
...     print('%s: %s' % (name, value))
Project-Id-Version: Foobar 1.0
Report-Msgid-Bugs-To: EMAIL@ADDRESS
POT-Creation-Date: 1990-04-01 15:30+0000
PO-Revision-Date: 1990-08-03 12:00+0000
Last-Translator: John Doe <jd@example.com>
Language: de_DE
Language-Team: de_DE <de@example.com>
Plural-Forms: nplurals=2; plural=(n != 1)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Generated-By: Babel ...
タイプ

list

property num_plurals

ディレクトリやエリアに使用する複数の数を設定する.

>>> Catalog(locale='en').num_plurals
2
>>> Catalog(locale='ga').num_plurals
5
タイプ

int

property plural_expr

ディレクトリや領域設定に用いる複数式.

>>> Catalog(locale='en').plural_expr
'(n != 1)'
>>> Catalog(locale='ga').plural_expr
'(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)'
>>> Catalog(locale='ding').plural_expr  # unknown locale
'(n != 1)'
タイプ

string_types

property plural_forms

戻り領域に設定された複数形式の宣言.

>>> Catalog(locale='en').plural_forms
'nplurals=2; plural=(n != 1)'
>>> Catalog(locale='pt_BR').plural_forms
'nplurals=2; plural=(n > 1)'
タイプ

str

update(template, no_fuzzy_matching=False, update_header_comment=False, keep_user_comments=True)

与えられたテンプレートディレクトリに従ってディレクトリを更新する.

>>> from babel.messages import Catalog
>>> template = Catalog()
>>> template.add('green', locations=[('main.py', 99)])
<Message ...>
>>> template.add('blue', locations=[('main.py', 100)])
<Message ...>
>>> template.add(('salad', 'salads'), locations=[('util.py', 42)])
<Message ...>
>>> catalog = Catalog(locale='de_DE')
>>> catalog.add('blue', u'blau', locations=[('main.py', 98)])
<Message ...>
>>> catalog.add('head', u'Kopf', locations=[('util.py', 33)])
<Message ...>
>>> catalog.add(('salad', 'salads'), (u'Salat', u'Salate'),
...             locations=[('util.py', 38)])
<Message ...>
>>> catalog.update(template)
>>> len(catalog)
3
>>> msg1 = catalog['green']
>>> msg1.string
>>> msg1.locations
[('main.py', 99)]
>>> msg2 = catalog['blue']
>>> msg2.string
u'blau'
>>> msg2.locations
[('main.py', 100)]
>>> msg3 = catalog['salad']
>>> msg3.string
(u'Salat', u'Salate')
>>> msg3.locations
[('util.py', 42)]

ディレクトリ内ではあるがテンプレート内にないメールはマスタグループから除去されるが,依然として通過可能である. obsolete メンバー:

>>> 'head' in catalog
False
>>> list(catalog.obsolete.values())
[<Message 'head' (flags: [])>]
パラメータ
  • template -- 参照ディレクトリは、通常POTファイルから読みます

  • no_fuzzy_matching -- メッセージIDの曖昧な一致を使用するかどうか

メッセージ

class babel.messages.catalog.Message(id, string='', locations=(), flags=(), auto_comments=(), user_comments=(), previous_id=(), lineno=None, context=None)

ディレクトリ中の個々のメッセージの表示形式.

check(catalog=None)

メールに対して各種検証チェックを実行します。ディレクトリが提供された場合にのみいくつかの検証が実行される.この方法はシーケンスを返します TranslationError 物体です。

戻り値の型

iterator

パラメータ

catalog -- チェッカーに渡されたディレクトリのインスタンス

Catalog.check ディレクトリ中のすべてのメールに対してチェックを行う方法を取得する.

property fuzzy

翻訳が曖昧かどうか。

>>> Message('foo').fuzzy
False
>>> msg = Message('foo', 'foo', flags=['fuzzy'])
>>> msg.fuzzy
True
>>> msg
<Message 'foo' (flags: ['fuzzy'])>
タイプ

bool

property pluralizable

メッセージが複数可能かどうか.

>>> Message('foo').pluralizable
False
>>> Message(('foo', 'bar')).pluralizable
True
タイプ

bool

property python_format

メッセージにはPythonスタイルのパラメータが含まれていますか。

>>> Message('foo %(name)s bar').python_format
True
>>> Message(('foo %(name)s', 'foo %(name)s')).python_format
True
タイプ

bool

例外

exception babel.messages.catalog.TranslationError

無効なメッセージ変換に遭遇した場合の変換チェッカによる異常.