![](/img/trans.png)
[英]django-modeltranslation : how to know if the value is defined in a given language?
[英]How to change language in django-modeltranslation in function
我正在使用django-modeltranslation
來翻譯模型中的某些字段。 這個包很好用,一切都被翻譯了。
但是沒有簡單的方法可以手動切換語言。
從閱讀訪問翻譯和翻譯字段:
因為使用 modeltranslation 應用程序的重點是翻譯動態內容,所以標記為翻譯的字段在訪問它們時有些特殊。 翻譯字段返回的值取決於當前的語言設置。 “語言設置”是指 Django
set_language
視圖和相應的get_lang
函數。
使用文檔中描述的set_language()
不起作用。 得到了:
AttributeError: 'str' object has no attribute 'POST'
這可能是因為我沒有運行set_language()
。
問題:如何在基本功能中為django-modeltranslation
切換語言?
django.utils.translation
有一個名為activate()
的方法,它非常簡單:
>>> from django.utils.translation import activate
>>> activate('en')
>>> Model.objects.first() # will fetch english version
>>> activate('fr')
>>> Model.objects.first() # will fetch french version
這將適用於視圖以及普通函數。
如果您只想為一次獲取更改語言並返回當前語言,您可以使用get_language
的django.utils.translation
:
>>> from django.utils.translation import get_language, activate
>>> current_language = get_language()
>>> activate('fr')
>>> Model.object.first()
>>> activate(current_language)
也許為時已晚,但您可以在設置文件中添加中間件
中間件 + = ['django.middleware.locale.LocaleMiddleware',]
並且在請求頭中 Key =Accept-Language Value= en,所以現在 Django 將根據請求頭切換語言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.