我以前在2010中开发了一个应用程序。它使用代码中使用的本地化winforms和resx资源。
在同一台计算机上使用2012打开和编译项目时,不应用本地化字符串,只找到默认代码。
应用程序运行良好,在winforms设计器中,我可以更改语言以查看和编辑控件的本地化文本。我还尝试了下面的代码,以确定在运行时使用的语言是否存在,这确实报告了所使用的语言。
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
foreach (CultureInfo culture in cultures)
{
try
{
ResourceSet rs = resources.GetResourceSet(culture, true, false);
// or ResourceSet rs = rm.GetResourceSet(new CultureInfo(culture.TwoLetterISOLanguageName), true, false);
if (rs == null)
continue;
string isSupported = (rs == null) ? " is not supported" : " is supported";
Console.WriteLine(culture + isSupported);
}
catch (Exception)
{
Console.WriteLine(culture + " is not available on the machine or is an invalid culture identifier.");
}
}不过,当应用程序运行时,我得到的只是默认语言的资源。
我使用以下方法检索资源:
ResourceManager resources = new ResourceManager(form.GetType());
form.Text = resources.GetString("$this.Text", lang);我已经证实朗是对的,但也用
System.Threading.Thread.CurrentThread.CurrentUICulture = lang;
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang.Name);然后是MyLangResxFile.MyStringResource的用法。返回的字符串仍然只是默认字符串。
在2010-2012年之间,resx本地化支持可能会有更改或限制吗?
更新:我注意到,如果使用3.5版的msbuild.exe编译本地化,但是当使用msbuild.exe时.如上所述,缺少本地化。
发布于 2012-11-23 09:54:21
很抱歉“回答”了这个问题,但是评论不起作用。我只想问你能否在这段时间内解决这个问题,因为我也有同样的问题。
我甚至注意到,只有选择目标框架< 4.0时才会出现此问题。对于目标框架4.0和4.5本地化工作与以前的VS 2010.
https://stackoverflow.com/questions/13153992
复制相似问题