2013-07-10 77 views
19

我正在考慮將我的網站移動到angularjs,並且我想通過將所有靜態服務器端純文本模板從django移動到角度來啓動非常小,否則會出現語法問題'{{}}')。國際化與angularjs

看來,這樣做的最佳方式將是兩個選項之一:

  1. 爲了有一個AJAX調用返回JSON我的網站的所有文本。文本將被存儲在綁定到我的HTML元素的變量中,因此角度將更新所有內容。
  2. 用字典存儲靜態js文件並將其包含在我的HTML中,並將字典與angularjs綁定。

這兩個選項都允許我在不重新加載頁面的情況下在語言之間切換。

哪一個更好?一般來說,這是一個好方法還是有更正確的方法?

+0

嗨開放的,我一直在玩同樣的問題:整合使用我的Django應用程序(後端)爲AngularJS應用程序(前端)的.po文件。你能提供給我更多關於你最終達成這個目標的信息嗎?兩種方法都適用於我,雖然我寧願1. ;-)提前致謝。 – trinchet

+0

帶選項#2。它更簡單,完成了這項工作。 – Uri

+0

我是如何做到的http://stackoverflow.com/questions/19881590/how-you-deal-with-translation-multilanguage-webservices-in-django-rest-framewo/28078356#28078356 – thomaspaulb

回答

9

首先,有改變角度的分隔符其他符號如這裏回答道:Angular JS custom delimiter

的2.選擇更容易。您只包含一次,並且在頁面加載時擁有所有翻譯。沒有異步電話,沒有承諾,很好很容易。

然而,我會與第一個去。諸如$translate之類的服務真的會讓您的生活更容易遵循選項1.另外,它具有很多用於在LocalStorage和Cookie中加載和存儲加載數據的選項,因此有足夠的空間進行擴展和自定義。然後,您可以使用$ translate服務,指令或過濾器翻譯您的內容。

不要忘記,2選項禁用緩存請求的任何選項。在對起始頁的每個請求中,服務器必須讀取靜態文件並將其包含在html中。通過第一個選項,用戶的瀏覽器可以緩存.json,只要你喜歡。

4

AngularJS僅支持貨幣,日期和數字過濾器的il8n/L10n。據this book

Book-shot! (遺憾的低質量手機攝像頭!)

我會說按照第一種方法和動態加載的翻譯。這將涉及大量的工作,但有沒有其他方式

+0

好吧,但爲什麼是一個JSON調用比靜態js更好? – Uri

+1

我認爲@package答案解釋了爲什麼JSON更好 –

4

看一看angular-translate :)

它解決了兩個場景!

+0

鏈接中斷 – danza

+0

與此同時它是http://angular-translate.github.io。 – PascalPrecht

+0

還有jlg-i18n,它在添加插值和多元化時解決了這兩個問題。 https://github.com/jlguenego/jlg-i18n – jlguenego

32

我嘗試了幾個不同的選項,包括角度翻譯,但我最喜歡Angular-gettext迄今爲止。

有一點非常有幫助的是,它有一個工作演示,它用於在TodoMVC中稱爲angular-gettext-example

的工作流程很簡單:

  1. 添加了「翻譯」指令到你的模板
  2. 運行咕嚕提取。鍋模板(S)
  3. 手離開.POT你的翻譯服務供應商或DIY用poEdit的或類似的軟件
  4. 降的.po翻譯文件返回到您的項目
  5. 運行咕嚕編譯.po文件
  6. 在您的示波器中設置默認語言
  7. 觀看魔術!

我敢肯定,這裏發佈的其他解決方案也不錯,但我還沒有看到如此良好地組織爲角度gettext-example的端到端示例。

乾杯, JD

+0

真的很酷的工具。這最符合我的需求。謝謝! +1 – tmuecksch

+0

迄今爲止最無縫的整合。謝謝! – Warwick

+0

'angular-gettext'是否支持上下文?它們對於處理同音詞很有用。 – cespon