W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Import name:?jinja2.ext.i18n
Jinja2 當(dāng)前只附帶一個(gè)擴(kuò)展,就是 i18n 擴(kuò)展。它可以與?gettext?或?babel?聯(lián)合使用。如果啟用了 i18n 擴(kuò)展, Jinja2 提供了?trans?語句來標(biāo)記被其包裹的 字符串為可翻譯的,并調(diào)用?gettext?。
在啟用虛擬的?_?函數(shù)后,之后的?gettext?調(diào)用會(huì)被添加到環(huán)境的全局變量。那么 一個(gè)國(guó)際化的應(yīng)用應(yīng)該不僅在全局,以及在每次渲染中在命名空間中提供至少一個(gè)?gettext?或可選的ngettext?函數(shù)。
在啟用這個(gè)擴(kuò)展后,環(huán)境提供下面的額外方法:
jinja2.Environment.install_gettext_translations(translations,?newstyle=False)
在該環(huán)境中全局安裝翻譯。提供的翻譯對(duì)象要至少實(shí)現(xiàn)?uggettext?和?ungettext?。gettext.NullTranslations?和?gettext.GNUTranslations?類和?Babel‘s 的?Translations?類也被支持。
Changed in version 2.5:?添加了新樣式的 gettext
jinja2.Environment.install_null_translations(newstyle=False)
安裝虛擬的 gettext 函數(shù)。這在你想使應(yīng)用為國(guó)際化做準(zhǔn)備但還不想實(shí)現(xiàn)完整的 國(guó)際化系統(tǒng)時(shí)很有用。
Changed in version 2.5:?添加了新樣式的 gettext
jinja2.Environment.install_gettext_callables(gettext,?ngettext,newstyle=False)
在環(huán)境中把給出的?gettext?和?ngettext?可調(diào)用量安裝為全局變量。它們 應(yīng)該表現(xiàn)得幾乎與標(biāo)準(zhǔn)庫(kù)中的?gettext.ugettext()?和?gettext.ungettext()?函數(shù)相同。
如果激活了?新樣式?,可調(diào)用量被包裝為新樣式的可調(diào)用量一樣工作。更多 信息見?新樣式 Gettext?。
New in version 2.5.
jinja2.Environment.uninstall_gettext_translations()
再次卸載翻譯。
jinja2.Environment.extract_translations(source)
從給定的模板或源中提取本地化字符串。
對(duì)找到的每一個(gè)字符串,這個(gè)函數(shù)生產(chǎn)一個(gè)?(lineno,?function,?message?)?元組,在這里:
如果安裝了?Babel?,?Babel 集成?可以用來為 babel 抽取字符串。
對(duì)于一個(gè)對(duì)多種語言可用而對(duì)所有用戶給出同一種的語言的 web 應(yīng)用(例如一個(gè)法國(guó)社 區(qū)安全了一個(gè)多種語言的論壇軟件)可能會(huì)一次性加載翻譯并且在環(huán)境生成時(shí)把翻譯方 法添加到環(huán)境上:
translations = get_gettext_translations()
env = Environment(extensions=['jinja2.ext.i18n'])
env.install_gettext_translations(translations)
get_get_translations?函數(shù)會(huì)返回當(dāng)前配置的翻譯器。(比如使用?gettext.find?)
模板設(shè)計(jì)者的?i18n?擴(kuò)展使用在?模板文檔?中有描述。
New in version 2.5.
從版本 2.5 開始你可以使用新樣式的 gettext 調(diào)用。這些的啟發(fā)源于 trac 的內(nèi)部 gettext 函數(shù)并且完全被 babel 抽取工具支持。如果你不使用 Babel 的抽取工具, 它可能不會(huì)像其它抽取工具預(yù)期的那樣工作。
標(biāo)準(zhǔn) gettext 調(diào)用和新樣式的 gettext 調(diào)用有什么區(qū)別?通常,它們要輸入的東西 更少,出錯(cuò)率更低。并且如果在自動(dòng)轉(zhuǎn)義環(huán)境中使用它們,它們也能更好地支持自動(dòng) 轉(zhuǎn)義。這里是一些新老樣式調(diào)用的差異:
標(biāo)準(zhǔn) gettext:
{{ gettext('Hello World!') }}
{{ gettext('Hello %(name)s!')|format(name='World') }}
{{ ngettext('%(num)d apple', '%(num)d apples', apples|count)|format(
num=apples|count
)}}
新樣式看起來是這樣:
{{ gettext('Hello World!') }}
{{ gettext('Hello %(name)s!', name='World') }}
{{ ngettext('%(num)d apple', '%(num)d apples', apples|count) }}
新樣式 gettext 的優(yōu)勢(shì)是你需要輸入的更少,并且命名占位符是強(qiáng)制的。后者看起 來似乎是缺陷,但解決了當(dāng)翻譯者不能切換兩個(gè)占位符的位置時(shí)經(jīng)常勉勵(lì)的一大堆 麻煩。使用新樣式的 gettext ,所有的格式化字符串看起來都一樣。
除此之外,在新樣式 gettext 中,如果沒有使用占位符,字符串格式化也會(huì)被使用, 這使得所有的字符串表現(xiàn)一致。最后,不僅是新樣式的 gettext 調(diào)用可以妥善地為 解決了許多轉(zhuǎn)義相關(guān)問題的自動(dòng)轉(zhuǎn)義標(biāo)記字符串,許多模板也在使用自動(dòng)轉(zhuǎn)義時(shí)體驗(yàn) 了多次。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: