我目前遇到一个错误,即我的应用程序的语言无法设置为不同于系统默认语言的语言。我使用以下代码来设置 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
变量的脚本来调用您的程序。
关于c# - Mono C# 设置 CultureInfo 在 Windows 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29152289/