шаблон перевода django {% trans “что-то”%}

Хорошо, я искал как сумасшедший для этого, я думаю, простая проблема.

Я использую Django 1.4

Проблема в том, что Джанго выигралпереводить простой {% транс "Работа" %} в моем шаблоне.

Вот что я сделал:

Settings.py:

LANGUAGE_CODE = 'en-us'
USE_I18N = True
MIDDLEWARE_CLASSES = (
    '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',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.request",
)

LOCALE_PATHS = (
    '/home/m00p/PycharmProjects/astrid/locale'
)

это моя структура карты:

/
myproject/
apps/
locale/
template/

Итак, я побежал

django-admin.py makemessages -l nl -i settings.py

и он успешно создан в папке локали nl / LC_MESSAGES / django.po, затем я редактирую перевод, найденный в django.po

#: templates/base.html:22
msgid "work"
msgstr "ddddddddddddd"

Затем я запускаю команду компиляции

django-admin.py compilemessages

и он также успешно создал файл django.mo в правильной папке

Я добавил это также в myproject / urls.py

urlpatterns = patterns('',
    url(r'^i18n/', include('django.conf.urls.i18n')),
)

urlpatterns += i18n_patterns('',
    url(r'^

Я добавил это в файл base.html, чтобы можно было изменить язык


    {% csrf_token %}
    
    
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            {{ language.name_local }} ({{ language.code }})
        {% endfor %}
    
    

Поэтому, когда я захожу на веб-сайт, я получаю 127.0.0.1:8000/en/ в URL, это правильно, потому что englisch является языком по умолчанию, когда я затем изменяю его с помощью формы на NL, он перенаправляет на 127.0.0.1:8000 / nl / но текст, который я перевел, нет изменить. Я'Я также уверен, что язык NL, потому что когда я отображаю {{LANGUAGE_CODE}}, он говорит NL.

Кто-нибудь знает, почему это не такизменить?

Спасибо m00p

ЗАДАЧА РЕШЕНА

В процессе добавления вещей, которые я забыл, чтобы они работали, я перезапустил сервер развертывания, ноА не было»т очистил кеш моего браузера он все еще использовал старые страницы, поэтому, когда я очистил данные своего браузера в Chrome, снова посетил страницу и изменил язык, он правильно ее перевел. В любом случае, спасибо за предложения!

, 'front.views.home', name='home'), )

Я добавил это в файл base.html, чтобы можно было изменить язык


    {% csrf_token %}
    
    
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            {{ language.name_local }} ({{ language.code }})
        {% endfor %}
    
    

Поэтому, когда я захожу на веб-сайт, я получаю 127.0.0.1:8000/en/ в URL, это правильно, потому что englisch является языком по умолчанию, когда я затем изменяю его с помощью формы на NL, он перенаправляет на 127.0.0.1:8000 / nl / но текст, который я перевел, нет изменить. Я'Я также уверен, что язык NL, потому что когда я отображаю {{LANGUAGE_CODE}}, он говорит NL.

Кто-нибудь знает, почему это не такизменить?

Спасибо m00p

ЗАДАЧА РЕШЕНА

В процессе добавления вещей, которые я забыл, чтобы они работали, я перезапустил сервер развертывания, ноА не было»т очистил кеш моего браузера он все еще использовал старые страницы, поэтому, когда я очистил данные своего браузера в Chrome, снова посетил страницу и изменил язык, он правильно ее перевел. В любом случае, спасибо за предложения!

 Inforian15 окт. 2012 г., 14:35
Я уже уточнил{% load i18n %} {% trans "Hello" %}  внутри моего шаблона, так что .po-файл выбирает его, и я могу добавить переведенные данные в .po-файл ............, но все же он не выбирает эти шаблоны внутри .po-файла .....? ??
 Inforian15 окт. 2012 г., 14:33
Я также использую эту концепцию на нескольких языках, и я сделал именно то, что вы сделали, но в моем файле django.po он не содержит строк моего шаблона, которые я могу редактировать, например. как ваш файл .po содержит#: templates/base.html:22 msgid "work".... НО, а не то, что он содержит все файлывнутри сайта-пакеты / Django (т.е. административная часть) Я неЯ не хочу редактировать эти административные файлы, но я редактирую, чтобы увидеть, что перевод погоды работает или нет, но он не работает и для этой части администратора ..................., так что мой Основная проблема заключается в том, как показать данные моего шаблона, которые я могу редактировать

Ответы на вопрос(3)

Решение Вопроса

Вы должны добавить его вLOCALE_PATHS настройка, которая по умолчанию пуста.Настройки Django.

Однако команды управления, участвующие в генерации локали, похоже, работают, поэтому я нене знаю, сделал ли ты это уже.

 m00p10 окт. 2012 г., 21:33
Я сделал это, но ничего не изменилось :(

пытаясь решить эту проблему в Django 1.5, работая над моим новым проектом.Sportolio и оказалось, что мне не хваталозапятая в конце LOCALE_PATH

LOCALE_PATHS = (
    '/path/to/my/project/locale/',
)

Это очень важно, так как Django ожидает, что LOCALE_PATHS будетTUPLE не строка

Я надеюсь, что это спасет кого-тос life :)

 Eduard Gamonal29 апр. 2014 г., 18:56
+1 за объяснение, связанное с запятой!

но большинство из них просто показывали ключ. У нас есть два основных языка en и fa. У обоих была одна и та же проблема. Я рассмотрел все те же проблемы и каждый документ в Интернете о переводах Django. Я могу сказать, что я попробовал почти все. Единственным отличием было то, что мы тестировали на рабочем сервере. И я неперезагрузите сервер! Итак, эта однострочная команда избавила меня от страданий:

sudo /etc/init.d/uwsgi reload

то, что я делал неправильно, я перезапустил wsgi вместо uwsgi!

Если вам нравится делать то, что я сделал, вот оно: я делаю шаги в следующем порядке на сервере:

django-admin makemessages -l en
django-admin makemessages -l fa

добавьте персидские фразы и немного английского текста для тестирования.

django-admin compilemessages
python manage.py clear_cache
python manage.py runserver

Сервер работает без ошибок. Но нет изменений в en или fa. Похоже, что django загружается из старого кэша. Итак, я удалил весь кеш и даже удалил все файлы с сервера и снова установил весь проект. И все же та же проблема.

Я сделал сообщения от моего django на моем ноутбуке и отправил его на сервер. Кроме того, я пробовал разные текстовые редакторы и инструменты перевода, такие как poedit, для создания файлов po и mo. Тем не менее проблема продолжает показывать.

Я использовал и заменил теги trans, чтобы посмотреть, работает ли он в любом из них:

{% trans ' ' %}
{% trans " " %}
{% blocktrans %} {% endblocktrans %}
{% trans "xyz" az XYZ %} {{ XYZ }}
{{ _() }}

никто из них не работал!

Но перезагрузка сервера навести порядок. Я надеюсь, что это может быть полезно для кого-то.

Ваш ответ на вопрос