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

Тема в разделе "Visual Basic", создана пользователем IvanAbramov, 28 фев 2010.

  1. IvanAbramov

    IvanAbramov Гость

    Добрый день.

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

    Заранее спасибо.
     
  2. Vlanib

    Vlanib Гость

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

    IvanAbramov Гость

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

    Vlanib Гость

    Ну создаешь процедурку, в которой присваиваешь всем Caption и строкам и т.д. соответствующую строку из ресурсов:
    Код (LotusScript):
    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:
    Код (LotusScript):
    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
    Подробнее уже некуда... ;)
     
Загрузка...

Поделиться этой страницей