【发布时间】:2017-02-21 23:18:46
【问题描述】:
我知道的 i18n 的早期 Angular 文档是 Stephen Fluin 的示例代码。 https://github.com/StephenFluin/i18n-sample/commit/e2cb2006c614fce0f6d623def5f13174583233d3
我试图密切关注它。 Atom-typescript 说没有错误,但我得到每个元素的翻译不可用控制台消息,如下所示,删除了 -
zone.js:355 未处理的承诺拒绝:模板解析错误:
md-grid-tile [ERROR ->] button id="terms" md-button aria-label="TERMS" i18n="button for Service Terms" TERMS /button /md"): AppComponent@63: 19 消息 id="8476fc13627507c3d0ec6b85dae533f0c5e44eef" ("-label="TERMS" i18n="button for Service Terms" TERMS /button /md-grid-tile
无法翻译我的相关代码是:
package.json 与所示相同,但我不包括 @angular/tsc-wrapped 因为这里似乎没有必要。
component.html - 我的 HTML 示例如下所示:
<h4 id="motto" i18n="our motto stating the value of using this site">MOTTO</h4>
<md-grid-tile><button id="terms" md-button aria-label="TERMS" i18n="button for Terms of Service">TERMS</button></md-grid-tile>
main.ts 我遗漏了生产环境行和 polyfills
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { TRANSLATIONS, TRANSLATIONS_FORMAT, LOCALE_ID } from '@angular/core';
import { AppModule } from './app.module';
import { TRANSLATION } from './components/navigation/language/messages.en';
platformBrowserDynamic().bootstrapModule(
AppModule,
{providers: [
{ provide: TRANSLATIONS, useValue:TRANSLATION },
{ provide:TRANSLATIONS_FORMAT, useValue:'xlf' },
{ provide:LOCALE_ID, useValue:'en' }
]});
messages.en.ts 重复元素的示例有:
export const TRANSLATION = `
<?xml version='1.0' encoding='utf-8'?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="ng2.template">
<body>
<trans-unit id="motto" datatype="html" approved="yes">
<source>MOTTO</source> <target state="translated">Find a home, save time</target>
<note priority="1" from="description">our motto stating the value of using this site</note>
</trans-unit>
<trans-unit id="terms" datatype="html" approved="yes">
<source>TERMS</source> <target state="translated">Terms of Service</target>
<note priority="1" from="description">button for Terms of Service</note>
</trans-unit>
messages.en.xlf又是重复元素的例子
<?xml version='1.0' encoding='utf-8'?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="ng2.template">
<body>
<trans-unit id="motto" datatype="html" approved="yes">
<source>MOTTO</source> <target state="translated">Find a home, save time</target>
<note priority="1" from="description">our motto stating the value of using this site</note>
</trans-unit>
messages.xlf又是一个重复元素的例子
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="ng2.template">
<body>
<trans-unit id="motto" datatype="html">
<source>MOTTO</source>
<target/>
<note priority="1" from="description">our motto stating the value of using this site</note>
</trans-unit>
Stephen 的代码有 40 位十六进制数字,用于 trans-unit id。我不知道它们是如何生成的。我的代码有 id="motto" 之类的东西。我的控制台消息包含 40 位十六进制,但每次我尝试某些东西时它们似乎都会改变。这部分是个谜。
这是非常前沿的,没有真正的文档,但有人知道如何解决这个问题吗?我在 10 月 17 日之前都在外地,但是当我回来时,我会热切地尝试好的想法。
【问题讨论】:
标签: javascript angular internationalization translation