2017-11-29 3 views
1

Ich lerne Angular v.5 + Express, und ich möchte Anwendung mit Angular i18n-Tool in zwei Sprachen übersetzen. Ich möchte, dass meine URL die von mir verwendete Sprache wie folgt enthält: mysite.com/en/controller/...Angular lokalisierte Basis-URL

Meine Idee ist es, AOT-Compiler zu verwenden, nach the guideline. Dann servieren Sie den entsprechenden Ordner per Express. Also, als Ergebnis habe ich 2 Versionen meiner Anwendung, jede in einem eigenen Verzeichnis.

Das Problem ist, dass ich Basis-URL in Datei index.html

<head> 
    <meta charset="utf-8"> 
    <title>Title</title> 
    <base href="/en/"> 
    ... 
</head> 

Und die URL ist abhängig von der aktuellen Sprache definieren muß. Was ich erwartet habe ist, dass ich etwas tun kann wie

<base i18n href="/en/"> 

und dann alternativen Pfad in meiner Übersetzungsdatei angeben. Dies funktioniert jedoch nicht. Mache ich etwas falsch? Was ist der richtige Weg, um i18n mit AngularJS5 mit einem solchen URL-Muster zu verwenden?

+0

Hallo, nur für Sie Informationen, wenn Sie über v2 sprechen + Sie muss sagen, eckig, olders Versionen genannt AngularJS – Leasye

Antwort

1

Müssen Sie die Sprache in der URL haben? Wenn Sie es entfernen, können Sie einfach Ihre Basis-URL auf / setzen. In diesem Fall würde Ihr Express-Server die Sprache des Benutzers erkennen und das richtige Asset bereitstellen. Wenn also /controllers/myController.js angefordert wird und die Sprache des Benutzers spanisch ist, gibt der Server die Datei von /es_ES/controllers/myController.js zurück.

PS: Ich glaube, der AOT-Compiler funktioniert nur mit angular 2+, also gehe ich davon aus, dass Sie Angular anstelle von AngularJS verwenden.

+0

Vielen Dank für Ihre Antwort. Nein, das muss ich nicht, aber auf meiner Serverseite weiß ich nur eine Möglichkeit, Sprache zu erkennen - indem ich die URL anpasse. Es wäre schön, wenn Sie die Möglichkeit vorschlagen würden, die Sprache ohne URL-Übereinstimmung zu erkennen (und zu wechseln). – alvis

+0

Das ist einfach, check out: https://stackoverflow.com/questions/11845471/how-can-i-get-the-browser-language-in-node-js-express-js – frodo2975

1

Eine schöne Lösung könnte sein, NGX-translate zu verwenden (was für AngularJS das gleiche als Winkel übersetzen ist

NGX-translate hat ein Plugin für die Sie benötigen.

Localize Router von @ meeroslav:.. Eine Implementierung von Routen Lokalisierung für Angular Wenn Sie lokalisierte URLs benötigen (zB/fr/Seite und/en/Seite)

NGX-translate Link: https://github.com/ngx-translate/core

Hier ist das Plugin Link: https://github.com/Greentube/localize-router