2011-11-17 70 views
0

我遇到了本地化問題 - 它有時會檢索不正確的值。這裏是我的情況:使用與OS語言不同的默認語言時本地化錯誤

在每個程序集中,我將NeutralResourcesLanguage設置爲en-US。
可用資源列表是:default(english)fr,de。

所以我英語OS我選擇任何語言 - 一切都很好(的UICulture設置爲英語,法語或DE和文化分別爲EN-US,DE-DE或FR-FR) 。

但是,當我有德國OS並選擇英語(的UICulture是EN和文化爲en-US) - 一些字符串都在德國。

另外,如果我離開Thread.CurrentThread.CurrentUICulture ==「德」和Thread.CurrentThread.CurrentCulture =「EN-US」,那麼一些文字會英語..

任何解釋和解決辦法呢?

回答

0

我發現問題 - 我使用的DependencyProperty默認值如PropertyMetadata(Resources.Text)。並且由於DP是靜態的,它在使用系統語言進行初始化之前,在ApplicationStartup處理程序中應用了實際的本地化設置。

0

你需要使用適當的語言代碼,在你的情況下,這些將是enfrde

如果沒有必要,請不要使用專門的語言代碼,因此如果您只有一個法語翻譯,請只使用fr

只有在必要時才應使用更專業的。

更新:在Windows上,您無法完全控制從OS獲得的消息的語言。通常他們會使用您當前的線程語言環境,但有時他們會使用操作系統默認語言,您無法對此做任何事情。只需記錄用戶的行爲。

+0

呃,對不起?我不認爲我理解你是對的 - 我正在使用適當的語言和UICultures,我不是嗎? – Walkor

+0

我更新了答案,來自操作系統的字符串本地化並不完全在您的控制之下。 – sorin