El control ASP.NET ScriptManager tiene la capacidad de proporcionar localization para sus scripts de varias maneras.
Si su script está incrustado en el ensambladoas a resource using the WebResourceAttribute continuación you can use the ScriptResourceAttribute dejar que el ScriptManager sabe que tiene algunas cadenas localizadas almacenados en un archivo .resx en alguna parte que desea servido arriba en cualquier momento se sirve el script. Estas cadenas se inyectan en la página como un objeto JSON y luego en el script principal se envían referencias al objeto JSON en lugar de cadenas literales.
Por ejemplo, se incrusta la secuencia de comandos de esta manera:
[assembly: System.Web.UI.WebResource("ProjectNamespace.MyScript.js", "application/x-javascript")]
[assembly: System.Web.UI.ScriptResource("ProjectNamespace.MyScript.js", "ProjectNamespace.MyScriptResources", "Messages")]
Los "ProjectNamespace.MyScript.js" es la ruta completa al recurso incrustado que es el script. En ScriptResourceAttribute, el segundo parámetro es la ruta completa al archivo .resx incrustado (menos la extensión .resx) que contiene todos los mensajes localizados. Tratas eso como cualquier otro .resx, por lo que tendrías MyScriptResources.resx para la cultura predeterminada, luego MyScriptResources.es-MX.resx para las anulaciones de español mexicano, etc. Ese último parámetro en ScriptResourceAttribute es el nombre de JSON objeto que se generará
En su guión, que hacen referencia al objeto JSON:
function DoSomething()
{
alert(Messages.ErrorMessage);
}
En el fragmento anterior, "ErrorMessage" es el nombre de uno de los recursos de cadena en el archivo .resx.
Si incrusta la secuencia de comandos, hágalo desde ScriptManager con una etiqueta que especifique una Asamblea y un Nombre.
Alternativamente, puede guardar copias totalmente localizadas de la secuencia de comandos, como "MyScript.js", "MyScript.es-MX.js", "MyScript.en-UK.js", etc., donde la localizada la lógica y los mensajes están codificados directamente en el script.
Si utiliza este método de localización, hágalo desde el ScriptManager utilizando un que especifique una ruta de acceso.
There is a really nice overview and links to detailed walkthroughs on this with code examples on MSDN.
Tenga en cuenta que si está utilizando ASP.NET MVC, el control ScriptManager no realmente trabajar con él. En ese caso, querrá ver una solución diferente como jQuery globalization plugin o potencialmente a custom ScriptManager replacement for use in MVC.
Estaba trabajando con el mismo problema también. Pero en mi caso, produzco el archivo js como un recurso incrustado y uso ClientScriptManager. Y si el proyecto de recursos y el proyecto jscript incluido son diferentes. Por lo tanto, no puedo obtener el objeto "Mensajes" correcto de mi archivo js. ¿Alguna idea? –