1

我使用 Resources 在我的 MVC 应用程序中存储不同的字符串以进行本地化。我正在使用 HttpHandler 来处理 JavaScript 并将Translate(KEY)调用更改为资源中的实际本地化字符串值。这是在这里:在 ASP.NET 中本地化 JavaScript 文件中的文本

问题是当我从我的资源管理器中调用 getObject 方法时,我得到了MissingManifestResourceException Could not find any resources appropriate for the specified culture or the neutral culture.

这是相关的代码部分(错误来自下面代码段中的第 6 行):

private string TranslateScript(string text)
{
    MatchCollection matches = REGEX.Matches(text);
    ResourceManager manager = new ResourceManager(typeof(CamelotShiftManagement.Strings.SharedStrings));

    foreach (Match match in matches)
    {
        object obj = manager.GetObject(match.Groups[1].Value, CultureInfo.CurrentCulture); //This throws the MissingManifestResourceException for some reson!!!!
        if (obj != null)
        {
            text = text.Replace(match.Value, CleanText(obj.ToString()));
        }
    }

    return text;
}

我究竟做错了什么 ?

4

1 回答 1

1

好的,我发现了问题,但我无法解释为什么会这样。(然而)

我在 Asp.Net MVC 中发现了 ResourceManager 和中性文化的这篇帖子问题, 并按照他所做的步骤进行操作。我已经改行了:

ResourceManager manager = new ResourceManager(typeof(CamelotShiftManagement.Strings.SharedStrings));

至:

ResourceManager manager = CamelotShiftManagement.Strings.SharedStrings.ResourceManager;

基本上,您似乎每个资源文件都有对处理该资源文件的 ResourceManager 的静态引用。

这解决了我的问题。话虽如此,我仍然不确定为什么我之前使用的方法不起作用......

于 2012-10-05T09:12:44.243 回答