2013-11-21 3 views
1

Я разрабатываю свой проект в Delphi 2010 на Windows 7 (русская локализация).Не работает Язык ID

Когда я начал работать с Windows 8 (английский) и перенес свой проект в Delphi XE3, я увидел стандартные диалоги (например, кнопки, заголовки MessageDlg и системные ошибки) на английском языке (должен быть на русском языке).

Посмотрите на проект - Опции - Информация о версии - Язык и увиденный идентификатор локали как «Английский (США)» в «Конфигурация отладки - 32-разрядная платформа Windows».

Посмотрите другие конфигурации, и увидел в трех заголовков, как «Все конфигурации - Все платформы» (где все элементы инвалидов)

Locale ID является «Русский (Россия)» и во всех субтитров «32-разрядные платформы Windows, «Идентификатор локали -« Английский (США) ».

ОК, я изменил во всех конфигурациях локальный идентификатор на «Русский (Россия)». Но это не работает - все сообщения на английском языке. В свойствах построенного exe-файла Language = Russian (Россия). Протестировано на Windows 7, Vista с русской локализацией.

+0

Переключите установленную Windows 7 на английский язык и посмотрите, будут ли диалоги OS-стандарта стандартными для ОС или английскими или нестандартными. Если вам нужны специальные сообщения для конкретного приложения, используйте функции диалога VCL-сообщений + перевод RTL на русский язык. Кстати, вы пробовали 'GetThreadLocale' при запуске? –

ответ

2

Идентификатор Locale в информации о версии не имеет ничего общего с языком, используемым для стандартных диалогов. Вы даже можете иметь несколько записей в информации о версии для разных локалей.

Язык, используемый для стандартных диалогов, зависит от настроек языка для текущего пользователя Windows. Это то же самое для всех приложений, запущенных под этой учетной записью пользователя, и не зависит от языка, используемого внутри самого приложения.

+0

может изменить SetThreadLocale? –

+1

@ Arioch'The, может быть, но я не пробовал. Обычно я стараюсь уважать настройку пользователя в таких случаях. В конце концов, именно поэтому это пользовательская настройка в первую очередь. –

+0

+1, но я бы сказал, что «язык, используемый для стандартных диалогов, зависит от языка пользовательского интерфейса ОС». –

0

В источнике Delphi имеется consts.pas/consts.dcu, который содержит все переводы стандартных диалогов. Вы можете сделать копию этого файла и добавить его в свой проект. Вы можете внести свои изменения и построить свой проект. Убедитесь, что исходный consts.pas/consts.dcu недоступен (переименовать/переместить их).

Смежные вопросы