Можно ли локализовать Vb6 программу на много языков?

  • Автор темы IvanAbramov
  • Дата начала
I

IvanAbramov

#1
Добрый день.

В чем могут быть основные трудности локалзиации интерфейса программы на VB6?
Насколько я вижу, на два языка (Русский и Английский) локализовать интерфейс нет ни каких проблем.
А, если добавить еще и Украинский, Азербайджанский ...
Как вообще быть с локализацией не юникодовских программ VB6?

Заранее спасибо.
 
V

Vlanib

#2
Самый простой способ использовать текстовые строки в ресурсе с каким нибудь константным сдвигом. Например строки с 100 по 200 на русском, с 200 до 300 на украинском с 300 до 400 на английском и т.д. И реализовать сдвиг через переменную: txt = LoadResString(100 + iLangShift). Соответственно iLangShift у тебя будет при русском = 0, при украинском - 100, при англ = 200 и т.д. Я делал так.
 
I

IvanAbramov

#3
А, если хранить все строки в БД (в mdb-файле), где каждому языку было бы отведено отдельное поле, разве это не буедт удобнее чем файл-ресурсов? Вопрос, вообще говоря не про то или иное удобное хранение, а по реализации...
Как все будет выглядеть в лицевом интерфейсе для пользователя? Ведь, насколько мне известно, все стандартные элементы управления VB6 не поддерживают UNICODE. Т.е. нужно как то на лету менять шрифт или что???
Разъяснил бы кто поподробнее...
 
V

Vlanib

#4
Ну создаешь процедурку, в которой присваиваешь всем Caption и строкам и т.д. соответствующую строку из ресурсов:
Код:
Public Sub Text_Init()
Command_Button1.Caption = LoadResString(100 + iLangShift)
Label1.Caption = LoadResString(101 + iLangShift)
txtMsgBox = LoadResString(102 + iLangShift)
UserForm1.Caption = LoadResString(103 + iLangShift)
и т.д.
End Sub
И в событии преключения языка вызываешь эту процедуру с соотв. iLangShift:
Код:
Sub optButton_Click(Index as integer)
Select Case Index
Case 0: iLangShift = 0	  'Выбран русский 
Case 1: iLangShift = 100  'Выбран украинский
Case 2: iLangShift = 200  'Выбран английский
End select
Call Text_Init
End Sub
Подробнее уже некуда... ;)