/ / O šablóne prekladu django { % trans „something“ %} v rôznych systémoch - django

O šablóne prekladu django {% trans "niečo"%} v rôznych systémoch - django

Viem, pýtam sa na niečo podobné, žiadané mnohokrát, ale s iným uhlom pohľadu.

Pracujem na malom projekte django. Po rozvinutí základných funkcií teraz bojujem s viacjazyčným jazykom.

V prenosnom počítači so systémom Windows som mohol použiť jednoduchú testovaciu šablónu. Keď však skopírujem tento projekt na testovací (CentOS) server, nefunguje.

Ďalej čo som urobil.

Základné prostredie (oba systémy) je virtualenv s python 2.7, django 1.5, mysql-python 1.2.3 a django-localeURL 1.5. gettext v.1.7.

Toto sú relevantné možnosti settings.py (Poznámka: Používam aplikáciu django-localeURL)

# Django settings for contact_site project.
import os.path
PROJECT_DIR = os.path.dirname(__file__) # this is not Django setting.
# ... skip
LANGUAGE_CODE = "it"
#...skip
USE_I18N = True
USE_L10N = True
#...skip

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
"django.template.loaders.filesystem.Loader",
"django.template.loaders.app_directories.Loader",
#     "django.template.loaders.eggs.Loader",
)

MIDDLEWARE_CLASSES = (
"django.contrib.sessions.middleware.SessionMiddleware",

# LocaleMiddleware after SessionMiddleware: it needs sessions
# commented out LocaleMiddleware to avoid conflict with LocaleURLMiddleware
# "django.middleware.locale.LocaleMiddleware",

# LocaleURLMiddleware to manage multi language urls
"localeurl.middleware.LocaleURLMiddleware",

# CommonMiddleware after LocaleURLMiddleware or will not work APPEND_SLASH
"django.middleware.common.CommonMiddleware",

"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
# Uncomment the next line for simple clickjacking protection:
# "django.middleware.clickjacking.XFrameOptionsMiddleware",
)

# ... skip

_ = lambda s: s
LANGUAGES = (
("en", _(u"English")),
("it", _(u"Italiano")),
("fr", _(u"Francais")),
)

LOCALE_PATHS = (
# in windows laptop
"C:/...skip.../virtualenvs/djprj/contact_site/locale",
# in centos staging server
# "/var/www/html/virtualenvs/djprj/contact_site/locale",
)

TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.request",
"django.core.context_processors.i18n",
"django.contrib.auth.context_processors.auth",
)

TEMPLATE_DIRS = (
# ...skip
os.path.join(PROJECT_DIR, "templates"),
)

INSTALLED_APPS = (
# localeurl to manage multi language urls. it must be the 1st one!
"localeurl",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.sites",
"django.contrib.messages",
"django.contrib.staticfiles",
# ... skip
# my application
"contact",
)
# ... skip

môj projekt urls.py (iba doma):

# ... skip
urlpatterns += patterns("",
url(r"^$", "contact_site.views.home", name="home"),
)

my views.py (iba domov):

#... skip
def home(request):
return render(request, "minimalistic.html", {})

a nakoniec moja minimalistická šablóna:

{% load debug_tags %}
{% load i18n %}
<!DOCTYPE html>
<html>
<head>
<title>TITLE</title>
</head>
<body>
{# {% set_trace %} #}
<p>{% trans "Hello" %}</p>
<p>{% blocktrans %}Hello guys{% endblocktrans %}</p>

lingua richiesta: {{ request.LANGUAGE_CODE }}
</body>
</html>

Potom som pomocou slovníka vytvoril slovníky správ

django-admin.py makemessages --all

Upravil som slovníky (pomocou programu poedit) a nakoniec, keď som spustil vývojový server, v oknách som videl požadovaný výsledok:

nazeranie z prehliadača http://127.0.0.1:8000/it dal mi Salve ...

pri získavaní http://127.0.0.1:8000/en pozdravil ma ...

Nanešťastie vo fáze systému som dostal Hello ... z oboch adries URL.

Len pre istotu som to skúsil dokonca

django-admin.py compilemessages

táto operácia bola v poriadku, ale bez rôznych výsledkov o vykresľovaní šablóny minimalistic.html

A nakoniec, áno, medzi testami som vymazal vyrovnávaciu pamäť prehliadača.

Akýkoľvek návrh na to, čo mi chýba? Ako môžem ladiť toto podivné správanie?

odpovede:

0 pre odpoveď č. 1

Je mi to ľúto a trochu v rozpakoch.

Dnes ladenie django/utils/translate/trans_real.py„Uvedomil som si prítomnosť jemnej chyby v preklepoch na pracovnom serveri settings.py súboru.

Nedokážem spočítať, koľkokrát som včera skontroloval tento konfiguračný súbor, pričom mi unikol zmysel!

Ešte raz prepáč