Multilanguage Interface. Кто делал?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Multilanguage Interface. Кто делал?

Сообщение MEMBER » 08.06.2003 (Вс) 14:30

Интересует информация о реализации ML, примеры и т. д.
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 08.06.2003 (Вс) 17:44

А Я в свою очередь спрошу:

Как из текста программы выдрать все строковые переменные в файл ресурсов? Может AddIN какой нить?

А то MultiLAng Надо из готовой проги делать((((
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

TRUST
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 192
Зарегистрирован: 22.08.2002 (Чт) 20:24
Откуда: Orel

Сообщение TRUST » 08.06.2003 (Вс) 23:26

2 Sebas:
Если нужны просто значения переменных, то попробуй disassembler'ом.
Кто юзал мой аккаунт и весь его выюзал?!!

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 09.06.2003 (Пн) 10:29

Попробовать ресурс хакером, он, кажется, умеет патчи делать.
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

moderator
Модератор
Модератор
 
Сообщения: 1896
Зарегистрирован: 10.12.2001 (Пн) 18:11
Откуда: Украина, Харьков

Сообщение moderator » 09.06.2003 (Пн) 12:31

ИМХО - плохая идея: использовать какой-нибудь редактор ресурсов для создания многоязыковой поддержки :shock:

Это все должно делаться программно из кода самого приложения.
Модератор
http://www.vbstreets.ru / moderator@vbstreets.ru

... Почетные награды: [*], [+], [!]. Все еще впереди...

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 09.06.2003 (Пн) 12:47

У человека уже готовая программа. То есть ехе, чужой. Как ещё можно ввести поддержку языков?
-------
Или нет?
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 09.06.2003 (Пн) 15:24

Незнаю... но у меня ResourceHacker чтото не дает править надписи.
Вообще в нем чтото про Delphi написано....
И есть подозрение что если тока у тебя все надписи в ресурсе.
Максимум иконку у проги.
Но тут както вышла такая ж.
У меня написан сервис, и так как форма мне не нужна, а иконку поменять хочется, я правил ее из RH.

Но однажды после очередного апдейта, прога после патча стала вылетать. Пришлось вставить невидимую форму... глюка более небыло.
Moderator VBStreets
---------------------------

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 09.06.2003 (Пн) 15:58

*просяще* А может по теме кто-что скажет?
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

DiT
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 10.02.2003 (Пн) 23:20
Откуда: Ukraine

Я уже спрашивал на эту тему недавно

Сообщение DiT » 09.06.2003 (Пн) 22:37

Никто мне ничего не посоветовал :( Сам колупаюсь

Что именно ты хочешь сделать? Может чем помогу

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 10.06.2003 (Вт) 0:01

Конкретно меня интересует уменьшение объёма кода, отвечающего за инициализацию label'ов, баттонов етс.
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 10.06.2003 (Вт) 9:24

Конкретно по ML я ни чего не знаю, но вот родилась у меня идея, и решил я ей подилиться:

Допостим у тебя n языков, и ты номер нынее используемого языка хранишь в переменной nL; в файле ресурсов данные организованы просто в одном языке, но немного хитро, т.е. когда ты инициализируешь интерфейс ты пишешь так: (...).Caption = LoadResString(nL*S + k + c), где c - количество строк, которые не переводяться (т.е. постоянные для всех языков), nL - как уже говорилось номер инициализированного языка (начиная с 0 и далее), S - общее количество строк (для каждого языка одинаковое, я надеюсь), k - номер конкретно строки.

Пример:

1101 Далее
1102 Готово

...
...

2101 Next
2102 Finish

...
...

3101 ...
3102 ...

для инициализации названия кнопок пишешь:

Button1.Text = LoadResString(nL*1000 + 1 + 1100)

Для русского nL = 0
Для английского nL = 1
Для ... nL = 3

Вот собственно и вся моя идея

Удачи

DiT
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 10.02.2003 (Пн) 23:20
Откуда: Ukraine

Сообщение DiT » 10.06.2003 (Вт) 11:43

А зачем морочить голову? Может проще все сделать? В файле ресурсов добавляешь нужную кодовые страницу. Заполняешь ее текстом на нужном языке.
При запуске проги, считывается именно та кодовая страница, которая стоит в системе.

У меня загвоздка в другом...а именно в написании в файле ресурсов текста со сложным изображением(арабский, китайский, корейский, японский, etc). Он у меня туда не копируется через буфер...
Арабский язык например я даже добавить в систему не могу...нет в списке языков :(
Сижу жду пока привезут арабскую версию Windows...

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 11.06.2003 (Ср) 9:09

ДРузья************************************************

Прошу прошения, если меня кто то не так понял!

Я имею ввиду Исходники Готовой Программы
Дело в том, что листинг программы настолько огромен, что выдирать все строковые переменные руками и заменять кодом получения из ресурс файла не представляется возможным, как из соображения времени, так с точки зрения возникновение ошибок.

Я имел ввиду какой-нить Аддон который смотрит код, и все переменные индекирует и помещает в ресурс файл, а исходный код заменет строкой, напрмер,LoadResString(<номер переменной>)

Я надеюсь, понятно объяснил?

Мож кто подскажет, хотябы, как получить все переменные из кода? А дальше я б сам всё сделал бы,ну... и мог бы выложить для все.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 11.06.2003 (Ср) 9:36

DiT писал(а):А зачем морочить голову? Может проще все сделать? В файле ресурсов добавляешь нужную кодовые страницу. Заполняешь ее текстом на нужном языке.
При запуске проги, считывается именно та кодовая страница, которая стоит в системе.


Известен мне один двуязычный проект, в котором сначала создали 2 ресурсных файла и сгенерили соответственно 2 dll. А потом в проекте подгружали нужную.

И в MSDN есть похожее описание в статейке "Create and Call a String Resource in a DLL with a Specific Locale ID". Там при создании res-файла указывается код языка, тоже генерится отдельная dll для каждого языка, а потом уже в основном проекте с помощью GetLocaleInfo получают кодовую страницу и грузят соответствующую dll.

DiT, ты об этом способе говорил?

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 11.06.2003 (Ср) 10:24

Я не стал в рес делать поддержку. Обычный текстовый. Чтобы пользователи могли редактировать.
Вопрос именно по присвоению некоторому лэйблу значения из файла. Как этот код уменьшить? Про азбучные - массив однотипных контролов, не пишите. Хотелось бы узнать как получить во время выполнения список всех контролов на форме и присвоить им (caption'am) определённые значения из файла?
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 11.06.2003 (Ср) 13:42

MEMBER писал(а):Я не стал в рес делать поддержку. Обычный текстовый. Чтобы пользователи могли редактировать.
Вопрос именно по присвоению некоторому лэйблу значения из файла. Как этот код уменьшить? Про азбучные - массив однотипных контролов, не пишите. Хотелось бы узнать как получить во время выполнения список всех контролов на форме и присвоить им (caption'am) определённые значения из файла?


в INI-файл
разделы - это имена контролов
ключи - свойства

в цикле проходишь по контролам, определяешь их имена и грузиш соответствующие свойства из файлика.

эт так примерный набросок

Код: Выделить всё
' проходимся по всем контролам на форме
Dim i As Integer
Dim sControlName As String

For i = 0 To Me.Controls.Count - 1
    sControlName = Me.Controls(i).Name
    Select Case TypeName(Me.Controls(i))
    Case "label", "commandbutton"
        Me.Controls(i).Caption = читаем из INI раздел sControlName, ключ Caption
        ' можно еще ToolTip's, или еще что-то 
    Case "и т.д."
       
    End Select
Next i

Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 128

    TopList