django multilingual django-cms

¿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.