2016-01-24 3 views
9

je la configuration suivante -Comment utiliser la traduction django avec GAE?

structure des dossiers:

myapp 
    - conf 
    - locale 
     - ru 
     - LC_MESSAGES 
      - django.mo # contains "This is the title." translation 
      - django.po 
    - templates 
    - index.html 
    setting.py 
    main.py 

app.yaml:

... 
env_variables: 
DJANGO_SETTINGS_MODULE: 'settings' 

handlers: 
... 
- url: /locale/ # do I need this? 
    static_dir: templates/locale 

libraries: 
- name: django 
    version: "1.5" 

settings.py:

USE_I18N = True 

LANGUAGES = (
    ('en', 'EN'), 
    ('ru', 'RU'), 
) 

LANGUAGE_CODE = 'ru' 
LANGUAGE_COOKIE_NAME = 'django_language' 

SECRET_KEY = 'some-dummy-value' 

MIDDLEWARE_CLASSES = (
    'django.middleware.locale.LocaleMiddleware' 
) 

LOCALE_PATHS = (
    '/locale', 
    '/templates/locale', 
) 

index.html:

{% load i18n %} 
... 
{% trans "This is the title." %} 

et main.py:

from google.appengine.ext.webapp import template 
... 
translation.activate('ru') 
template_values = {} 
file_template = template.render('templates/index.html', template_values) 
self.response.out.write(file_template) 

Mais dans le résultat "This is the title." est affiché en anglais. Quel est le problème avec ma configuration (ou l'emplacement des fichiers)?

+0

lorsque vous écrivez 'template_values ​​= {}' ne signifie pas que vous utilisez dictiona vide ry pour formater/rendre la page html? Quelle est sa valeur après le '.render'? Et si vous changez template_values ​​en quelque chose comme: 'template_values ​​= {" trans ":" ru "}'? –

+0

@ TadhgMcDonald-Jensen, n'ont pas vu dans la documentation que les variables de modèle affectent la langue. Mais j'ai essayé d'ajouter '{" trans ":" ru "}' - ça n'a pas aidé. –

+0

recherche de i18n sur GAE, [a trouvé ceci] (http://webapp-improved.appspot.com/api/webapp2_extras/i18n.html#api-webapp2-extras-i18n) – Allen

Répondre

1

Vos LOCALE_DIRS sont des chemins absolus vers vos fichiers de traduction et votre configuration actuelle demande à Django de rechercher la racine du système de fichiers.

Essayez quelque chose comme ceci au point Django le chemin correct:

PROJECT_PATH = os.path.dirname(os.path.abspath(__file__)) 

LOCALE_PATHS = (
    os.path.join(PROJECT_PATH, 'conf/locale'), 
) 

EDIT:

Je suis tombé sur ce repo qui a un exemple de la façon d'obtenir GAE de travailler avec Django i18n: https://github.com/googlearchive/appengine-i18n-sample-python

S'il vous plaît laissez-moi savoir si cela aide

EDIT 2:

Essayez de déplacer vos LANGUES sous votre LOCALE_PATHS dans vos paramètres. Et d'ajouter tous les middlewares listed here

Et pour forcer Django à utiliser une langue lors du rendu d'un modèle use this example

Vous pouvez également utiliser cette balise pour vous dire quelles langues Django dispose:

{% get_available_languages %} 
+0

Cela n'a pas aidé, malheureusement. J'ai mis à jour la question. J'importe '' depuis google.appengine.ext.webapp import template'' au lieu de 'django.template'. Pourrait-il être la cause du problème? –

+0

@LA_ s'il vous plaît vérifier éditer et laissez-moi savoir si cela aide. –

+0

Merci, Alex. L'exemple d'application donné fonctionne bien, mais il utilise jinja2 au lieu de django ... –

0

contrôle ce blog, j'espère que cela aide

http://blog.yjl.im/2009/02/using-django-i18n-in-google-app-engine.html 
+0

Je l'ai lu avant. C'est pour l'ancienne version de django. –

+0

ok j'ai fait quelques recherches et je conseille d'utiliser webapp2, python27 et jinja2. Car le modèle de moteur Django App (à partir du modèle d'importation google.appengine.ext.webapp) est supprimé. – Transformer