4

我有一個基於Django的API層內部使用Django的i18n設施(ugettext等)提供翻譯到一些輸出。 該API提供了一個單頁面JavaScript應用程序,它利用jQuery的Globalize和它自己的消息傳遞工具,通過CLDN /消息文件等。Django i18n沿邊jQuery全球化的消息爲單頁面應用程序

此刻我有我自己生成的JSON形式的UI語言文件全球化的消息模塊的文件。
理想情況下,我想從一個位置驅動所有可翻譯的文本。我希望能夠使用Django作爲可翻譯語言的唯一真理來源(因爲我可以使用Rosetta作爲方便翻譯的方式)。然而,如何讓這兩者協同工作並不那麼簡單,而且我正試圖避免發明自己已有的約定,以防止未來與其他開發者的混淆。

第一個,一些文本塊大於幾個字。使用Django的ugettext我期望提供要翻譯或顯示爲參數的文本 - 提供一個密鑰並且要求翻譯存在(或者其他方式,只是密鑰會顯示)是否好習慣?

第二個,這種用例是否有一個既定的約定?
如果規範對這種情況有意義,我不想重新發明輪子或偏離規範。

和第三 - 我是否期望在兩者之間進行選擇?或者,翻譯是否可以在Django/API世界中生存,然後在UI的請求下輸出爲Globalize/messages格式?或者我應該使用Django提供的gettext實現的Javascript?

感謝

回答

1

Django's JS internationalization是非常強大的,並與所有的良好做法。 你說過了,最好不要重新發明輪子。

如果你的同事習慣於使用Django,我認爲他們會喜歡這個舉動。

我不是專家,但Django的國際化能夠管理超過每塊幾句話,它可以起到段落,該.po文件將是這樣的:

msgid ""                                         
"Lorem ipsum dolor sit amet, consectetur adipiscing elit." 
" Duis ut lacus nec lacus rhoncus luctus." 
" Donec luctus fringilla massa, eu accumsan odio vestibulum fermentum." 
" Fusce arcu urna, tincidunt id turpis sed, rutrum lobortis sem." 
msgstr "" 
"Translation goes here, and it can be on multiple lines" 
+0

是的,我意識到這一點,但我的問題略有不同:我想使用django的翻譯工具,但我希望將數據用於Javascript單頁應用程序,該應用程序利用Globalize作爲提供國際化服務的手段。所以我使用Django和後端將翻譯後的語言提供給前端。除了API輸出中的一些錯誤消息之外,後端本身幾乎不包含任何語言。 – Harel