Internationalisierung mit angularjs
Ich denke der Umzug meiner Website zu angularjs, und ich möchte anfangen, sehr klein, indem Sie alle meine statischen server-side-plain-text-templates von django eckig (sonst gibt es syntax-Probleme mit den" {{}}').
Es scheint, dass der beste Weg, dies zu tun, werden Sie eine von zwei Optionen:
- Ein ajax-Aufruf, liefert ein JSON mit allen Texten meiner Website. Die Texte werden in einer Variablen gespeichert werden, die gebundenen zu meinem HTML-Elemente so eckig wird alles aktualisieren.
- Zum speichern einer statischen js-Datei mit dem Wörterbuch und fügen Sie es in mein HTML und binden Sie das Wörterbuch mit angularjs.
Beide Optionen erlauben mir, zwischen den Sprachen zu wechseln, ohne die Seite neu zu laden.
Welches ist besser? Im Allgemeinen ist dies ein guter Ansatz, oder ist es ein richtiger Weg?
Kommentar zu dem Problem - Öffnen
Hi Uri, ich Spiele schon mit dem gleichen Problem: die Integration der .po-Dateien, die von meinem Django-app(back-end) in einer AngularJS-Anwendung (Front-end). Können Sie mir mehr Infos darüber, wie Sie erreicht dies schließlich? Beide Ansätze haben für mich funktioniert, obwohl ich lieber 1. 😉 Vielen Dank im Voraus.
Ging mit der option #2. Es war viel einfacher und hat den job.
Wie ich es gemacht habe stackoverflow.com/questions/19881590/...
InformationsquelleAutor der Frage Uri | 2013-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst von allen, gibt es eine Möglichkeit zum ändern der Winkel - Trennzeichen auf andere Symbole, wie hier beantwortet: Angular JS benutzerdefinierte Trennzeichen
Den 2. option ist einfacher. Sie es einmal und Sie haben alle übersetzungen auf die Seite laden. Keine asynchronen Aufrufe, keine Versprechen, einfach und schön.
Aber ich würde mit dem ersten. Dienste wie $übersetzen würde wirklich Ihr Leben leichter machen folgende option 1. Plus hat es viele Optionen für das laden und speichern von geladenen Daten in LocalStorage und cookies, so gibt es viel Platz für Erweiterung und Anpassung. Sie können dann übersetzen Sie Ihre Inhalte mit $translate-Dienst, Richtlinie oder filter.
Und vergessen Sie nicht, dass 2 option deaktiviert alle Optionen, die der Cache-Anfragen. Auf jede Anfrage zu Ihrem start-Seite, die der server hat zu Lesen statischen Datei, und schließen Sie ihn in den html-Code. Mit der ersten option werden die Benutzer-browser-cache .json so lange wie Sie möchten.
InformationsquelleAutor der Antwort package
Habe ich versucht, ein paar verschiedene Optionen, einschließlich Eckige Übersetzen, aber ich mochte Angular-gettext die beste bisher.
Eine Sache, die enorm geholfen ist, es gibt eine funktionsfähige demo für Sie, wo Sie i18n TodoMVC, genannt angular-gettext-Beispiel.
Der workflow ist einfach:
Ich bin sicher, dass die anderen Lösungen, die hier gepostet sind gut dabei, aber ich habe nicht gesehen, eine end-to-end-Beispiel so schön organisiert wie angular-gettext-Beispiel.
Cheers,
JD
InformationsquelleAutor der Antwort JD Smith
AngularJS unterstützt il8n/L10n für Währung, Datum und zahlen filtern nur. Nach dieses Buch:
(sorry für die niedrige Qualität! Handy-Kamera)
Ich würde sagen, Folgen dem ersten Ansatz und laden Sie die übersetzung dynamisch. Es würde bedeuten, eine Menge Arbeit, aber es gibt keinen anderen Weg, um
InformationsquelleAutor der Antwort Ahmad Alfy
Haben Sie einen Blick auf angular-translate 🙂
Es löst beide Szenarien!
InformationsquelleAutor der Antwort PascalPrecht