Ajuda com tradução de sistema ( i18n )

229 views
Skip to first unread message

Renne Rocha

unread,
Aug 12, 2010, 11:48:49 PM8/12/10
to django...@googlegroups.com
  Olá pessoal,
  Eu estou tentando fazer a tradução de meu sistema, porém tudo o que
a documentação de internacionalização não funiona comigo. Acredito que
estou esquecendo algum "pulo-do-gato" que fará com que tudo funcione.
Criei um projeto com os seguintes arquivos:

  settings.py e urls.py: http://dpaste.com/hold/228306/

  Aplicação core e meu template:
  views.py e index.html: http://dpaste.com/hold/228308/

  Criei na raiz do projeto o diretório conf/locale. Executei manage.py
makemessages --locale=en que me gerou o arquivo
conf\locale\en\LC_MESSAGES\django.po

  Editei esse arquivo no bloco de notas, colocando a tradução das
strings. Em seguida rodei um manage.py compilemessages que me gerou o
arquivo .mo correspondente.

  Tentei alterar o idioma na view usando:
activate(‘en’)

Vendo o resultado da view, o request.session['django_language'] e o
request.LANGUAGE_CODE foram alterados, mas o site continuou em
português.

Em seguida adicionei o formulário para enviar a solicitação pela
view set_language(), mas ela também altera as variáveis de sessão, só
que a tradução não acontece.

Estou a um bom tempo tentando descobrir o que está faltando....
alguém pode me ajudar????

Obrigado!!!

  Renne Rocha
  renne...@gmail.com
  http://rennerocha.webfactional.com/
  +55 19 8154-9345

Felipe Prenholato

unread,
Aug 13, 2010, 9:55:58 AM8/13/10
to django...@googlegroups.com
Eu nunca traduzi do português para o inglês, mas, no settings:

LANGUAGE_CODE = 'pt-br'

enquanto

LANGUAGES = (
  ('pt', 'Portuguese'),
  ('en', 'English'),
)

Não sei se é só isso :), mas acho que seu language code ai teria de ser pt também, em vez de pt-br (ou pt-br no languages :) )



--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>



--
Felipe 'chronos' Prenholato.
Linux User nº 405489
Home page: http://chronosbox.org/blog
Twitter: http://twitter.com/chronossc

Renne Rocha

unread,
Aug 13, 2010, 11:41:23 AM8/13/10
to django...@googlegroups.com
Felipe,

Não é esse o problema. Eu já tentei usar LANGUAGE_CODE em 'pt',
'pt-br' e 'en' e não resolve o problema.

Alguém tem idéia do que estou fazendo de errado?

Obrigado!

  Renne Rocha
  renne...@gmail.com
  http://rennerocha.webfactional.com/
  +55 19 8154-9345


2010/8/13 Felipe Prenholato <phili...@gmail.com>:

Alexandre

unread,
Aug 14, 2010, 9:00:26 AM8/14/10
to Django Brasil
O locale tem que ficar dentro da pasta root do projeto e não dentro da
pasta conf.

python manage.py makemessages -l en
python manage.py makemessages -l es

Ficando assim:

projeto
-locale
--en/LC_MESSAGES/django.po
--es/LC_MESSAGES/django.po

settings.py

# -*- coding: utf-8 -*-

LANGUAGE_CODE = 'pt-br'
LANGUAGES = (
('pt-br', u'Português'),
('en', u'Inglês'),
('es', u'Espanhol'),
)

A url ta ok.

# Template

{% load i18n %}


<html>
<head>
<title>{% trans "Este texto deve ser traduzido" %}</title>
</head>
<body>
{% include "idiomas.html" %} <---------------------
Caso queira o gerenciamento do idioma externo, não precisando
acrescentar na urls.py
</body>
</html>

# idiomas.html

{% load i18n %}

{% get_available_languages as LANGUAGES %}

<div class="idiomas">
<form action="/i18n/setlang/" method="post">{% csrf_token %}

<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>

<input type="submit" value="{% trans "Mudar idioma" %}" />
</form>
</div>

Renne Rocha

unread,
Aug 14, 2010, 1:19:13 PM8/14/10
to django...@googlegroups.com
Muito obrigado!!! Era isso mesmo....

Acabei de ver que eu estava lendo errado a mensagem de erro na
execução do makemessages. Ele reclamava que não existia o conf/locale
no diretório do Django OU o locale na raiz da aplicação.... por
bobagem minha eu criei o conf/locale no meu projeto.

Demorou! Mas finalmente consegui :-P

Obrigado!

  Renne Rocha
  renne...@gmail.com
  http://rennerocha.webfactional.com/
  +55 19 8154-9345


2010/8/14 Alexandre <al3xd...@gmail.com>:

Vinicius Mendes

unread,
Aug 17, 2010, 9:09:38 AM8/17/10
to django...@googlegroups.com
Não sei se alguém da lista já tentou isso, mas tenho problemas com a pasta locale ficar no root do código. Aparentemente o caminho pra ela é definido através da pasta onde o settings está. Mas se você criar o settings como um pacote e não como um módulo, essa pasta não será a raiz do projeto, e sim uma pasta chamada settings. Então sempre tenho que colocar a pasta locale dentro da pasta settings. Já existe um ticket criado para isso no trac do django ( http://code.djangoproject.com/ticket/10765 ).

Atenciosamente,
Vinicius Mendes
Solucione Sistemas
vini...@solucione.info


2010/8/14 Renne Rocha <renne...@gmail.com>
Reply all
Reply to author
Forward
0 new messages