我使用资源在我的 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;
}
我做错了什么?
好吧,我发现了问题,但我无法解释为什么会发生这种情况。 (还)
我发现了这篇文章ResourceManager 和 Asp.Net MVC 中的中立文化的问题 并按照他所做的步骤进行操作。 我已经换线了:
ResourceManager manager = new ResourceManager(typeof(CamelotShiftManagement.Strings.SharedStrings));
致:
ResourceManager manager = CamelotShiftManagement.Strings.SharedStrings.ResourceManager;
基本上,每个资源文件似乎都有一个对处理该资源文件的 ResourceManager 的静态引用。
这解决了我的问题。 话虽如此,我仍然不确定为什么我之前使用的方法不起作用......