2010-02-24 42 views
1

我剛開始第一次編寫多語言應用程序。我已經閱讀了關於語言資源文件的概念,並且我想到了我的主要想法。我試圖實現它,並立即發現問題:翻譯問題 - 默認顯示錯誤的語言

我已經輸入默認語言字符串到一個resx文件,然後添加另一個資源文件(例如:UIStrings.en.resx)。由於我的公司不在英格蘭/其他英語國家,我們的應用程序主要是用我們的語言編寫的。因此默認語言是我們的語言(斯洛文尼亞語)。

當我添加.en.resx文件並插入正確的翻譯並運行程序時,它現在顯示英文文本。我想那是因爲

CultureInfo.CurrentUICulture = "en-US" 

CultureInfo.Currentculture = "sl-SI" 

我想這是因爲我運行Windows的英文版本(雖然區域選項所有的屬性都設置正確,以斯洛文尼亞設置)。

我怎樣才能使應用程序顯示在用戶的語言,而不是安裝的Windows語言的字符串?

回答

1

我發現了這個博客文章,回答我的問題。

如果別人與此掙扎,這裏是你怎麼做:

所以,如果你使用的是最常見的 Windows版本(簡體版), 的你被卡住了「EN -US「 文化;因此,您的應用程序將 始終使用您的英語資源。在 爲了減輕這一點,你可以在你的 應用程序啓動時執行一個小竅門 。您可能會誤導您的應用程序 以查看CurrentCulture屬性而不是 CurrentUICulture屬性。在 應用程序啓動時,你可以寫 是這樣的:

Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 

這樣,你的應用程序將使用 你的全球化設置而不是 您的默認窗口本地化 設置。您的應用程序將本地化到您的全球化 語言和文化 。如果更改 控制 面板中的區域設置,則應用程序語言和 文化將自動更改。

+0

這正是我告訴你的,我所得到的是-1 :) –

+0

@Thomas:不,你告訴我要將它編碼爲我偏好的語言(文化信息)。我不想修復它,也不想手動將它存儲在任何地方。我希望應用程序在Windows區域選項中使用區域設置。 –

+0

對不起,但你的問題是*我如何讓應用程序顯示用戶語言的字符串,而不是安裝的Windows語言?*,所以我認爲你不想使用任何Windows選項。但是無論你爲什麼工作的人,我不在乎。 –