Das ASP.NET ScriptManager-Steuerelement bietet die Möglichkeit, localization für Ihre Skripts auf verschiedene Arten bereitzustellen.
Wenn Ihr Skript in die Assembly eingebettet istas a resource using the WebResourceAttribute dann you can use the ScriptResourceAttribute die Script wissen zu lassen, dass Sie einige lokalisierte Zeichenfolgen in einer RESX-Datei irgendwo gespeichert haben, dass Sie jederzeit Ihr Skript wird serviert serviert werden soll. Diese Strings werden als JSON-Objekt in die Seite eingefügt, und dann geben Sie in Ihrem Hauptskript Verweise auf das JSON-Objekt statt auf literale Strings aus.
Zum Beispiel würden Sie Ihr Skript wie folgt einbetten:
[assembly: System.Web.UI.WebResource("ProjectNamespace.MyScript.js", "application/x-javascript")]
[assembly: System.Web.UI.ScriptResource("ProjectNamespace.MyScript.js", "ProjectNamespace.MyScriptResources", "Messages")]
Die „ProjectNamespace.MyScript.js“ ist der vollständige Pfad zu der eingebetteten Ressource, die Ihr Skript. Im ScriptResourceAttribute ist der zweite Parameter der vollständige Pfad zur eingebetteten RESX-Datei (abzüglich der Erweiterung .RESX), die alle lokalisierten Nachrichten enthält. Sie behandeln das genau wie jede andere .resx-Datei, sodass Sie MyScriptResources.resx für die Standardkultur und dann MyScriptResources.es-MX.resx für mexikanische Spanisch-Überschreibungen usw. haben. Der letzte Parameter im ScriptResourceAttribute ist der Name des JSON Objekt, das generiert wird.
In Ihrem Skript, können Sie das JSON-Objekt verweisen:
function DoSomething()
{
alert(Messages.ErrorMessage);
}
In dem obigen Code-Schnipsel "Errormessage" ist der Name eines der String-Ressourcen in der RESX-Datei.
Wenn Sie das Skript einbetten, verweisen Sie es mithilfe eines Tags, das eine Assembly und einen Namen angibt, vom ScriptManager aus an.
Alternativ können Sie vollständig lokalisierte Kopien des Skripts, wie "MyScript.js" halten "MyScript.es-MX.js", "MyScript.en-UK.js" usw., wo die lokalisierte Logik und Nachrichten sind fest in das Skript geschrieben.
Wenn Sie diese Lokalisierungsmethode verwenden, referenzieren Sie sie über den ScriptManager mit einem, der einen Pfad angibt.
There is a really nice overview and links to detailed walkthroughs on this with code examples on MSDN.
Beachten Sie, dass, wenn Sie ASP.NET MVC verwenden, die Scriptmanager-Steuerelement wirklich nicht mit ihm arbeiten. In diesem Fall sollten Sie sich eine andere Lösung wie die jQuery globalization plugin oder möglicherweise a custom ScriptManager replacement for use in MVC ansehen.
Ich arbeitete mit dem gleichen Problem auch. Aber in meinem Fall erzeuge ich js-Datei als eine eingebettete Ressource und ich benutze ClientScriptManager. Und Ereignis das Ressourcenprojekt und das jscript eingeschlossene Projekt sind unterschiedlich. Also kann ich nicht das richtige "Nachrichten" -Objekt aus meiner js-Datei bekommen. Irgendeine Idee? –