Winkel-i18n-Winkel-6 Internationalisierung : der richtige Umgang mit Variablen
Ich habe gelesen, die gesamte doc hier : https://angular.io/guide/i18n
Ich kann mir keinen Reim drauf machen, wie ich die handhaben soll ein html-tag dieser Art :
<div i18n="@@myId" class="title-text">{{currentPage}}</div>
oder einer wie dieser :
<div i18n="@@myId" class="title-text" [innerHTML]="currentPage"></div>
er erwähnt nicht, dass jede variable, die text, als ob Sie einfach annehmen, wir hätten alle unsere Namen und die Texte hart codiert in den html-Code.
einer Sprache, die Datei soll wie folgt Aussehen :
<?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="myId" datatype="html">
<source>Hello</source>
<target>Bonjour</target>
</trans-unit>
</body>
</file>
</xliff>
Bin ich, etwas zu tun, wie diese zu handhaben, die mehrere Möglichkeiten der var?
<?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="myId" datatype="html">
<source>Title 1</source>
<target>Titre 1</target>
<source>Help 2</source>
<target>Aide 2</target>
<source>New 3</source>
<target>Nouveau 3</target>
</trans-unit>
</body>
</file>
</xliff>
Ich glaube nicht, dass wird funktionieren. Wie gehe ich mit Variablen?
UPDATE :
wenn ich Ihre Sprach-Datei-generation-tool :
ng xi18n --output-path locale --out-file english.xlf --i18n-locale fr
Bekomme ich :
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="fr" datatype="plaintext" original="ng2.template">
<body>
<trans-unit id="9f3e56faa6da73b83f4646a1e074b970891894da" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{currentPage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">app/logged.in/top.bar/top.bar.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<note priority="1" from="description">the title of the current route</note>
</trans-unit>
</body>
</file>
</xliff>
ziemlich sicher, dass equiv-text="{{currentPage}}"
ist Müll. aber Es kann noch arbeiten müssen, um zu testen.
in der Zwischenzeit bekomme ich keine ng dienen, um zu akzeptieren die neuen configs.
WIEDER EIN UPDATE :
bekommen ng serve --configuration=fr
arbeiten
müssen Sie Bearbeiten angular.json
weiter, es ist nicht in den offiziellen docs aber Sie sprechen über es hier : https://github.com/angular/angular-cli/wiki/stories-internationalization
Gut, ich habe eine <target>Title</target>
und es funktioniert, aber das bedeutet natürlich, dass jetzt jeder einzelne Wert für den var liefert "Titel" egal was passiert.
auch nach der Platzierung des i18n
tags überall, ich lief in dieses, in mein code :
<dropzone [message]="valid? '' : 'Placez ici votre fichier Excel csv à Ajouter aux lignes ci-dessous. (Ces lignes apparaîtront à la fin de la table)'" (success)="uploaded()"></dropzone>
also was jetzt? wie übersetze ich die Nachricht übergeben, um die dropzone?
- Warum muss ein element ohne eigentliche text müssen übersetzt werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese polyfill scheint, wie der beste Weg zu gehen rechts jetzt - es ist vor allem geschrieben von Olivier Combe, Mitglied des Winkel-team verantwortlich für i18n:
https://github.com/ngx-translate/i18n-polyfill
Für Eckige 5, müssen Sie die version 0.2.0 bei der Installation:
npm install @ngx-translate/[email protected] --save
Für Winkel-6, die neueste version - derzeit 1.0.0:
npm install @ngx-translate/[email protected] --save
Bekam ich die polyfill arbeiten für beide JIT-und AOT-Kompilierung, für Eckige 5 (es funktioniert auch für Winkel-6). Hier ist, was Sie tun müssen, um zu übersetzen, um eine einheitliche Sprache (dies ist ein guter Weg, um diese arbeiten - dann kann man mehrere Sprachen arbeiten später):
app.- Modul.ts
Fügen Sie die folgenden imports zu Ihrem root-Winkel-Modul:
fügen Sie die folgenden Konstanten, und geben Sie die Provider in Ihrer Stamm-Modul:
*.ts
In der .ts-Datei, wo Sie wollen, um eine übersetzung zu verwenden, fügen Sie diese:
Dies zeigt, dass Sie können sogar Interpolationen in den Nachrichten, die Sie übersetzen möchten.
Können Sie i18n-Definitionen (D. H. mit Angabe der übersetzung 'Quelle' id, Bedeutung, Beschreibung) wie folgt:
Müssen Sie zum extrahieren der Nachrichten, und Sie können mit dem ngx-extractor-tool, dies zu tun. Finden Sie in der readme-Datei auf der polyfill Seite.
All dies ist kompatibel mit xliffmerge, das ist ein großes Werkzeug für das automatische Zusammenführen von jeder neue übersetzungen, die Sie hinzufügen, ohne überschreiben der vorhandenen übersetzungen. Xliffmerge kann auch automatisch ausführen, übersetzungen mit Google translate (Sie benötigen einen Google translate API-Schlüssel). Für diese Arbeit, ich mache das extrahieren und Zusammenführen/übersetzen in der folgenden Reihenfolge, vor ich die eigentliche AOT bauen:
Den AOT-build für eine bestimmte Sprachversion der Website sieht wie folgt aus:
Aktuellen status dieser polyfill:
Dies ist vor allem, geschrieben von Olivier Combe, Mitglied des Winkel-team verantwortlich für i18n. In diesem Stadium ist das eine 'spekulative' polyfill für die übersetzung von Variablen oder strings in der .ts-Datei. Es ist wahrscheinlich ersetzt werden durch eine API gebaut, in Winkel, das wird sehr ähnlich sein, so dass ein Upgrade später sollte halbwegs überschaubar. Hier ist der diclaimer von der Github Seite:
Gab es einige Diskussion um Unterstützung in den nächsten minor-Versionen von Angular 6 für übersetzungen von Variablen/strings im code.
Hier ein Zitat von Olivier Combe (ab März dieses Jahr), aus der folgenden Diskussion auf Github:
https://github.com/angular/angular/issues/11405
constructor(i18n: I18n) {
wie heißt es in dem doc. Meine app stürzt auf der browser-Bühne. das Zeug oben, dass etwas in Ihrer readme nicht dazu führen, dass die app zum Absturz.Den offiziellen Anweisungen "übersetzen-plural-und-select-Ausdrücke", kann man das nicht tun ? :