2018-02-24 02:43:57 -06:00
|
|
|
"""
|
|
|
|
test_locale
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
|
Test locale.
|
|
|
|
|
2020-12-31 11:00:29 -06:00
|
|
|
:copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
2018-02-24 02:43:57 -06:00
|
|
|
:license: BSD, see LICENSE for details.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from sphinx import locale
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
|
|
def cleanup_translations():
|
|
|
|
yield
|
2018-02-24 00:33:11 -06:00
|
|
|
locale.translators.clear()
|
2018-02-24 02:43:57 -06:00
|
|
|
|
|
|
|
|
|
|
|
def test_init(rootdir):
|
|
|
|
# not initialized yet
|
|
|
|
_ = locale.get_translation('myext')
|
|
|
|
assert _('Hello world') == 'Hello world'
|
|
|
|
assert _('Hello sphinx') == 'Hello sphinx'
|
|
|
|
assert _('Hello reST') == 'Hello reST'
|
|
|
|
|
|
|
|
# load locale1
|
|
|
|
locale.init([rootdir / 'test-locale' / 'locale1'], 'en', 'myext')
|
|
|
|
_ = locale.get_translation('myext')
|
|
|
|
assert _('Hello world') == 'HELLO WORLD'
|
|
|
|
assert _('Hello sphinx') == 'Hello sphinx'
|
|
|
|
assert _('Hello reST') == 'Hello reST'
|
|
|
|
|
2018-02-24 00:33:11 -06:00
|
|
|
# load a catalog to unrelated namespace
|
|
|
|
locale.init([rootdir / 'test-locale' / 'locale2'], 'en', 'myext', 'mynamespace')
|
|
|
|
_ = locale.get_translation('myext')
|
|
|
|
assert _('Hello world') == 'HELLO WORLD'
|
|
|
|
assert _('Hello sphinx') == 'Hello sphinx' # nothing changed here
|
|
|
|
assert _('Hello reST') == 'Hello reST'
|
|
|
|
|
2018-02-25 06:43:07 -06:00
|
|
|
# load locale2 in addition
|
|
|
|
locale.init([rootdir / 'test-locale' / 'locale2'], 'en', 'myext')
|
2018-02-24 02:43:57 -06:00
|
|
|
_ = locale.get_translation('myext')
|
|
|
|
assert _('Hello world') == 'HELLO WORLD'
|
|
|
|
assert _('Hello sphinx') == 'HELLO SPHINX'
|
|
|
|
assert _('Hello reST') == 'Hello reST'
|
|
|
|
|
|
|
|
|
|
|
|
def test_init_with_unknown_language(rootdir):
|
|
|
|
locale.init([rootdir / 'test-locale' / 'locale1'], 'unknown', 'myext')
|
|
|
|
_ = locale.get_translation('myext')
|
|
|
|
assert _('Hello world') == 'Hello world'
|
|
|
|
assert _('Hello sphinx') == 'Hello sphinx'
|
|
|
|
assert _('Hello reST') == 'Hello reST'
|
|
|
|
|
|
|
|
|
|
|
|
def test_add_message_catalog(app, rootdir):
|
|
|
|
app.config.language = 'en'
|
|
|
|
app.add_message_catalog('myext', rootdir / 'test-locale' / 'locale1')
|
|
|
|
_ = locale.get_translation('myext')
|
|
|
|
assert _('Hello world') == 'HELLO WORLD'
|
|
|
|
assert _('Hello sphinx') == 'Hello sphinx'
|
|
|
|
assert _('Hello reST') == 'Hello reST'
|