![]() |
|
Модераторы: Akina |
![]()
|
|
| alexandr10 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2006 Где: Украина Харьков Репутация: нет Всего: нет |
Захотел вставить в свою программу на VB6 перевод интерфейса (чтобы в зависимости от локализации винды надписи были на русском, английском, украинском языках). Создал res-файл, забил в него текст. Вставил в программу вместо простых строк текста обращения к этому файлу с помощью функции loadressting.
Получившаяся в результате данных действий программа при запуске кода встроенным интерпретатором VB работает как надо - правильно выбирает текст при разных локальных настройках, но, к сожалению, откомпилированный exe-шник выдаёт текст только на русском языке (нет ни украинского ни английского). Подскажите пожалуйста, в чем тут дело и как исправить данную ситуацию. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Не видя кода, сказать невозможно... а телепаты у нас в отпуске. Найти источник проблемы. Начать например с расстановки контрольных точек и отслеживания выполнения участков кода и значений переменных (сброс в текстовый лог и его анализ). -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| alexandr10 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2006 Где: Украина Харьков Репутация: нет Всего: нет |
Спасибо за ответ.
Ничего такого секретного в коде, конечно же, нет. Вот процедура с которой происходит загрузка программы и сама процедура загрузки ресурсов.
Программу целиком, думаю приводить здесь не стоит, однако она открыта и я могу выслать её код целиком любому. Проблема, всётаки, как мне кажется не в коде программы – еще раз подчёркиваю в итрепретаторе VB6 программа работает как следует – происходит автоматический выбор текстовых переменных, согласно языковым настройкам винды, а вот после компиляции происходит выборка текстовых переменных только на русском языке. Это сообщение отредактировал(а) alexandr10 - 19.4.2006, 14:08 |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Сделайте следующее:
и посмотрите выполняется ли вообще процедура (появляется ли файл), выполняется ли переприсвоение свойства... если да, попробуйте в конец Form_Load добавить что-нить типа Form_Repaint... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| alexandr10 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2006 Где: Украина Харьков Репутация: нет Всего: нет |
Спасибо за совет.
Сам я обычно пользуюсь для «дебагигнга» выводом MsgBox с необходимой переменной в нужном месте, однако такой способ мне кажется более культурным, хоть текст кода процедуры пришлось немного исправить, чтобы она нормально записывала протокол в файл:
Однако результат не сильно утешает, откомпилированная программа (в отличии от запускаемой из VB6) отказывается использовать текстовые переменные иных языков, кроме русского. Вот текст файла Debug.TXT 1-я часть соответствует запуску из VB6 , а 2-я откомпилированной программы (оба запуска происходили с украинскими локальными настройками):
Не помогло также присвоение свойству автоперерисовки формы значения “истина“. Буду ещё ждать Ваших предложений по поводу утранения этого бага. |
||||
|
|||||
| boevik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Предлагаю отказаться от автоматического выбора языка по локальным настройкам.
1) Когда то такую же проблему не решил 2) Отказ от зависимости локальных настроек, позволяет менять язык по усмотрению пользователя. А для этого создается переменная BasisLanguage которй присваивается значение с шагом, к примеру, 1000 и тогда BasеLanguage = 0 соотвествует английскому, BasеLanguage = 1000 - русский, BasеLanguage = 2000 - украинский и т.д. Соотвественно в res файле надо создать записи соотвественно коду и языку К примеру:
В коде
-------------------- Никогда не говори никогда |
||||
|
|||||
| alexandr10 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2006 Где: Украина Харьков Репутация: нет Всего: нет |
Спасибо.
Однако у меня нет пока желания доверять пользователю выбор языка интерфейса – ведь неизвестно на каком языке делать этот «выбор». Один мой товарищ (программист-философ), узнав о моей проблеме, посоветовал выяснить то, каким образом интерпретатор VB6 узнаёт локальные настройки компьютера (по всей видимости, он получает их из реестра через какую-то WinAPI-функцию) и как он ими распоряжается? Буду готов с благодарностью узнать ваше мнения на этот счёт. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Однозначно на английском. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Простите, а кому как не пользователю решать на каком языке работать. Выбор языка так же как и остальные элементы UI надо переводить на язык интерфейса. -------------------- Никогда не говори никогда |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Посмотри вот тут http://www.activevb.de/tipps/vb6tipps/tipp0277.html Если надо что-то перевести - спрашивай... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| alexandr10 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2006 Где: Украина Харьков Репутация: нет Всего: нет |
Большое спасибо, cardinal.
Как мне кажется, предложенный Вами метод соответствует моему вопросу в наибольшей степени. Из предложенного Вами кода я собираюсь использовать значение соответствующее "Sprach ID" (если я всё правильно понял – оно даёт ID языка по умолчанию из локальных настроек винды, если нет, то, пожалуйста, поправьте меня). Однако, данный пример соответствует только считыванию локальных данных винды. У меня еще осталась вторая часть вопроса – как производить выборку строчных переменных из res-файла, если они принадлежат разным языкам, но имеют одинаковый номер? Способ, предложенный boevik мне понятен (да и был известен ранее). |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Я особо не всматривался, но похоже на то... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| alexandr10 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2006 Где: Украина Харьков Репутация: нет Всего: нет |
Спасибо всем тем, кто откликнулся на мой вопрос. Отдельное спасибо, cardinal, благодаря которому удалось обойти баг в VB6 (к сожалению лишь обойти, но не устранить его).
Результат работы откомпилирован и лежит по адресу: http://alex-dr-10.narod.ru/DominoX.2.02.zip |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |