![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| devmstr |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 28.4.2004 Где: Ukraine Репутация: нет Всего: 11 |
Как мне казалось, тема это должна была подниматся наверное сотню раз, но поиск по слову "локализация" ничего конкретного не дал.
Насколько я знаю можно сделать несколько файлов ресурсов и подгружать тот, который содержит нудный язык. Но как это сделать? Да и наверно лучше сделать один файл со всеми ресурсами(в смысле диалогами и т.д.) и отдельно наклипать ресурсов с StringTable из которых уже и будут подгружатся Captions и строки ошибок. Данный способ хоть и более трудоемкий в начале, но мне кажется может уберечь от доп. работы в будущем, если прийдется менять какой-то диалог. Я в правильном направлении двигаюсь, или я ошибаюсь, насчет технологии локализации??? Если в правильном, то как мне выбирать какой ресурс подгружать? Как выбрать ресурс? -------------------- Think different ©Steve Jobs ![]() |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
смутно догадываюсь, что ты хочешь распределить ресурсы в нескольких файлах по языкам и загружать их в зависимости от "локального" положения?
Если дело только в языках, то проще всего сделать не ресурсовый текстовый фал, в котором будут хранится названия кнопок, диалогов и тд. на крайняк загоняешь в стрингтейбл в одинаковом порядке разные языки и используешь сдвиг при загрузке в зависимости от выбранного языка. Вобщем, если чего, то разъясняй |
|||
|
||||
| devmstr |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 28.4.2004 Где: Ukraine Репутация: нет Всего: 11 |
Была такая идея, но хотелось попробовать данный способ. Текстовый файл, это конечно хорошо, только я не хотел таскать за собой отдельные файлы... -------------------- Think different ©Steve Jobs ![]() |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
а в чем тогда проблема? сохраняй все в ресурсах.
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Вот при первой загрузке приложения выбирается какой язык будет использоваться, а как менять язык в запущенном приложении, по выбору в настройках приложения ???
Будем исходить из того что все сообщения храняться в ресурсах, имеются 2 языка английский и русский. STRINGTABLE LANGUAGE 0, 0 { 1000, "Cannot create file %s" 1001, "Cannot open file %s" } Вопрос что делать потом ? загружать Строки в текстовые переменные через LoadString, а потом уже работать с текстовыми переменными. Возникает второй вопрос, как не перезапуская приложение можно сменить язык в нем, чтоб у всех кмпонентах поменялся язык отображения ? при условии что я перед этим загружу в текстовые переменные новый язык ? Реализацию MFC не предлагать, интересует метод для полностью API приложения. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: нет Всего: 8 |
Меня тоже интересует данный вопрос. Присоединяюсь к автору.
|
|||
|
||||
| Dem_max |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Смысл смены языка на лету примерно такой, хоть он мне и не нравиться, создается класс туда во время создания кнопок, контролов и т.д помещяется хэндл этого контрола, и другая инфа, этой функцией AddItem(......), когда нужно переключить язык вызывается Translate(int LangID).
Посчитал что это не для меня, поскольку всетаки у меня приложение состоит из диалоговых окон то они запускаясь сами устанавливают нужный текст
Вот функции для установки текста находящегося в ресурсах и взятие текста из ресурсов (String Table)
String Table имеет такой формат для 2 языков, различия между языками в 1000, номер строки рассчитывается так UINT CtrlStringID = CtrlID + 10000 + LangID*1000;
Для диалогов которые не закрывается, делается функция SwitchLang которая занимается переключением языка на ходу, при этом в этих диалогах не задается текст контролов, а при завершения создания диалога вызывается функция сменить язык.
Примерно так, более изящьного решения никто не подсказал. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |