Wie behandeln Lokalisierung in JavaScript-Dateien?
Ich soll JavaScript-code getrennt von Ansichten.
Ich habe die Anforderung zu implementieren Lokalisierung für eine einfache image-Taste generiert JavaScript:
<img src="..." onclick="..." title="Close" />
Was ist die beste Technik, um den Titel zu lokalisieren?
PS: ich fand eine Lösung von Ayende. Das ist die richtige Richtung.
Edit:
Ich habe Lokalisierung helper-Klasse, die die Controller.Resource('foo')
- Erweiterung-Methode.
Bin ich denken, um es zu erweitern (Helfer), es könnte also wieder alle JavaScript-Ressourcen (von der "ClientSideResources" Unterordner in App_LocalResources
) für den angegebenen controller durch seinen Namen. Dann - nennen wir es in BaseController
ist, fügen Sie es zu ViewData
- und render es in Layout
.
Wäre das eine gute Idee?
InformationsquelleAutor Arnis Lapsa | 2009-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
BEARBEITEN
Prüfen, schreiben die notwendigen lokalisierten Ressourcen auf ein JavaScript-Objekt (hash -) und dann verwenden Sie es zum nachschlagen für Ihre dynamisch erzeugten Objekte. Ich denke, das ist besser, als zurück an den server für die übersetzungen. Dies ist ähnlich wie das hinzufügen es über viewdata, kann aber ein wenig flexibler. FWIW, ich konnte die Lokalisierung von Ressourcen werden als Teil der Ansicht, nicht Teil der Steuerung.
In der Ansicht:
würde die Ausgabe etwas wie:
Ohne Argumente wäre es die Ausgabe der gesamten übersetzung-hash. Mithilfe von Argumenten gibt Ihnen die Möglichkeit zum anpassen von it-pro-Sicht.
Würdest du dann verwenden Sie es in Ihrem JavaScript-Dateien, wie:
Eigentlich bin ich ja nicht allzu viel Aufhebens über das halten meine JavaScript-code aus meiner Ansichten, solange der JavaScript-code ist lokalisiert in einem container. In der Regel werde ich mein master-Seite mit 4 content-Bereich: Titel, header, main und Skripte. Titel, header und main gehen, wo Sie erwarten würden, und die Skripte Bereich geht an der Unterseite des Körpers.
Ich habe alle meine JavaScript enthält, einschließlich aller für viewusercontrols, in das scripts-container. Anzeigen-spezifischen JavaScript-code nach dem enthält. Ich refactor-shared-code zurück, Skripte, wie gebraucht. Ich dachte über die Verwendung einer controller-Methode zu Sortieren-Skript enthält, das heißt, mehrere Skripte über eine einzelne Anforderung, aber nicht bekommen, um zu, dass, noch.
Dies hat den Vorteil, dass der JavaScript-code getrennt für die Lesbarkeit, sondern erlaubt mir auch leicht Spritzen Modell-oder view-Daten in den JavaScript-code als nötig.
Btw, warum befestigen onclick-handler auf JS onload ist vorzuziehen?
Ich vermisste die "generated by JS" Teil deiner Frage-einfach gescannt und direkt über es. In diesem Fall würde ich prüfen, schreiben die lokalisierten Daten zu den anzeigen und mit javascript laden Sie es von einem lokalen Objekt. Wird umschreiben.
Es ist durchaus möglich, dass Sie es verpasst, weil ich bearbeitete meine Frage (~5 Sekunden, nachdem ich es eingereicht), um es hinzuzufügen. 🙂
re: onload hinzufügen. Diese Bemerkung wurde gemacht, als ich dachte, Sie waren das rendering der inline-element. Ich ziehe mit der click () - Methode Handler hinzuzufügen, anstatt es über element-Attribute beim hinzufügen dynamisch. Siehe meine aktualisierte Antwort für ein Beispiel, wie die lokalisierten Ressourcen bei der Erstellung des Elements dynamisch.
InformationsquelleAutor tvanfosson
Eigentlich ASP.NET Ajax hat eine eingebaute Lokalisierungs-Mechanismus: Verständnis ASP.NET AJAX-Lokalisierung
InformationsquelleAutor BrunoSalvino
Wenn Sie darauf bestehen, halten Sie trennen, Sie könnten etwas tun wie:
Denken Sie daran, wenn Sie JavaScript-code initialisiert alle text-Elemente, die Ihre Website beeinträchtigen schrecklich, wo JavaScript nicht verfügbar ist.
InformationsquelleAutor karim79