簡體   English   中英

Mono C#設置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”,則應用程序將以英語翻譯開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM