2017-04-21 83 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等

然后你可以根据他们想要的语言重定向到专用应用程序。

希望这可以帮助