Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание многоязычного приложения 
:(
    Опции темы
ur5fcm
  Дата 19.11.2008, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.10.2008
Где: Одесса, Украина

Репутация: нет
Всего: нет



Подскажите как сделать многоязычную поддержку 

Проэктов на Visual Basic 6

спасибо smile 
PM MAIL WWW   Вверх
BorisVorontsov
Дата 19.11.2008, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Ну... Например, можешь хранить строки в ресурсах dll-ек, или в ini-файлах. Конкретизируй как-то вопрос.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
ur5fcm
Дата 19.11.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.10.2008
Где: Одесса, Украина

Репутация: нет
Всего: нет



Цитата(BorisVorontsov @ 19.11.2008,  23:33)
Ну... Например, можешь хранить строки в ресурсах dll-ек, или в ini-файлах. Конкретизируй как-то вопрос.

Уже есть приложение 
Но оно на английском языке
Т.е. меню надписи и т.д.

Хотелось бы сделать переключение на русский язык и обратно

 
PM MAIL WWW   Вверх
Akina
Дата 20.11.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ur5fcm
Дата 20.11.2008, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.10.2008
Где: Одесса, Украина

Репутация: нет
Всего: нет



Цитата(Akina @ 20.11.2008,  00:04)
Начинай переписывать приложение, перенося все появляющиеся на экране надписи (с лейблов, кнопок, заголовков окон и пр.) в процедуру инициализации приложения. А когда будет готово, дополнишь эту процедуру считыванием всех этих надписей из файла, ресурса, получением из DLL или доставанием откуда-нить ещё - на что фантазии хватит.

Какую процедуру  всмысле 

Я не понял 

Насчет ресурсного файла понял 
Но как сделать  smile 

Не много сложно

Очень много форм и надписей 

Тяжело smile 
PM MAIL WWW   Вверх
Akina
Дата 20.11.2008, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(ur5fcm @  20.11.2008,  01:12 Найти цитируемый пост)
Очень много форм и надписей 
Тяжело 

Есть другой вариант - не править проект, а написАть его заново, сразу закладывая мультиязычность.

Цитата(ur5fcm @  20.11.2008,  01:12 Найти цитируемый пост)
Какую процедуру  всмысле 

sub main()


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
BorisVorontsov
Дата 20.11.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Цитата(ur5fcm @  20.11.2008,  00:12 Найти цитируемый пост)
Но как сделать


LoadResString или LoadString. Для загрузки dll используй LoadLibrary/FreeLibrary.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
XOXOJI
Дата 20.11.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: 2
Всего: 2



пожно при инифиализации формы... form_load
читаешь из файла нужные позиции, и меняешь caption на нужные знасения
PM MAIL   Вверх
ur5fcm
Дата 20.11.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.10.2008
Где: Одесса, Украина

Репутация: нет
Всего: нет



Привет Всем

Спасибо

Нашел в инете прогу Jonas ML Support shareware

Она посоздвала часть перевода ресурсный файл 

Дальше сам перевожу 


Использую его MLRuntime.dll
PM MAIL WWW   Вверх
ur5fcm
Дата 21.11.2008, 02:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.10.2008
Где: Одесса, Украина

Репутация: нет
Всего: нет



Цитата(BorisVorontsov @ 20.11.2008,  10:13)
Цитата(ur5fcm @  20.11.2008,  00:12 Найти цитируемый пост)
Но как сделать


LoadResString или LoadString. Для загрузки dll используй LoadLibrary/FreeLibrary.

Да но LoadresString грузит только одну колонку 

допустим английскую 

У меня две колонки  Engl Russian

При использовании MLRuntime.dll 

Незнаю как сделано но взависимости от языка читается колонка

либо русская либо английская

Это сообщение отредактировал(а) ur5fcm - 21.11.2008, 02:22

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Clipboard02.jpg 11,79 Kb
PM MAIL WWW   Вверх
BorisVorontsov
Дата 21.11.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Используй FindResourceEx + LoadResource. И не надо злоупотреблять переносами, твой пост от этого не становится более читабельным.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
ur5fcm
  Дата 21.11.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.10.2008
Где: Одесса, Украина

Репутация: нет
Всего: нет



Цитата(BorisVorontsov @ 21.11.2008,  10:17)
Используй FindResourceEx + LoadResource. И не надо злоупотреблять переносами, твой пост от этого не становится более читабельным.

Можно приложить пример. У меня что-то не получается 
Что подставлять Hmodule lpName? 
Спасибо  smile  
PM MAIL WWW   Вверх
BorisVorontsov
Дата 21.11.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Цитата(ur5fcm @  21.11.2008,  16:09 Найти цитируемый пост)
Что подставлять Hmodule


App.hInstace или тот хендл, что возвращает LoadLibrary.

Цитата(ur5fcm @  21.11.2008,  16:09 Найти цитируемый пост)
lpName


Имя (идентификатор) ресурса
Цитата(MSDN)

If IS_INTRESOURCE(x) is TRUE for x = lpType or lpName, x specifies the integer identifier of the type or name of the given resource. Otherwise, those parameters are long pointers to null-terminated strings. If the first character of the string is a pound sign (#), the remaining characters represent a decimal number that specifies the integer identifier of the resource's name or type. For example, the string "#258" represents the integer identifier 258. 



--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
ur5fcm
  Дата 21.11.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.10.2008
Где: Одесса, Украина

Репутация: нет
Всего: нет



Цитата(BorisVorontsov @  21.11.2008,  18:01 Найти цитируемый пост)
If IS_INTRESOURCE(x) is TRUE for x = lpType or lpName

Спасибо!  Ничего так и не получилось. Функция FindResourceEx передает 0. Так и непонял где брать IS_INTRES....
 MSDN на сайте  читал. Где же пример?. Мне же надо  получить строковое значение а там Long
IS_INTRESOURCE(x) - где брать ее ?
Что подставлять lpType ? Я пробовал App.path & "\MY.RES
IS_INTRESOURCE(x) - это на c++ 
В Visual Basic нет такой АPi функции


Это сообщение отредактировал(а) ur5fcm - 21.11.2008, 23:20
PM MAIL WWW   Вверх
Akina
Дата 21.11.2008, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(ur5fcm @  21.11.2008,  23:55 Найти цитируемый пост)
Функция FindResourceEx передает 0.

Цитата

Return Values
If the function succeeds, the return value is a handle to the specified resource's information block. To obtain a handle to the resource, pass this handle to the LoadResource function. 

If the function fails, the return value is NULL. To get extended error information, call GetLastError. 





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.