我正在處理我的Aurelia組件的i18n。我想渲染翻譯服務器端,因爲我們的翻譯存儲在CMS中,並且可以在部署後進行更新。我已經成功地編寫了一個Java WebFilter,它可以攔截對Aurelia模板的請求並在返回模板之前轉換字符串。配置模板加載器以傳遞額外參數
所有這些都很有效,直到用戶切換語言。這是作爲整頁刷新實現的,首選語言存儲在服務器端會話中。所以模板解析器確實會選擇語言改變。問題在於Aurelia模板已經被緩存在客戶端,並且在其中有錯誤的翻譯。
現在我已經採取的一種解決方法是禁用模板的緩存。但理想情況下,我希望瀏覽器緩存模板,直到語言發生變化時再次請求模板。
一個簡單的解決方案是將語言添加到模板請求的URL。這樣一旦語言發生變化,緩存的模板就不會被使用。 (如果用戶決定改回語言,我們可以再次從緩存中加載它們!)
我試過實現這個,但是我在(默認)加載器上找不到任何文檔。我可以配置它將語言作爲參數添加到模板URL嗎?或者我可以創建一個自定義加載器來添加此行爲?
好極了!非常感謝你。 –
未來人們發現這種情況的注意事項:對JS文件做相同的處理相對容易。只需爲SystemJS編寫一個插件,例如'exports.locate = function(load){return load.address +'?lang ='+ curLang; };'並將其註冊到你的config.js中:'meta:{「myapp/*」:{loader:「lang-loader」}} –