![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
Подскажите как сделать многоязычную поддержку
Проэктов на Visual Basic 6 спасибо ![]() |
|||
|
||||
BorisVorontsov |
|
|||
![]() 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] |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
Уже есть приложение Но оно на английском языке Т.е. меню надписи и т.д. Хотелось бы сделать переключение на русский язык и обратно |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Начинай переписывать приложение, перенося все появляющиеся на экране надписи (с лейблов, кнопок, заголовков окон и пр.) в процедуру инициализации приложения. А когда будет готово, дополнишь эту процедуру считыванием всех этих надписей из файла, ресурса, получением из DLL или доставанием откуда-нить ещё - на что фантазии хватит.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
Какую процедуру всмысле Я не понял Насчет ресурсного файла понял Но как сделать ![]() Не много сложно Очень много форм и надписей Тяжело ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Есть другой вариант - не править проект, а написАть его заново, сразу закладывая мультиязычность. sub main() -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 5 Всего: 10 |
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] |
|||
|
||||
XOXOJI |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.9.2008 Репутация: 2 Всего: 2 |
пожно при инифиализации формы... form_load
читаешь из файла нужные позиции, и меняешь caption на нужные знасения |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
Привет Всем
Спасибо Нашел в инете прогу Jonas ML Support shareware Она посоздвала часть перевода ресурсный файл Дальше сам перевожу Использую его MLRuntime.dll |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
Да но LoadresString грузит только одну колонку допустим английскую У меня две колонки Engl Russian При использовании MLRuntime.dll Незнаю как сделано но взависимости от языка читается колонка либо русская либо английская Это сообщение отредактировал(а) ur5fcm - 21.11.2008, 02:22 Присоединённый файл ( Кол-во скачиваний: 7 ) ![]() |
|||
|
||||
BorisVorontsov |
|
|||
![]() 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] |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
Можно приложить пример. У меня что-то не получается Что подставлять Hmodule lpName? Спасибо ![]() |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 5 Всего: 10 |
App.hInstace или тот хендл, что возвращает LoadLibrary. Имя (идентификатор) ресурса
-------------------- [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] |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
Спасибо! Ничего так и не получилось. Функция 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 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
||||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Под VB6 иначе и быть не может, вообще-то... ошибка давно сброшена промежуточными вызовами. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
И что делать Что подставить вместо LpName Имя файла ресурсного или нет hl = FindResourceEx(App.hInstance, RT_STRING, App.path & "\ur5fcm_log.RES", ml_CurrentLanguageId) |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 5 Всего: 10 |
Юзать Err.LastDllError Модератор: удалено Это сообщение отредактировал(а) Akina - 23.11.2008, 20:50 -------------------- [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] |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
||||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 5 Всего: 10 |
Ты что передавал в качестве hModule? -------------------- [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] |
|||
|
||||
ur5fcm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 1.10.2008 Где: Одесса, Украина Репутация: нет Всего: нет |
||||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 5 Всего: 10 |
Тьфу, не заметил строки кода в посте неизвестно_какой_номер (и почему на винграде посты не нумеруются?). В качестве lpName передавай строку "#_тут_ID_строки".
-------------------- [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] |
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |