STRINGTABLE
BEGIN
IDS_LANGUAGE "*English*Русский*Українська*"
IDS_WSAStartErr_EN "WSA start error!"
IDS_WSAStartErr_EN+1 "Ошибка инициализации WSA! "
IDS_WSAStartErr_EN+2 "Помилка ініціювання WSA! "
END
Программа на разных языках
Где можно об этом почитать? Разве нет какого либо общепризнанного способа?
Все что мне пока пришло в голову- это использование LoadString, в общем способ не плохой, но тогда
интерфейс надо создавать не в ресурсе а во время выполнения подгружая строку соответствующего языка!
Цитата: SpeedShifter
Все что мне пока пришло в голову- это использование LoadString, в общем способ не плохой, но тогда
интерфейс надо создавать не в ресурсе а во время выполнения подгружая строку соответствующего языка!
интерфейс надо создавать не в ресурсе а во время выполнения подгружая строку соответствующего языка!
Почему же? Интерфейс можно создавать также в ресурсах, а во время исполнения просто изменять надписи (как вариант).
Если интересно, вот статья из RSDN на эту тему
http://www.rsdn.ru/article/devtools/ResourceOnly.xml
Gettext, которую можно применять и в программах под Windows
Под *nix системами используется библиотека
Мне бы хотелось обойтись без DLL (прога без установки).
Код:
т.е IDS_LANGUAGE содержит доступные языки и порядок их переводов
потом идет основной англ. а остальные смещены на 1
(в Resource.h достаточно определить #define IDS_WSAStartErr_EN 105, идентификатор след строки на англ. должен быть 105+кол-во языков)
тогда в проге достаточно LoadString с параметром IDS_WSAStartErr_EN+Lang_b , где Lang_b - цифра указывающая смещение выбранного языка относительно основного (англ.).
Цитата: SpeedShifter
Мне бы хотелось обойтись без DLL (прога без установки).
Можно и без Dll. Но тогда при добавлении языка приложение придется компилировать заново. Хотя если задача расширения количества языков не ставится, тогда это не проблема.
При этом добавление языка не ребует перекомпиляции.
resID1=Выход
resID2=Отмена
и т.д.
Более лучшим решением будет использование xml.