Hola a todos estoy tratando de crear una pagina en la cual se pueda cambiar de idioma atravez de un select, segui un tutorial y justo cuando crei que lo habia logrado, me doy cuenta de que al hacer el post no sucede nada.
Esto es lo que tengo en settings.py:
# SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [] # Application definition from django.utils.translation import ugettext_lazy as _ INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'languages', ] 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 = 'curriculum.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 = 'curriculum.wsgi.application' # Database # https://docs.djangoproject.com/en/2.0/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Password validation # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators 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', }, ] # Internationalization # https://docs.djangoproject.com/en/2.0/topics/i18n/ LANGUAGES = ( ('es', _('Espanish')), ('en', _('English')), ) LANGUAGE_CODE = 'es' TIME_ZONE = 'America/Mexico_City' USE_I18N = True USE_L10N = True USE_TZ = True LOCALE_PATHS = ( os.path.join(BASE_DIR, "locale"), ) # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.0/howto/static-files/ STATIC_URL = '/static/'
EL proyecto se llama curriculum y contiene esto en urls.py
from django.urls import include, path from django.contrib import admin urlpatterns = [ path('', include('languages.urls')), path('languages/', include('languages.urls')), path('admin/', admin.site.urls), ]
Y tengo una app llamada languages la cual en urls.py contiene:
from django.conf.urls import url, include from . import views urlpatterns = [ url(r'^$ ', views.index, name='index'), url(r'^i18n/', include('django.conf.urls.i18n')), ]
Finalmente en templates esta este codigo:
{% load i18n %} <h1>{% blocktrans %}Hola{% endblocktrans %}</h1> <p>{% blocktrans %}Bienvenido al sitio{% endblocktrans %}</p> <form action="{% url 'set_language' %}" method="post"> {% csrf_token %} <input name="next" type="hidden" value="{{ redirect_to }}" /> <select name="language"> {% get_current_language as LANGUAGE_CODE %} {% get_available_languages as LANGUAGES %} {% for lang in LANGUAGES %} <option value="{{ lang.0 }}" {% if lang.0 == LANGUAGE_CODE %} selected="selected"{% endif %}> {{ lang.1 }} ({{ lang.0 }}) </option> {% endfor %} </select> <input type="submit" value="Go" /> </form>
Mi archivo locale se encuentra dentro de la app pero ya probe poniendolo junto con manage.py