2016-10-13 2 views
0

Ранняя документация по Angular для i18n, о которой я знаю, представляет собой пример кода Stephen Fluin. https://github.com/StephenFluin/i18n-sample/commit/e2cb2006c614fce0f6d623def5f13174583233d3Угловой 2 i18n дает перевод недоступных сообщений консоли

Я попытался внимательно следить за ним. Atom-машинопись говорит без ошибок, но я получаю Translation недоступны консольные сообщения для каждого элемента, как следующее с < и> удалены -

zone.js: ошибки разбора шаблона:: 355 Неизвестного Promise отказа

MD- grid-tile [ERROR ->] button id = "terms" md-button aria-label = "TERMS" i18n = "кнопка для Условий обслуживания" TERMS/button/md "): AppComponent @ 63: 19 Перевод недоступен для кнопка ("-label =" КРУГ»i18n = "Правила для предоставления услуг" КРУГ/кнопки/Md-сетка-плиточных идентификатор сообщения = "8476fc13627507c3d0ec6b85dae533f0c5e44eef"

Мой соответствующий код является:

package.json То же, что и указано, кроме того, что я не включаю @ угловое/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> 

код Стефана имеет 40 цифр шестнадцатеричных чисел для trans-unit id s. Я не знаю, как они были созданы. У моего кода есть такие вещи, как id = «девиз». Мои сообщения консоли содержат 40-значный шестнадцатеричный код, но они кажутся меняющимися каждый раз, когда я что-то пробую. Эта часть - загадка.

Это довольно кровоточащий край без реальных документов, но кто-нибудь знает, как это исправить? Я уезжаю из города до 10/17, но я с нетерпением буду испытывать хорошие идеи, когда вернусь.

ответ

0

Оказалось, что файлы в статье Стивена Флюина, процитированные выше, генерируются методом углового перевода. Не пытайтесь копировать, изменять и вставлять - как я уже говорил выше! После долгих поисков я обнаружил, что процесс настраивает описания, спрятанные в разделе Cookbook в devdocs Angular2. http://devdocs.io/angular~2_typescript/cookbook/i18n

Это комплекс (для меня, во всяком случае), многоэтапная настройка кода и файлов переводов. Но это работает. У вас есть выбор как раз вовремя, так и за перевод AoT. Это также многоэтапное исследование для принятия решения. На данный момент Google предлагает использовать jiT для разработки (хотя это медленнее для рисования страницы) и AoT для производства.В настоящее время AoT чрезвычайно сложна для настройки. Google говорит, что они работают над тем, чтобы сделать его проще. Надеюсь, что это сэкономит вам время.

Смежные вопросы