2013-11-21 67 views
1

我在Windows 7(俄羅斯本地化)的Delphi 2010中開發我的項目。當我開始使用Windows 8(英語)並將我的項目移至Delphi XE3時,我看到了英文標準對話框(如按鈕,MessageDlg頭文件和系統錯誤)(必須使用俄語)。不工作區域設置ID

查看項目 - 選項 - 版本信息 - 語言,並在「調試配置 - 32位Windows平臺」中將區域設置ID看作「英語(美國)」。

看其他配置,並在三個頭條看到像「所有配置 - 所有平臺」(其中禁用所有元素)

區域設置ID是「俄羅斯(俄羅斯)」,並在所有的字幕「的32位Windows平臺「區域設置ID是」英語(美國)「。

好的,我將所有配置的區域設置ID更改爲「俄羅斯(俄羅斯)」。但它不起作用 - 所有的信息都是英文的。在構建的exe文件Language = Russian(Russia)的屬性中。 在俄羅斯本地化的Windows 7,Vista上測試它。

+0

將您安裝的Windows 7切換到英語語言環境,並查看操作系統標準對話框是OS標準英語還是非標準俄語。 如果你想要一個特殊的應用程序特定的消息,然後使用VCL消息對話框功能+ RTL翻譯到俄羅斯。 順便說一下,你在運行時是否嘗試過'GetThreadLocale'?將SetThreadLocale改爲 –

回答

2

版本信息中的區域設置ID與用於標準對話框的語言無關。對於不同的語言環境,甚至可以在版本信息中包含多個條目。

用於標準對話框的語言取決於當前Windows用戶的語言設置。在此用戶帳戶下啓動的所有應用程序都是相同的,並且與應用程序本身內部使用的語言無關。

+0

嗎? –

+1

@Arioch'The,那可能是,但我沒有嘗試。通常我會嘗試在這種情況下尊重用戶設置。畢竟,這就是爲什麼它首先是用戶設置。 –

+0

+1,但我會將其聲明爲「用於標準對話的語言取決於OS的當前用戶界面語言」。 –

0

Delphi源代碼中有一個consts.pas/consts.dcu單元,它包含標準對話框的所有翻譯。您可以複製該文件並將其添加到您的項目中。您可以進行更改並構建您的項目。 確保原始的consts.pas/consts.dcu不可用(重命名/移動它們)。