On Wed, Jan 22, 2014 at 2:16 PM, Shai Berger <s...@platonix.com> wrote:
>
> Wait -- so the real context (which, as Ramiro noted, you left out) is
>
> # settings.py
>
> LANGUAGES = (('pt_BR', _("Português")),)
>
> Is it? Or is it
>
> LANGUAGES = (('pt_BR', "Português"),)
>
> If it is the former, then this is a generic issue of translatable strings
> --
> nothing to do with settings.LANGUAGES. It is usually assumed that, if you
> are
> making a string translatable, you write it in English -- then it's ASCII
> and
> all's well.
>
> If it is the latter, please provide more details about the specific error
> you
> encountered (stack traces etc).
>
> In my test, LANGUAGES is defined as follows:

LANGUAGES = [
    ('en-us', 'English'),
    ('pt-br', 'Português'),
]

As the documentation didn't make it clear that the language names should be
unicode, I just used the translated name ("Português") in a plain string, I
thought it would be OK since settings.py has the encoding declared at the
top of the file.

As for the error, it happened inside django-cms.  There's a code that is
called for building a list of the languages enabled and their names:

# cms/utils/i18n.py
 19 def get_languages(site_id=None):
 20     site_id = get_site(site_id)
 21     result = get_cms_setting('LANGUAGES').get(site_id)
 22     if not result:
 23         result = []
 24         defaults = get_cms_setting('LANGUAGES').get('default', {})
 25         for code, name in settings.LANGUAGES:
 26             lang = {'code': code, 'name': _(name)}
 27             lang.update(defaults)
 28             result.append(lang)
 29         get_cms_setting('LANGUAGES')[site_id] = result
 30     return result

In the code above it is trying to translate the language name and it is
resulting in an error since the name isn't an unicode string.  I understand
that this is happening in django-cms, but I still think it is relevant to
document either that the name should be a unicode string or at least the
english name of the language.

-- 
Henrique Romano

In the face of ambiguity, refuse the temptation to guess.
    -- Tim Peters

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/CA%2BEHudJe91RoJoGBV14u49zW_h70v6drf336giyWA-Zh%3DGMHsQ%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to