Texte in JavaScript-Dateien in ASP.NET übersetzen

Der Artikel „Localize text in JavaScript files in ASP.NET“ hat eine hervorragende Lösung um Texte in JavaScript-Dateien (und auch in CSS-Dateien) zu übersetzen.

Das klappt sowohl mit ASP.NET-Website-Projekten, als auch mit ASP.NET-Web-Applikations-Projekten (also dem kompilierten).

Bis auf einen Fall, der mir heute passiert ist. Da kam immer eine Exception, dass er die Ressourcen für die aktuelle Culture nicht findet.

Die Lösung sah dann so aus, dass ich eine Funktion geändert habe.

Alt:

public static string TranslateScript(string text)
{
	if (string.IsNullOrEmpty(text))
	{
		return text;
	}
	else
	{
		var matches = Regex.Matches(text);
        var manager = new ResourceManager(typeof(Resources.Resources));

		foreach (Match match in matches)
		{
			var value = match.Groups[1].Value;

            var obj = manager.GetObject(value);
            if (obj != null)
			{
				text = text.Replace(match.Value, CleanText(obj.ToString()));
			}
		}

		return text;
	}
}

Neu:

public static string TranslateScript(string text)
{
	if (string.IsNullOrEmpty(text))
	{
		return text;
	}
	else
	{
		var matches = Regex.Matches(text);

		foreach (Match match in matches)
		{
			var value = match.Groups[1].Value;

			var obj = HttpContext.GetGlobalResourceObject(@"Resources", value);
            if (obj != null)
			{
				text = text.Replace(match.Value, CleanText(obj.ToString()));
			}
		}

		return text;
	}
}

D.h. ich habe den Zugriff über eine Klasse in einen Zugriff über „GetGlobalResourceObject“ umgewandelt, der erst zur Laufzeit versucht das aufzulösen.