123456789101112131415161718192021222324252627282930313233343536373839 |
- import functools
-
- from django.conf import settings
- from django.urls import LocalePrefixPattern, URLResolver, get_resolver, path
- from django.views.i18n import set_language
-
-
- def i18n_patterns(*urls, prefix_default_language=True):
- """
- Add the language code prefix to every URL pattern within this function.
- This may only be used in the root URLconf, not in an included URLconf.
- """
- if not settings.USE_I18N:
- return list(urls)
- return [
- URLResolver(
- LocalePrefixPattern(prefix_default_language=prefix_default_language),
- list(urls),
- )
- ]
-
-
- @functools.lru_cache(maxsize=None)
- def is_language_prefix_patterns_used(urlconf):
- """
- Return a tuple of two booleans: (
- `True` if i18n_patterns() (LocalePrefixPattern) is used in the URLconf,
- `True` if the default language should be prefixed
- )
- """
- for url_pattern in get_resolver(urlconf).url_patterns:
- if isinstance(url_pattern.pattern, LocalePrefixPattern):
- return True, url_pattern.pattern.prefix_default_language
- return False, False
-
-
- urlpatterns = [
- path("setlang/", set_language, name="set_language"),
- ]
|