我們使用Django
作爲我們的後端REST API
服務器。我正在尋找翻譯文本作爲推送通知發送到我們的應用程序。我是翻譯新手。Django翻譯 - 翻譯動態字符串
該文本駐留在配置文件中,並且因用戶而異。
NOTIFICATION_TEXT = {
'access_request': '%(user_name)s has requested to access your document %(story_name)s, please review '}
我看到了谷歌翻譯功能,它完美地翻譯了,如果給出理解user_name和story_name的最後一句是不變的。 我在Django尋找類似的魔術樂隊功能,在發送給REST
調用的Accept-language
標頭中收到的語言環境中的用戶之前,我可以最終包裝最終消息。但這似乎不可能。
據我所知,我需要預先標記需要用ugettext
翻譯的文本,並定義語言和中間件設置。然後使用
django-admin makemessages -l de
產生locale
特定的文件,然後在生成的django.po
文件針對特定區域手動給翻譯文本Django的參考。
但我堅持如何標記鑑於我的消息是動態的,在一個dic裏面。或者有其他方法嗎?
編輯:
的數據如下
data['msg'] = settings.NOTIFICATION_TEXT['access_request'] % \
dict(
user_name=get_user_name(sender),
story_name=story.story_name
)
好吧,現在我有'django.po'文件與abo ve'msgid'並插入了'msgstr',但它仍不能翻譯最終文本。在我的'settings.py'文件中,我有'LANGUAGE_CODE ='de'','USE_I18N = True',在中間件中添加了''django.middleware.locale.LocaleMiddleware'',在Sesssion之後和Common之前。不知道他們是否有幫助,但以防萬一。 – garg10may
看起來很對我。您應該添加調試以檢查哪種語言已激活。你可以在django shell中嘗試它並手動激活德語。 ('django.utils.translation.activate( '德')')。順便說一句,你有沒有叫'compilemessages'? – schwobaseggl
現在就運行'compilemessages',然後手動激活'de',從shell進行測試,但沒有得到翻譯後的字符串。你的意思是我的,我必須在應用翻譯功能後應用上下文? – garg10may