mirror of
https://github.com/django/django.git
synced 2024-12-22 09:05:43 +00:00
Fixed #29144 -- Made untranslated strings for territorial language variants use translations from the generic language variant.
This commit is contained in:
parent
939e0a5995
commit
a20aae414e
@ -202,6 +202,8 @@ class DjangoTranslation(gettext_module.GNUTranslations):
|
||||
self._catalog = other._catalog.copy()
|
||||
else:
|
||||
self._catalog.update(other._catalog)
|
||||
if other._fallback:
|
||||
self.add_fallback(other._fallback)
|
||||
|
||||
def language(self):
|
||||
"""Return the translation language."""
|
||||
|
@ -179,6 +179,10 @@ Internationalization
|
||||
* Added the :meth:`~django.utils.translation.get_supported_language_variant`
|
||||
function.
|
||||
|
||||
* Untranslated strings for territorial language variants now use the
|
||||
translations of the generic language. For example, untranslated ``pt_BR``
|
||||
strings use ``pt`` translations.
|
||||
|
||||
Management Commands
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -2082,7 +2082,13 @@ translations for the same literal:
|
||||
|
||||
In all cases the name of the directory containing the translation is expected to
|
||||
be named using :term:`locale name` notation. E.g. ``de``, ``pt_BR``, ``es_AR``,
|
||||
etc.
|
||||
etc. Untranslated strings for territorial language variants use the translations
|
||||
of the generic language. For example, untranslated ``pt_BR`` strings use ``pt``
|
||||
translations.
|
||||
|
||||
.. versionchanged:: 2.1
|
||||
|
||||
Fallback to the generic language as described above was added.
|
||||
|
||||
This way, you can write applications that include their own translations, and
|
||||
you can override base translations in your project. Or, you can just build
|
||||
|
0
tests/i18n/territorial_fallback/__init__.py
Normal file
0
tests/i18n/territorial_fallback/__init__.py
Normal file
BIN
tests/i18n/territorial_fallback/locale/de/LC_MESSAGES/django.mo
Normal file
BIN
tests/i18n/territorial_fallback/locale/de/LC_MESSAGES/django.mo
Normal file
Binary file not shown.
@ -0,0 +1,27 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-04-25 15:39-0500\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: DE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. Translators: This comment should be extracted
|
||||
#: __init__.py:1
|
||||
msgid "Test 1 (en)"
|
||||
msgstr "Test 1 (de)"
|
||||
|
||||
#: __init__.py:2
|
||||
msgid "Test 2 (en)"
|
||||
msgstr "Test 2 (de)"
|
Binary file not shown.
@ -0,0 +1,27 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-04-25 15:39-0500\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: DE-DE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. Translators: This comment should be extracted
|
||||
#: __init__.py:1
|
||||
msgid "Test 1 (en)"
|
||||
msgstr "Test 1 (de-de)"
|
||||
|
||||
#: __init__.py:2
|
||||
msgid "Test 2 (en)"
|
||||
msgstr ""
|
@ -1455,6 +1455,20 @@ class DjangoFallbackResolutionOrderI18NTests(ResolutionOrderI18NTests):
|
||||
self.assertEqual(gettext('Date/time'), 'Datum/Zeit')
|
||||
|
||||
|
||||
@override_settings(INSTALLED_APPS=['i18n.territorial_fallback'])
|
||||
class TranslationFallbackI18NTests(ResolutionOrderI18NTests):
|
||||
|
||||
def test_sparse_territory_catalog(self):
|
||||
"""
|
||||
Untranslated strings for territorial language variants use the
|
||||
translations of the generic language. In this case, the de-de
|
||||
translation falls back to de.
|
||||
"""
|
||||
with translation.override('de-de'):
|
||||
self.assertGettext('Test 1 (en)', '(de-de)')
|
||||
self.assertGettext('Test 2 (en)', '(de)')
|
||||
|
||||
|
||||
class TestModels(TestCase):
|
||||
def test_lazy(self):
|
||||
tm = TestModel()
|
||||
|
Loading…
Reference in New Issue
Block a user