我想確定一下,如果給定的字符串存在對當前語言的翻譯。我想寫類似:在Django中,如何確定給定文本的翻譯是否可用?
if not translation_available("my string"):
log_warning_somewhere()
我沒發現什麼合適。 ugettext
函數只是返回翻譯或原始字符串(如果翻譯不可用),但沒有任何選項來確定翻譯是否存在或不存在。
謝謝。
我想確定一下,如果給定的字符串存在對當前語言的翻譯。我想寫類似:在Django中,如何確定給定文本的翻譯是否可用?
if not translation_available("my string"):
log_warning_somewhere()
我沒發現什麼合適。 ugettext
函數只是返回翻譯或原始字符串(如果翻譯不可用),但沒有任何選項來確定翻譯是否存在或不存在。
謝謝。
您可以使用polib爲:沿這些代碼(未經測試)線https://bitbucket.org/izi/polib/wiki/Home
東西:
import polib
po = polib.pofile('path/your_language.po')
text == 'Your text'
is_translated = any(e for e in po if e.msgid == text and (not e.translated() or 'fuzzy' in e.flags) and not e.obsolete)
這將給真當活躍翻譯可用。 'e.translated()'本身對於模糊和/或過時的短語都會返回True。
因爲,正如你所說,如果沒有可用的翻譯,ugettext將返回原始字符串,難道你不能只比較返回的值和原始值,看看它們是否相同?
感謝您的回答,但這不是我一直在尋找的。在某些語言中,某些字符串可能會有意地翻譯爲英文字符串,而在其他語言中,這些字符串可能會翻譯所有內容,因此存在翻譯。所以這會給出一個錯誤的警告。我想檢測翻譯是否丟失。 – pcv 2010-11-07 08:39:44