Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программа на разных языках

9.7K
14 августа 2008 года
SpeedShifter
67 / / 07.10.2007
Подскажите как в общем случае создаються проги с разными языками (перевод интерфейса, строк, сообщений)?
Где можно об этом почитать? Разве нет какого либо общепризнанного способа?
Все что мне пока пришло в голову- это использование LoadString, в общем способ не плохой, но тогда
интерфейс надо создавать не в ресурсе а во время выполнения подгружая строку соответствующего языка!
288
14 августа 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: SpeedShifter
Все что мне пока пришло в голову- это использование LoadString, в общем способ не плохой, но тогда
интерфейс надо создавать не в ресурсе а во время выполнения подгружая строку соответствующего языка!



Почему же? Интерфейс можно создавать также в ресурсах, а во время исполнения просто изменять надписи (как вариант).

Если интересно, вот статья из RSDN на эту тему
http://www.rsdn.ru/article/devtools/ResourceOnly.xml

1.9K
14 августа 2008 года
max_dark
256 / / 11.11.2005
Под *nix системами используется библиотека Gettext, которую можно применять и в программах под Windows
9.7K
14 августа 2008 года
SpeedShifter
67 / / 07.10.2007
Мне бы хотелось обойтись без DLL (прога без установки).
9.7K
14 августа 2008 года
SpeedShifter
67 / / 07.10.2007
В общем то можно обойтись и таким ресурсным файлом:
 
Код:
STRINGTABLE
BEGIN  
    IDS_LANGUAGE            "*English*Русский*Українська*"
    IDS_WSAStartErr_EN      "WSA start error!"
    IDS_WSAStartErr_EN+1    "Ошибка инициализации WSA! "
    IDS_WSAStartErr_EN+2     "Помилка ініціювання WSA! "
END

т.е IDS_LANGUAGE содержит доступные языки и порядок их переводов
потом идет основной англ. а остальные смещены на 1
(в Resource.h достаточно определить #define IDS_WSAStartErr_EN 105, идентификатор след строки на англ. должен быть 105+кол-во языков)
тогда в проге достаточно LoadString с параметром IDS_WSAStartErr_EN+Lang_b , где Lang_b - цифра указывающая смещение выбранного языка относительно основного (англ.).
288
14 августа 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: SpeedShifter
Мне бы хотелось обойтись без DLL (прога без установки).



Можно и без Dll. Но тогда при добавлении языка приложение придется компилировать заново. Хотя если задача расширения количества языков не ставится, тогда это не проблема.

1.9K
14 августа 2008 года
max_dark
256 / / 11.11.2005
gettext можно использовать как DLL и как статически прилинкованную либу.
При этом добавление языка не ребует перекомпиляции.
12K
16 августа 2008 года
lifs
163 / / 06.09.2007
по-моему, самый простой и гибкий способ это подгрузка строк из текстового файла. Тогда можно легко переводить на другие языки, можно лего добавлять/удалять без изменения самой программы. В простом случае файл может выглядить, например, так:
resID1=Выход
resID2=Отмена
и т.д.
Более лучшим решением будет использование xml.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог