Django中的「惰性翻譯」方法的相關使用

2022-10-04 22:21:28 字數 1745 閱讀 1034

使用 django.utils.translation.gettext_lazy() 函式,使得其中的值只有在訪問時才會被翻譯,而www.cppcns.com不是在 gettext_lazy() 被呼叫時翻譯。

例如:要翻譯乙個模型的 help_text,按以下進行:

from django.utils.translation import ugettext_lazy

class mything(models.model):

name = models.charfield(help_text=ugettext_lazy('this is the help text'))

在這個例子中, ugettext_lazy() 將字串作為惰性參照儲存,而不是實際翻譯。 翻譯工作將在字串在字串上下文中被用到時進行,比如在django管理頁面提交模板時。

在python中,無論何處你要使ixpfonjaxw用乙個unicode 字串(乙個unicode 型別的物件),您都可以使用乙個 ugettext_lazy() 呼叫的結果。 乙個ugettext_lazy()物件並不知道如何把它自己轉換成乙個位元組串。如果你嘗試在乙個需要位元組串的地方使用它,事情將不會如你期待的那樣。 同樣,你也不能在乙個位元組串中使用乙個 unicode 字串。所以,這同常規的python行為是一致的。 例如:

# this is fine: putting a unicode proxy into a unicode string.

u"hixpfonjaxwello %s" % ugettext_lazy("people")

# this will not work, since you cannot insert a unicode object

# into a bytestring (nor can you insert our unicode proxy there)

"hello %s" % ugettext_lazy("people")

如果你曾經見到到像"hello"這樣的輸出,你就可能在乙個位元組串中插入了ugettext_lazy()的結果。 在您的**中,那是乙個漏洞。

如果覺得 gettext_lazy 太過冗長,可以用 _ (下劃線)作為別名,就像這樣:

from django.utils.translation import ugettext_lazy as _

class mything(models.model):

name = models.charfield(help_text=_('this is the help text'))

在django模型中總是無一例外的使用惰性翻譯。 為了翻譯,欄位名和表名應該被標記。(否則的話,在管理介面中它們將不會被翻譯) 這意味著在meta類中顯式地編寫verbose_nane和verbose_name_plural選項,而不是依賴於django預設的verbose_name和verbose_name_plural(通過檢查model的類名得到)。

from django.utils.translation import ugettext_lazy as _

class mything(models.model):

name = models.charfield(_('name'), help_text=_('this the help text'))

class meta:

verbose_name = _('my thing')

vewww.cppcns.comrbose_name_plural = _('mythings')

本文位址:

Django中ORM的惰性機制

django惰性機制 所謂惰性機制 publisher.objects.all 或者.filter 等都只是返回了乙個queryset 查詢結果集物件 它並不會馬上執行sql,而是當呼叫queryset的時候才執行。惰性機制之可迭代12 3 objs models.book.objects.all ...

Power APP中關於翻譯的方法

在使用者表中增加語言字段 使用者,internalemailaddress user email,增加選擇翻譯下拉框,填寫資料來源,將其存入變數 並在修改的時候修改當前使用者的語言 patch 使用者,lookup 使用者,internalemailaddress user email 可以使用此m...

diango中orm的惰性機制

那麼首先要知道什麼是orm 那具體orm是什麼呢?在django中,根據 中的類自動生成資料庫的表也叫 code first orm orm在物件導向模型與關係模型之間架起橋梁。通過物件與資料庫之間對映的元資料,自動透明地把編譯語音中的物件持久化到關聯式資料庫裡,對資料庫的操作可以轉換為對物件的操作...