2017-04-21 41 views
19

我需要翻譯我的Angular 4應用程序。基本上我跟着the official guideAngular 4 i18n - 添加翻譯文件後如何繼續?

  1. 我添加I18N屬性標籤等

  2. 角-CLI創建messages.xlf

  3. 我在src-文件夾中創建的文件夾 「區域」

  4. 我將messages.xlf複製到此區域設置文件夾...

  5. ...並將其重命名爲「消息 .xlf」持有德國 翻譯

我換了一個簡單的翻譯測試的事情了。但是,在我將瀏覽器切換到「德語」後,沒有任何區別(使用npm start,所以基本上是'ng serve')。似乎是還有一些缺失。該指南也解釋了how to 'merge' the translation。但是這一章非常奇怪,聽起來並不令人信服。它看起來像是爲早期版本完成的。

例如,它聲明適應我的啓動腳本。問題是我甚至沒有啓動腳本。我的index.html如下所示:

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>PickUp2</title> 
    <base href="/"> 

    <link href="assets/iconfont/material-icons.css" rel="stylesheet"> 
    <link href="roboto.css" rel="stylesheet"> 

    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="icon" type="image/x-icon" href="assets/material_supply_icon.ico"> 
</head> 
<body> 
    <app-root>Loading...</app-root> 
</body> 
</html> 

哪裏需要放置此啓動腳本?我甚至不知道我是使用JIT還是AOT編譯器。他們以前從未在任何指南中提及過。

+0

您是否設法使它工作?我被困在同一個步驟,下面的答案不是真的幫助我。 – gkri

+0

我們使用重定向到特定應用程序的「Locale」模塊設置了節點js服務器。您需要爲每種語言構建一個應用程序,並將它們部署到不同的文件夾。區域設置:https://github.com/florrain/locale – OddDev

+0

事情是,我不能進一步建設在不同語言的應用程序進一步,因爲我使用的是JIT而不是AOT – gkri

回答

8

我已經用食譜中描述的方法翻譯了我們的Angular-4應用程序。 我認爲你錯過的關鍵信息是你需要爲每種語言分別構建應用程序。

我的命令與一個翻譯在本地運行的應用程序是這樣的:

>ng serve --i18n-file src/i18n/messages.fr.xlf --locale fr --i18n-format xlf --aot 

構建它只需更換NG與服務納克建立

解釋:

  • - i18n-file指定要使用哪個譯文
  • - 不是提前編譯的HTML模板和灰,這將取代文本標記國際化與翻譯

所以你的情況,你將建立在德國的應用程序,然後部署它 - 讓我們說 - 到/解文件夾。另一個版本的應用程序可以在/ en等

然後你可以根據他們想要的語言重定向到專用應用程序。

希望這可以幫助