2012-09-28 61 views
1

是否可以翻譯數據庫中的單詞?我想使用標準工具:python setup.py extract_messages並使用文件locale/fr/LC_MESSAGES/*。po進行翻譯。金字塔國際化i18n字在數據庫中?

+0

嗨@ uralbash..Its是一個漫長的時間,但你是怎麼做的最終實現在數據庫中的單詞的翻譯? – Yahya

回答

2

這是可能的。只需將從數據庫返回的文本傳遞給TranslationString即可。

您可以使用TranslationStringFactory(domain)來構建您的字符串並將其傳遞給本地化器。您可能遇到的問題是從數據庫中提取字符串。我不確定你如何做到這一點,但你可能能夠通過提取器從數據庫中提取消息。

另一種可能更好一點的方法是創建一個帶有字符串的虛擬文件。將所有內容解壓縮爲像gettext一樣格式化的文件。

你可以把它添加到修訂和當前消息提取會得到像往常一樣

編輯

文本既然事情是如何存儲在數據庫總是很習慣,有沒有這樣的工具,盡我所知。但寫起來應該很容易。

它應該看起來像這樣。

with open(registry.settings['db_locale_file'], 'w') as f: 
    for result in my_query_results: 
     f.writeline('_(u"%s")' % result.key_you_want) 

這是一個非常簡單的例子,但它應該更復雜。你可以使用金字塔引導腳本,然後致電

your_script 
python setup.py extract_messages 
python setup.py update_catalog 
???? 
python setup.py compile_catalog 
???? 
#profit! 
0

是的,這是可能的。你應該執行一個腳本來添加,你必須將文件locale/project_name.pot

在該行的末尾翻譯爲爲例領域:

 

pyramid_i18n_howto/views.py:7 
msgid "My i18n project" #field_id to add in template 
msgstr ""     # label to show 

Default: Search documentation 
pyramid_i18n_howto/templates/mytemplate.pt:37 
msgid "search_documentation" 
msgstr "" 

您還可以將文件locale/it/project_name.po將它添加每種語言

看到this的細節