I 18 N API

sphinx.locale.init(locale_dirs: List[Optional[str]], language: str, catalog: str = 'sphinx', namespace: str = 'general') → Tuple[gettext.NullTranslations, bool][ソース]

以下の位置でディレクトリを検索する locale_dirs そして 確保する. NullTranslationsディレクトリは少なくとも1つ設定されている translators それがそうです。何度も呼び出したり何度も呼び出したりすると .mo ファイルを見つけてその内容を統合する init 再入)。

sphinx.locale.init_console(locale_dir: str, catalog: str) → Tuple[gettext.NullTranslations, bool][ソース]

コンソールの領域設定を初期化します。

バージョン 1.8 で追加.

sphinx.locale.get_translation(catalog: str, namespace: str = 'general') → Callable[ソース]

基礎を得ることができます カタログ. そして 命名空間. それがそうです。

拡張は、このインタフェースを使用して拡張上のメッセージを翻訳することができる:

import os
from sphinx.locale import get_translation

MESSAGE_CATALOG_NAME = 'myextension'  # name of *.pot, *.po and *.mo files
_ = get_translation(MESSAGE_CATALOG_NAME)
text = _('Hello Sphinx!')


def setup(app):
    package_dir = path.abspath(path.dirname(__file__))
    locale_dir = os.path.join(package_dir, 'locales')
    app.add_message_catalog(MESSAGE_CATALOG_NAME, locale_dir)

このコードを用いて,Shinxは以下の位置からメッセージリストを検索する. ${{package_dir}}/locales/${{language}}/LC_MESSAGES/myextension.mo それがそうです。♪the language 検索に使います。

バージョン 1.8 で追加.

sphinx.locale._(message: str, *args: Any)str

文書メッセージ(メニュー,タグ,トピックなど)の翻訳機能.この関数は以下のとおりである language セット。

sphinx.locale.__(message: str, *args: Any)str

Translation function for console messages This function follows locale setting (LC_ALL, LC_MESSAGES and so on).

外延国際化 (i18n )と現地化 (l10n )I 18 N APIの使用

バージョン 1.8 で追加.

拡張は自然にメッセージ翻訳を伴ってくる.この点は中で簡単にまとめた sphinx.locale.get_translation() 助けて。

実際には

  1. メッセージディレクトリのための名前を選択します。その名前は一意でなければなりません。メッセージディレクトリの名前は、通常、内線名を使用します。

  2. あなたの拡張ソースですべてのメッセージを翻訳可能としてマークします。 sphinx.locale.get_translation() 関数は通常名前を変えます _() 例えば、:

    src/__init__.py
    from sphinx.locale import get_translation
    
    MESSAGE_CATALOG_NAME = 'myextension'
    _ = get_translation(MESSAGE_CATALOG_NAME)
    
    translated_text = _('Hello Sphinx!')
    
  3. 内線を設定して専用の翻訳を識別します。

    src/__init__.py
    def setup(app):
        package_dir = path.abspath(path.dirname(__file__))
        locale_dir = os.path.join(package_dir, 'locales')
        app.add_message_catalog(MESSAGE_CATALOG_NAME, locale_dir)
    
  4. メッセージディレクトリテンプレートの生成 *.pot 一般的には locale/ ソースディレクトリ、例えば Babel

    $ pybabel extract --output=src/locale/myextension.pot src/
    
  5. メール·ディレクトリの作成 (*.po )拡張には、例えば、ローカル化された各言語が提供されます。 Babel

    $ pybabel init --input-file=src/locale/myextension.pot --domain=myextension --output-dir=src/locale --locale=fr_FR
    
  6. 各言語のメーリングリストを手動で翻訳する

  7. メーリングリストをコンパイルして *.mo ファイル、例えば Babel

    $ pybabel compile --directory=src/locale --domain=myextension
    
  8. 拡張に等価な行を追加することにより,ソフトウェアパッケージのインストール時にメッセージディレクトリファイルを配布することを確保する. MANIFEST.in

    MANIFEST.in
    recursive-include src *.pot *.po *.mo
    

内線のメッセージが変更された場合、例えば、メッセージディレクトリテンプレートとメッセージディレクトリを更新する必要があります。 Babel

$ pybabel extract --output=src/locale/myextension.pot src/
$ pybabel update --input-file=src/locale/myextension.pot --domain=myextension --output-dir=src/locale