Mono C# Set CultureInfo 无法在 Windows 上工作

Mono C# Set CultureInfo not working on Windows

我目前遇到一个错误,即我的应用程序的语言无法设置为与系统默认设置不同的语言。我使用以下代码设置 CultureInfo:

Catalog.Init("AudioCuesheetEditor", Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + MainClass.CONST_STR_LOCALE_PATH));
[...]
//Set the locale
log.debug("CultureInfo.CurrentCulture = " + CultureInfo.CurrentCulture);
if (Program.getInstance().getObjOption().getStrSelectedLanguage() != null)
{
    log.debug("Program.getInstance().getObjOption().getStrSelectedLanguage() = " + Program.getInstance().getObjOption().getStrSelectedLanguage());
    Thread.CurrentThread.CurrentCulture = new CultureInfo(Program.getInstance().getObjOption().getStrSelectedLanguage());
    if (Environment.OSVersion.Platform == PlatformID.Unix)
    {
        //Mono Linux hack
        Environment.SetEnvironmentVariable("LANGUAGE", Program.getInstance().getObjOption().getStrSelectedLanguage().Replace("-", "_"));
    }
}
Application.Init();
[...]
Application.Run();

这在 linux 上运行完美,但不适用于 Windows 上的 gtk#。 CultureInfo 已更改,但语言没有更改。有什么想法吗?

我得到的字符串代码如下:

Catalog.GetString("general ready")

我不确定,如何找到错误以及错误是什么。任何可以提供帮助的人,提前致谢 ;)。

完整代码可以在这里找到:http://sourceforge.net/p/audiocuesheet/code/HEAD/tree/trunk/src/AudioCuesheetEditor/MainClass.cs

斯文

由于国际化基于 GNU gettext,我的假设是 windows 实现与 unix 实现略有不同,因此 LANGUAGE 变量在启动时读取,然后再执行任何代码执行。我能想到的唯一解决方法是使用设置 LANGUAGE 变量的脚本调用您的程序。

我发现,在 windows 上更改环境变量 "LANG" 是可行的。所以如果我设置 "LANG=en" 应用程序以英语翻译开始。