.net 中的 Javascript 本地化

标签 javascript .net localization

我正在尝试确定在我们的一个网络应用程序中实现本地化的最佳方式。此应用程序将包含大量 javascript 文件,这些文件也需要本地化。

本地化 .net 代码非常简单。我们有一个名为 WebResources.resx 的文件,其中包含所有英文字符串(我们的后备语言)。然后我们只需添加带有替代本地化信息的附加文件(例如:WebResources.es-mx.resx)。然后,砰! .Net 几乎负责其余的工作。

很甜。但是当涉及到 javascript 时,就没那么快了。 Reading on MSDN they recommend :

You create a separate script file for each supported language and culture. In each script file, you include an object in JSON format that contains the localized resources values for that language and culture.

这似乎是我想避免的维护噩梦。另外我想避免使用 asp.net ScriptManager。所以我想到了尝试在我的 .js 文件中使用资源文件的好主意。 EG foobar.js:

function showGenericError(){
     alert('<% =Resources.WebResources.JsGenericError %>');
}

不幸的是,这不起作用,因为 .NET 似乎不对 .js 文件进行任何处理。所以我的下一个想法来自 this thread 上的答案。 .它建议有一个包含所有语言字符串的 javascript 文件。这感觉就像资源的腰部,因为在运行时我只需要一种语言,而不是所有的语言。

这引导我找到我计划实现的解决方案。我计划有一个通用处理程序来写出针对当前用户需要的语言本地化的 JSON。以下是 .ashx 页面的示例:

public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "application/json";

        StringBuilder json = new StringBuilder();
        using (StringWriter jsonStringWriter = new StringWriter(json))
        {
            using (JsonTextWriter jsonWriter = new JsonTextWriter(jsonStringWriter))
            {
                jsonWriter.WriteStartObject();                

                jsonWriter.WritePropertyName("genericErrorMessage");
                jsonWriter.WriteValue(Resources.WebResources.GenericErrorMessage);

                jsonWriter.WriteEndObject();
            }
        }
        context.Response.Write("var webResources = " + json.ToString());
}

在我的页面头部我将有:

<script type="text/javascript" src="js/webResources.js.ashx"></script>

然后我的 js 文件将如下所示:

function showGenericError(){
     alert(webResources.genericErrorMessage);
}

似乎太简单了,对吧?所以我的问题是,这有意义吗?我在某处错过了“陷阱”吗?缺点是什么?有更好的方法吗?

最佳答案

我刚才发了一个类似的问题,这是我想出的:

Localize javascript messages and validation text

这里的优点是您可以共享常规 .net 页面中使用的资源。

您的方法看起来也不错。

关于.net 中的 Javascript 本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5031673/

相关文章:

javascript - 如何解析这种类型的文本?

javascript - 使用 neo4j-driver 获取 neo4j 中所有连接的 Node

javascript - 如何从异步调用返回响应?

c# - 如何编写正则表达式来在 C# 中查找和替换(Unicode/本地化)

validation - 本地化 MVC3 验证消息

javascript - JQuery 切换数字和字符输入

.net - 保护 git 存储库中的文件

c# - 继承一个已经实例化的基础对象

c# - 无法加载文件或程序集 "Microsoft.VisualStudio.Services.Common, Version=12.0.21005.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

ios - 初始化 native ReactLocalization 模块时出错。请检查您的配置 : Did you run 'react-native link' ?