2010-11-06 23 views
7

我想確定一下,如果給定的字符串存在對當前語言的翻譯。我想寫類似:在Django中,如何確定給定文本的翻譯是否可用?

if not translation_available("my string"): 
    log_warning_somewhere() 

我沒發現什麼合適。 ugettext函數只是返回翻譯或原始字符串(如果翻譯不可用),但沒有任何選項來確定翻譯是否存在或不存在。

謝謝。

回答

2

您可以使用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。

0

因爲,正如你所說,如果沒有可用的翻譯,ugettext將返回原始字符串,難道你不能只比較返回的值和原始值,看看它們是否相同?

+3

感謝您的回答,但這不是我一直在尋找的。在某些語言中,某些字符串可能會有意地翻譯爲英文字符串,而在其他語言中,這些字符串可能會翻譯所有內容,因此存在翻譯。所以這會給出一個錯誤的警告。我想檢測翻譯是否丟失。 – pcv 2010-11-07 08:39:44

0
def translation_available(msg): return ugettext(msg) == msg 
+1

感謝您的回答,但正如我上面寫的:如果我將該字符串翻譯爲英文故意,這會給出錯誤的警告。 – pcv 2010-11-07 08:42:30

+1

這太過依賴巧合。 – kokociel 2018-01-19 02:11:08

相關問題