创建多语言django应用程序的简单方法。
django-base-locale的Python项目详细描述
django基本语言环境
创建多语言django应用程序的简单方法。
1.安装软件包:
pip install django-base-locale
2.在已安装的应用程序中注册应用程序是您的设置。py:
INSTALLED_APPS = [ ... 'base_locale.apps.BaseLocaleConfig', ... ]
3.使用模型语言环境创建模型:
frombase_locale.modelsimportBaseModel,BaseModelLocaleclassExample(BaseModel):passclassExampleLocale(BaseModelLocale):pass
基本url.py文件:
from base_locale.urls import include_locale_urls from example.urls import urlpatterns as example_urls app_urls = [ *example_urls, ] urlpatterns = [ ..., path('', include_locale_urls(app_urls)), """ # In base_locale/urls.py def include_locale_urls(urls): return include([ re_path(r'^(?P<language>[a-z]{2})/', include(urls)), path('', include(urls)), ]) """ ]
如何使用
视图.py
我们创建类BaseLoCalEntEnter(CONTROXMIXIN)。
from django.views.generic import DetailView from base_locale.views import BaseLocaleContext class ExampleView(BaseLocaleContext, DetailView): model = Example template_name = 'template.html' context_object_name = 'example' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) """ Now context have instance language, all languages and path with out current language slug. context['language'] context['languages'] context['path'](form request path '/ru/...' replace language slug) context['example'] have methods: property locales Return all locales property locale_default Use in admin panel, for display locale instance get_locale Need argument language Return Locale instance by language context['example_locale'] = context['example'].get_locale(context['language']) """ return context
模板.html
从instance load base_locale_extras获取当前语言环境
{% load base_locale_extras %} {% bl_locale example as example_locale %} Now we use the locale object. {{ example_locale.language.code }} Two ways for use example instance: 1. {{ example.pk }} 2. {{ example_locale.base.pk }} {% end_bl_locale %}
如何创建页面翻译链接:
{% for lang in languages %} <a href="{% bl_trans_url lang %}">lang.code</a> {% endfor %} {# or #} {% for lang in languages %} <a href="{% bl_trans_url lang path %}">lang.code</a> {% endfor %}
路径不是必需的。路径是request.path,没有语言代码。
如何创建页面区域设置链接:
{% load base_locale_extras %} <a href="{% bl_url '...' %}"></a> {# or #} <a href="{% bl_url '...' *args **kwargs %}"></a>
在settings.py中注册标签
TEMPLATES = [ { ... 'OPTIONS': { ... 'builtins': [ 'base_locale.templatetags.base_locale_extras', ] }, }, ]
模型参考
Base_Locale应用程序具有修饰符django元类,并为BaseModelLocale使用新的元类。 新的元类是basemodel的自动生成外键。见How to use。 要从BaseModelLocale访问BaseModel,请使用属性“base”。
基本模型具有属性:
- 属性locales:返回所有locale。
- 属性locale_default:return locale by language_u_u is_default为true。
- get_locale(language):按语言返回语言环境。
BaseModelLocale具有以下属性:
- 属性基:返回basemodel的实例foreignkey。