[問題] Augular2 i18n

各位好,想請教幾個問題,因為問題比較長,所以沒放在標題

a). i18n message 檔如何在html內容新增後進行更新
描述: 透過 ng xi18n --output-path src/i18n 指令之後於i18n folder產生了messages.xlf檔,
複製一份並變更檔名為messages.en.xlf為日後英文版使用 (於target tag進行翻譯),
但後來html又新增了內容, 那要如何做才可以更新 message.xlf 以及 message.en.xlf這兩個檔案而不用重工

b). 如何透過url path指定該跑在哪個語言上 (有參考一個blog, 但不知有沒有其他方法的參考 )
描述: www.mydomain.com/en/ 這樣會基於 message.en.xlf
reference: https://medium.com/@feloy/deploying-an-i18n-angular-app-with-angular-cli-fc788f17e358

感謝

1個讚

還沒仔細研究這塊應該要怎麼做,但是有找到這篇文章

其實在github issue 裡,也有人有同樣的問題

2個讚

那個部落格用的方式是事先編譯好多個語系的網頁
也有另一種作法,是選擇的當下進行編譯

或者是你其實可以考慮改用translate之類的套件來做到相同的事情
當然架構上是有差異的,你就必須考慮一下了

你可以參考ng-conf的這個影片
https://youtu.be/dihyu1a2bPc

1個讚

昨天有看了下ngx-translate, 如果考慮用這類的套件來做的話, 雖然可以做到多語系, 但可能就無法依據url path來決定語系, 不知道我的認知有沒有錯 @@ ?

沒有一定不行,多數route的參數都是observable,是可以根據url的參數(譬如query params)來決定介面語言的

感謝Kevin,

目前正在實作中。

文件輔助!
https://www.npmjs.com/package/ngx-i18nsupport

之前兩者都有做過 (i18n and ngx-translate)
先說 i18n,就是預先編譯,所以效能上會好一些,也比較即時
但是每個語系都要處理,目前 merge 也不是太好用
ngx-translate 可以透過 url 來改變語系,需要再裝 plugin - localize-router,應該是這個沒錯
ngx-translate 好處就是可以 runtime 改變語系,但是就會比 i18n 稍微慢那麼一點點
沒特別處理的話,可能在取得語系檔時的很短暫時間畫面上會是原始文字

2個讚

補充一下…昨天發現ng-conf的內容已經進入到官網文件了

可以直接去官網看範例

針對你的第一個問題,你可以一直重複執行ng-xi18n這個指令,會直接覆 蓋掉 原本的檔案
那你就可以針對新增的檔案去做修改

1個讚
1個讚

AngularAir#118集: i18n and Translation with Olivier Combe and Victor Berchet

3個讚