¿Cómo eliminar el identificador de idioma de las URL de django-cms 2.4?
multilingual (4)
He seguido el tutorial para crear un nuevo sitio Django-CMS (2.4). Sólo estoy usando un solo idioma (inglés).
Existe una redirección automática para incluir el identificador de idioma ''/ en /'' en las URL de mi sitio. ¿Cómo lo elimino?
Gracias.
En la versión 1.8.18 de django, solo necesitas poner False
en esta variable en settings.py
USE_I18N = False
USE_L10N = False
La respuesta de @ ppetrid sigue siendo correcta. Sin embargo, a partir de Django 1.6 los patterns
ya no están disponibles. Cambie el código existente a esto:
from django.conf.urls import patterns
urlpatterns = (
url(r''^admin/'', include(admin.site.urls)),
url(r''^'', include(''cms.urls'')),
)
También recibirá una advertencia si deja el '''',
en los patrones también.
Reemplace este patrón de registro:
urlpatterns = i18n_patterns('''',
url(r''^admin/'', include(admin.site.urls)),
url(r''^'', include(''cms.urls'')),
)
con este:
from django.conf.urls import patterns
urlpatterns = patterns('''',
url(r''^admin/'', include(admin.site.urls)),
url(r''^'', include(''cms.urls'')),
)
El tutorial al que has apuntado utiliza el método i18n_patterns
que hace exactamente esto: antepone el código de idioma a tus URL.
También tenga en cuenta que puede eliminar de forma segura ''django.middleware.locale.LocaleMiddleware'' y ''cms.middleware.language.LanguageCookieMiddleware'' de su MIDDLEWARE_CLASSES si no usa varios idiomas.
Si desea mantener un idioma en la URL, por ejemplo, porque tiene vínculos de retroceso en la web con el código de idioma, simplemente puede eliminar el otro idioma en settings.py
LANGUAGES = (
#(''en'', gettext(''en'')),
(''de'', gettext(''de'')),
)
CMS_LANGUAGES = {
''default'': {
''public'': True,
''hide_untranslated'': False,
''redirect_on_fallback'': True,
},
1: [
{
''public'': True,
''code'': ''de'',
''hide_untranslated'': False,
''name'': gettext(''de''),
''redirect_on_fallback'': True,
},
# {
# ''public'': True,
# ''code'': ''en'',
# ''hide_untranslated'': False,
# ''name'': gettext(''en''),
# ''fallbacks'': [''de''],
# ''redirect_on_fallback'': True,
# },
],
}
De esa manera, la URL aún muestra www.example.com/de/foo.html
. En el Ejemplo anterior, ese /de/
se perderá, lo que hará que todas sus URL en la web no tengan sentido.
Por lo tanto, desde una perspectiva SEO, puede que no sea la mejor opción si ya ha creado enlaces con el código de idioma que contiene.