Форум сайта python.su
2
проект первоначально был полностью на английском. Все работало на английском. Перевел его на русский функцией gettext, gettext_lazy и в шаблонах trans, blocktrans. Все перевелось. Не могу настроить корректную работу.
Когда в forms.py использую функцию gettext_lazy, то вне зависимости от того, какой язык настроен в броузере - английский или русский, вебсайт отображается полностью на русском. То что обведено в рамочку слева - это вывод в шаблоне из forms.py в цикле. Правая часть - то что на англ выходит выпадающее меню - еще не переведена. Верхняя часть - простой текст из шаблонов. На английском языке левая и верхняя части сайте не выходят вообще.
Когда в form.py использую функцию gettext, то в независимости от того, какой язык настроен в броузере - английский или русский, вебсайт отображается нижняя часть на английском, а верхняя на русском. 
Другими словам - верхняя часть сайта - простой текст из шаблонов ВСЕГДА выходит только на русском языке.
Все шаблоны начинаются {% load i18n %}
Как настроить корректную работу?
forms.py
from django import forms from django.db.models import Max, Min from .models import Application, FlowRate, WaterFilterSubType, Fineness, Dirt from .models import DirtProperties, Flange from django.utils.translation import gettext_lazy as _ # from django.utils.translation import gettext as _ class InputDataWaterForm(forms.Form): '''Application''' choices = list(Application.objects.values_list('id','application')) application = forms.ChoiceField(choices = choices, initial="1", label=_("Specify application:")) ...
from django.contrib import admin from django.urls import path from . import views from django.conf.urls.i18n import i18n_patterns app_name = 'rsf' urlpatterns = [ path('f_size_water/', views.f_size_water, name = 'f_size_water'), path('f_size_water_fin/', views.f_size_water_fin, name = 'f_size_water_fin'), ]
import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = 'xxxxxxxxxxxxxxxxx' DEBUG = True ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ 'rsf.apps.RsfConfig', 'auswertung.apps.AuswertungConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] 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', ] ROOT_URLCONF = 'ako.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'ako.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True LOCALE_PATH = [os.path.join(BASE_DIR, 'locale')] STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] EMAIL_HOST = 'smtp.gxxx.xx' EMAIL_PORT = 587 EMAIL_HOST_USER = 'xxxxxx' EMAIL_HOST_PASSWORD = 'xxxxxxx!' EMAIL_USE_TLS = True
Отредактировано gtlhbkkj (Апрель 6, 2020 00:29:50)
Офлайн
41
для начала проверьте `{% get_current_language as LANGUAGE_CODE %}` и что в po файлах, не ясно как вы язык меняете
Офлайн
2
slav0nic
для начала проверьте `{% get_current_language as LANGUAGE_CODE %}` и что в po файлах, не ясно как вы язык меняете
Отредактировано gtlhbkkj (Апрель 6, 2020 21:29:58)
Офлайн
41
Если вы лабел в полях формы, то там надо использовать lazy ф-ции
Отредактировано slav0nic (Апрель 7, 2020 15:35:10)
Офлайн