我使用Resources在我的MVC应用程序中存储不同的字符串以用于本地化目的。
我正在使用HttpHandler来处理JavaScript并将Translate(KEY)
调用更改为来自资源的实际本地化字符串值。
这是来自Localize text in JavaScript files in ASP.NET
问题是当我从资源管理器调用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;
}
我做错了什么?
答案 0 :(得分:1)
好的,我发现了问题,但我无法解释为什么会发生这种情况。 (尚)
我发现了这篇文章Problems with ResourceManager and neutral culture in Asp.Net MVC 并遵循他所做的步骤。 我已经开始行了:
ResourceManager manager = new ResourceManager(typeof(CamelotShiftManagement.Strings.SharedStrings));
要:
ResourceManager manager = CamelotShiftManagement.Strings.SharedStrings.ResourceManager;
基本上,您似乎每个资源文件都有一个静态参与处理此资源文件的ResourceManager。
这解决了我的问题。 话虽如此,我仍然不确定为什么我之前使用的方法不起作用......