|
|
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
Я хочу организовать поддержку нескольких языков в программе. Во-первых, как правильно организовывать меню: сделать несколько на разных языках и подключать одно из них или сделать одно - и в нем переименовывать значения всех строк при изменении языка? И второе: значения переменных лучше хранить в .h-файле или .txt? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 15:48 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
Правильнее одно меню, заполняемое функцией Код: plaintext Код: plaintext Подробней об этом подходе здесь Qt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 16:00 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
А мы делали так: для каждого языка генерилась dll-ина с ресурсами. Все строки лежали в одном файле(rc), для удобства редактирования. Все идентификаторы строк в другом(h). Потом была функция, которая из dll-ины дёргала по идентификатору строчки. Dll-ину она определяла по установкам программы. Смена языка требовала перезагрузки программы (хотя я бы смог сделать и без). У нас таким образом, были локализованы все меню, все MessageBox, все базовые строки в диалогах, вобщем всё, что можно было локализовать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 16:43 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
У нас в одном роекте это используется: в случае изменений в переводе, надо менять всю прогу, а то, может свалится в неподходящий момент (сообщение типа: ты туда не ходи, снег бошка попадёт .....) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 17:34 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
Мне еще не приходилось сталкиваться с этими делами. Так вот что мне пришло в голову: А почему не сделать так, например: в каком-нибудь файле прописан выбранный язык. Программа считывает это значение и загружает, например, английское меню и .h-файл со значениями строк. Если язык меняется - заменяется его значение в файле, выгружается одно меню, загружается другое и то же самое с файлами. Почему так не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 18:11 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
делается XML с ветками языков. все контролы берут оттуда текст. переключения языков на лету, добавление языков без компиляции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 22:38 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
Добавь в программу двумерный строковый массив, примерно так: header-file: char* Mes[200][3]; ///200 - количество строк, 3 - количество языков cpp-file: Mes[][] = { "Cообщение 1", "Message 1","", "Cообщение 2", "Message 2","", "Cообщение 3", "Message 3","", "Cообщение 4", "Message 4","", } //3 язык - резервный :)) А меню по-моему лучше переименовывать, вот текст функции, я когда то написал: for( DWORD i=0; i < pMenu->GetMenuItemCount(); i++ ) { int id = pMenu->GetMenuItemID( i ); if( id == 0 ) continue; pMenu->ModifyMenu(i, MF_BYPOSITION | MF_STRING, id, Mes[cnt++] ); if( pMenu->GetSubMenu( i ) ) { RenameMenu( pMenu->GetSubMenu( i ) ); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 18:18 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
в одной нашей системе все надписи и сообщения можно было настраивать... очень, знаете ли, удобно... да еще и многоязычность реализовать крайне просто... в общем, все строковые ресурсы надо хранить в базе и иметь административный тул по их менеджменту прямо в своем ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2004, 09:59 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
2 CEMb: CEMbСмена языка требовала перезагрузки программы (хотя я бы смог сделать и без). А можно поделиться соображениями, как без перезагрузки? С библиотеками все понятно, уже сделано. Но пока получается только при загрузке программы менять язык, а чтоб динамически в процессе работы программы - непонятно как :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 13:50 |
|
||
|
поддержка нескольких языков - как правильно организовать?
|
|||
|---|---|---|---|
|
#18+
авторА можно поделиться соображениями, как без перезагрузки? Просто перезагрузить библиотеки. Но это при условии, что все локализованные вещи генерятся "на ходу". К примеру, меню собирается по-элементно. Или. Все вещи, которые собираются/создаются один раз после загрузки библиотеки - собираются/создаются заново. Я этого не сделал, так как я делал тока часть проекта, а проект был большой. И меня бы туда править хозяева не пустили :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 14:44 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32431667&tid=2035317]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 184ms |
| total: | 281ms |

| 0 / 0 |
