2018-02-24 02:43:57 -06:00
|
|
|
"""Test locale."""
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from sphinx import locale
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
2023-02-17 17:46:31 -06:00
|
|
|
def _cleanup_translations():
|
2018-02-24 02:43:57 -06:00
|
|
|
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'
|