Translate available preferred languages in user account settings

The listed languages in the "preferred languages" input dropdown should
be translated in the user language.
This commit is contained in:
Régis Behmo
2016-02-10 19:17:42 +01:00
parent d114be732f
commit d2317be682
3 changed files with 30 additions and 2 deletions

View File

@@ -4,6 +4,7 @@
from collections import namedtuple
from django.conf import settings
from django.utils.translation import ugettext as _
from dark_lang.models import DarkLangConfig
@@ -45,3 +46,16 @@ def released_languages():
]
return released_languages
def all_languages():
"""Retrieve the list of all languages, translated and sorted.
Returns:
list of (language code (str), language name (str)): the language names
are translated in the current activated language and the results sorted
alphabetically.
"""
languages = [(lang[0], _(lang[1])) for lang in settings.ALL_LANGUAGES] # pylint: disable=translation-of-non-string
return sorted(languages, key=lambda lang: lang[1])

View File

@@ -2,6 +2,8 @@
""" Tests for the language API. """
from django.test import TestCase
from django.test.utils import override_settings
from django.utils import translation
from lang_pref import api as language_api
@@ -10,3 +12,15 @@ class LanguageApiTest(TestCase):
def test_released_languages(self):
released_languages = language_api.released_languages()
self.assertGreaterEqual(len(released_languages), 1)
@override_settings(ALL_LANGUAGES=[[u"cs", u"Czech"], [u"nl", u"Dutch"]])
def test_all_languages(self):
with translation.override('fr'):
all_languages = language_api.all_languages()
self.assertEqual(2, len(all_languages))
self.assertLess(all_languages[0][1], all_languages[1][1])
self.assertEqual("nl", all_languages[0][0])
self.assertEqual("cs", all_languages[1][0])
self.assertEqual(u"Hollandais", all_languages[0][1])
self.assertEqual(u"Tchèque", all_languages[1][1])