Easyfilters¶
Easymode comes with 3 templatetags that can be used to modify existing templates so they can be used in a multilingual environment.
strip_locale()
¶
strip_locale()
will
have an url as an argument and if there is a locale in the url,
it will be stripped:
{% load 'easyfilters' %}
{{ 'http://example.com/en/greetings'|strip_locale }}
this will render as: http://example.com/greetings
so the ‘en’
part will be removed from the url.
You can use this filter in combination with
LocaliseUrlsMiddleware
. The middleware
will add the current language to any urls that do not have the
language code in the url yet.
fix_locale_from_request()
¶
Fixes the language code as follows:
If there is only one language used in the site, it strips the language code. If there are more languages used, it will make sure that the url has the current language as a prefix.
usage:
{% load 'easyfilters' %}
{{ 'http://example.com/en/greetings'|fix_locale_from_request:request.LANGUAGE_CODE }}
Suppose request.LANGUAGE_CODE
was ‘ru’ then the output would become:
http://example.com/ru/greetings
Suppose settings.LANGUAGES
contained only one language, the output
would become:
http://example.com/greetings
You probably do not need this templatetag if you are using
LocaliseUrlsMiddleware
.
fix_shorthand()
¶
Use this if you want to use USE_SHORT_LANGUAGE_CODES.
fix_shorthand()
will always return the correct locale to use in an url,
depending on your settings of USE_SHORT_LANGUAGE_CODES.
usage:
{% load 'easyfilters' %}
{{ request.lANGUAGE_CODE|fix_shorthand }}
Suppose request.LANGUAGE_CODE
is ‘fr-be’ and
USE_SHORT_LANGUAGE_CODES is set to True
,
the output would become:
fr
If USE_SHORT_LANGUAGE_CODES is set to False
the output would be:
fr-be
If request.LANGUAGE_CODE
is not a five letter language code, nothing
happens.