0

我有一个以前在 Visual Studio Express 2010 中开发的应用程序。它使用本地化的 winforms 和代码中使用的 resx 资源。

在同一台计算机上使用 Visual Studio Express 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);

我已经验证 lang 是正确的,但也使用

        System.Threading.Thread.CurrentThread.CurrentUICulture = lang;
        System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang.Name);

其次是 MyLangResxFile.MyStringResource 的使用。返回的字符串仍然只是默认的。

Visual Studio Express 2010 - 2012 之间的 resx 本地化支持是否存在更改或限制?

更新: 我注意到如果使用 3.5 中的 msbuild.exe 编译本地化工作,但使用 4.0 时......如上所述,本地化缺失。

4

1 回答 1

0

很抱歉“回答”这个问题,但评论不起作用。我只想问你是否可以同时解决这个问题,因为我有完全相同的问题。

我什至注意到只有在选择目标框架 < 4.0 时才会出现此问题。对于目标框架 4.0 和 4.5,本地化在 VS 2010 中和以前一样工作......

于 2012-11-23T09:54:21.503 回答