2016-09-03 2 views
0

Ich habe eine einfache Website erstellt, um die Internationalisierung zu testen, aber ich kann es nicht so machen, wie ich es wollte. Ich möchte Nachrichten in meinem views.py ändern, ohne die request.LANGUAGE_CODE (die korrekt angezeigt wird) zu überprüfen.Django Internationalisierung (I18N) Text nicht ändern

ich zu dem URLs mit dem Präfix gehe /en/ und /pt-br/ aber nicht den Text in der Vorlage ändern.

ich versucht mit

django-admin makemessages --locale=pt_BR 

Ich habe die Linien

#: mytest/views.py:7 
msgid "Welcome to my site." 
msgstr "Bem vindo ao meu site." 

lief

django-admin compilemessages --locale=pt_BR 

PS: (auch wenn es falsch ist, habe ich versucht django-admin makemessages/compilemessages --locale = pt-br auch)

Was ich in settings.py geändert (hinzugefügt meine app, fügte einige Internalisierung Einstellungen locale Middleware, hinzugefügt)

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'mytest' 
] 
MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 
# Internationalization 
# https://docs.djangoproject.com/en/1.10/topics/i18n/ 

LOCALE_PATHS = [ 
    os.path.join(BASE_DIR, 'locale/translations/'), 
] 

LANGUAGE_CODE = 'en-us' 

from django.utils.translation import ugettext_lazy as _ 
LANGUAGES = [ 
    ('pt-br', _('Portuguese')), 
    ('en', _('English')), 
] 

TIME_ZONE = 'UTC' 
USE_I18N = True 
USE_L10N = True 
USE_TZ = True 

views.py

from django.shortcuts import render 
from django.utils.translation import ugettext_lazy as _ 

def index(request): 
    print(request.LANGUAGE_CODE) #this shows correctly the prefix in the url 
    output = _("Welcome to my site.") 
    context = {"test_translate": output} 
    return render(request, "mytest/index.html", context) 

urls.py

from django.conf.urls.i18n import i18n_patterns 
from mytest import views 

urlpatterns = [ 
] 
urlpatterns += i18n_patterns(
    url(r'^$', views.index, name='index'), 
) 

Antwort

0

Ich denke, meinen Weg war nicht korrekt. Ich glaube der extra Schrägstrich war falsch ... Ich habe/translations/aus dem LOCALE_PATH gelöscht und es funktioniert jetzt.

LOCALE_PATHS = [ 
    os.path.join(BASE_DIR, 'locale'), 
] 

Dann laufe ich

django-admin compilemessages -l pt_BR 

das Ändern * .po erzeugt und laufen

django-admin compilemessages -l pt_BR 

I umbenannt auch en-us zu en in LANGUAGE_CODE = 'en-us'

Verwandte Themen