2013-04-10 59 views
2

我將our Meteor site轉換爲支持荷蘭語和英語兩種語言。爲此,我爲我們的模板(en和nl)製作了兩個文件夾,並將所有內容都連接到我們的模板系統,以便路由器根據您所在的站點正確地提供服務。該main body template是動態的:如何在不濫用模板系統的情況下實現多種語言?

Template.body.content = function() { 
    var lang = Session.get("lang") == "en" ? "en_" : ""; 
    var page = Session.get("page") || "home"; 

    // if the template for the current language doesn't exist, 
    // fall back to Dutch version or show a 404 
    var template = Template[lang + page] || Template[page] || Template[lang + "error404"]; 

    return template(); 
} 

一切都工作得很好,只是我必須寫下面揭露的模板值兩種語言:在生產中使用

Template.en_foo.bar = Template.foo.bar = function() {} 

對於這個代碼的例子,見our client-side blog code

在完成多語言網站目標的同時避免這種方法的優雅方法是什麼?

回答

0

多國語言的應用是在Meteor roadmap但它計劃在很長一段時間......

同時你可以使用這個atmosphere package

+0

我們認爲很多相似! – Akshat 2013-04-10 21:19:19

+0

該軟件包用於在用戶界面中對字符串進行國際化,而不是爲網站的內容設置多種語言。 – Rahul 2013-04-10 21:25:16

1

這個什麼:

  • 使自定義訂閱,並通過語言參數自定義發佈
  • 定製發佈功能,只返回選中的語言(您也可以選擇提供回退,如果內容是不可用)
  • 使用只是一個模板,所有的語言,充滿了正確的語言從訂閱
  • 使用國際化包裝的UI字符串
0

我建議大量反對保留模板的翻譯版本。除非你的網站是微小的。它起初可能並不那麼糟糕,因爲你只是複製它們並翻譯內容。但從那時起,你將不得不在任何變化中維護兩個版本,同時測試這兩個版本。然後有人會建議增加第三種語言和繁榮,對你的大腦造成三重傷害。

我們使用meteor-messageformat進行翻譯。它帶有一個界面,允許創建翻譯而不必查看模板代碼。任何人都可以翻譯。

相關問題