Fehler in den Beispielquelltexten (Internationalisierung)

Christoph Höller February 7, 2017

Leider haben sich durch das Update der Beispielquelltexte des Internationalisierungs-Kapitels einige kleinere Fehler eingeschlichen, so dass Sie ab sofort unter dem Link “Beispielquelltexte” eine akualsierte Fassung der Beispiele finden.

Der Hauptgrund für das fehlerhafte Verhalten des Projekts lag in der bisherigen Version darin, dass mit Angular 2.4.3 ein Bug eingeführt wurde (Details finden Sie unter https://github.com/angular/angular/issues/13624), der verhindert dass sich der für Tests verwendete Animations-Treiber per AOT kompilieren lässt. Da das Tool zur Generierung von Übersetzungen (ng-xi18n) jedoch lediglich mit AOT-kompatiblem Code funktioniert führte die Ausführung des Befehls:

npm run translate

zu folgendem Fehler führt

Post Sample Image

(Details zu den Gründen, aus denen Inline-Funktionen nicht AOT-kompatibel sind finden Sie im Buch in Abschnitt “16.4.3 Verzicht auf Inline-Funktionen” auf Seite 603)

Die Lösung für das Problem besteht nun darin, den Test-Code von der Kompilierung auszuschließen. Des Weiteren ist es ebenfalls sinnvoll bereits durch den AOT-Compiler kompilierten Code nicht erneut von ng-xi18n auch mgöliche Übersetzungen untersuchen zu lassen. Erweitern Sie hierfür einfach die tsconfig.json mit dem folgenden exclude-Statement:

{
  "compilerOptions": {
     ...
   },
   "exclude": [ "test.ts", "main-aot.ts"]
}

Im Anschluß müssen Sie lediglich noch dafür sorgen, dass der Befehl npm run translate die tsconfig.json verwendet. Erweitern Sie hierfür den Script-Aufruf in der package.json wie folgt

"scripts": {
    "translate": "ng-xi18n -p ./src/tsconfig.json",
    ...
  },

Ein erneuter Start der Translation-Generierung sollte nun ohne den initial dargestellten Fehler funktionieren.

Besten Dank an Herrn Pätzold für das aufspüren des Fehlers und die konstruktive Kritik!