3PPC.net
Старый 19.08.2010, 00:20 #1
Аватар для Dynamite
Dynamite Dynamite вне форума
вездессущий засранец
 
Регистрация: 07.01.2008
Сообщений: 1,150
Репутация: 633
Dynamite Dynamite вне форума
вездессущий засранец
Аватар для Dynamite
 
Регистрация: 07.01.2008
Сообщений: 1,150
Репутация: 633
Устройство: Blackview BV6000
Программы с мультиязыковым интерфейсом

Создание программ с многоязыковым интерфейсом
С помощью технологии MUI есть возможность перевода программ на другие языки без изменения кода самой программы.
Скрытый текст (вы должны зарегистрироваться или войти под своим логином):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.


В двух словах смысл заключается в том, что ресурсы, подлежащие локализации, выносятся в секцию ресурсов. Для каждой локализации создается свой MUI-файл (файлы с расширением *.mui), также содержащий секцию с ресурсами. В зависимости от установленного языка локализации, ОС загружает ресурсы из соответствующего MUI-файла.

Требования к MUI-файлам:
  • файл должен содержать секцию с ресурсами, ID которых совпадают с ID ресурсов в локализуемом файле;
  • файл должен находиться в одной папке с локализуемым файлом;
  • имя файла должно иметь вид app.ext.xxxx.mui, где:
    app.ext - имя и расширение файла, для которого создается MUI;
    xxxx - код языка локализации (например, 0409 - английский, 0419 - русский);
    Скрытый текст (вы должны зарегистрироваться или войти под своим логином):
    У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

Создание MUI в Visual Studio 2008
Автор: rom_usr
Скрытый текст (вы должны зарегистрироваться или войти под своим логином):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.


На примере программы, выводящей окно сообщения со словами “Hello World”.
Код:
#include <windows.h>

int WINAPI WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPTSTR lpCmdLine,
    int nCmdShow
    )
{
	MessageBox(0, L"Hello, World!", L"Hello", MB_OK);
	return 0;
}
Для начала нам необходимо подготовить нашу программу.
  1. создаем ресурс String Table(таблица строк);

    Создаем строки содержащие текст "Hello, World!" и "Hello!".
    Не забываем, что максимальная длина строки в String Table может быть не более 255 символов.
  2. в код программы вносим изменения:
    Код:
    #include <windows.h>
    
    int WINAPI WinMain(
        HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
        LPTSTR lpCmdLine,
        int nCmdShow)
    {
    	WCHAR wMessageBuffer[255],
    		wMessageHeaderBuffer[255];
    
    // получаем дескриптор файла нашей программы
    	HINSTANCE hInst;
    	hInst = GetModuleHandle(NULL);
    
    // подгружаем строки из String Table в буферы
    	LoadString(hInst, 101, wMessageBuffer, 255);
    	LoadString(hInst, 102, wMessageHeaderBuffer, 255);
    
    	MessageBox(0, wMessageBuffer, wMessageHeaderBuffer, MB_OK);
    	return 0;
    }
  3. готово.

Теперь можем приступить к созданию самого MUI файла.
  1. добавляем к Solution новый проект.
    Указываем тип файла, в данном случае это приложение, и ставим галочку на “Empty project”.
  2. в свойствах проекта, в настройках компоновщика(Linker), исправляем имя выходного файла в соответствии с требованиями к имени MUI.
    В нашем случае:
    $(OutDir)/HelloWorld.0419.exe
    меняем вот так:
    $(OutDir)/HelloWorld.exe.0419.mui

  3. добавляем к проекту исходный файл, в зависимости от выбранного типа проекта, содержащий функцию DllMain или WinMain с пустым телом. Это необходимо для успешной компиляции проекта MUI файла.
    Код:
    #include <windows.h>
    
    int WINAPI WinMain(
        HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
        LPTSTR lpCmdLine,
        int nCmdShow
        )
    {
    	return 0;
    }
  4. создаем ресурс String Table(таблица строк).
    Создаем в нем строки с переведенным текстом оригинальных строк.
    В принципе можно скопировать оригинальные строки и перевести их текст.
    Идентификаторы строк должны совпадать с идентификаторами оригинальных строк.
  5. в свойствах String Table устанавливаем язык.
    В нашем случае “Русский”.
  6. готово.

Скрытый текст (вы должны зарегистрироваться или войти под своим логином):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

Последний раз редактировалось Dynamite; 19.08.2010 в 00:47.
Dynamite вне форума   Ответить с цитированием Цитировать выделенное
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Wing Home - оболочка со стильным интерфейсом Голландец Программы для Today 0 28.08.2010 15:45
SenTi - таймер с интерфейсом Sense UI. Голландец Разное 1 11.06.2010 19:46
GSlide - проводник с интерфейсом слайдера Gangsta-P Системные программы 7 24.08.2009 09:47
SecilWeather - прогноз погоды с пальцеориентированным интерфейсом. Витюха Программы для Today 8 19.06.2009 18:40
HDD с интерфейсом Wireless USB obaz Новости мира Windows Mobile 1 11.06.2008 14:41

 


Текущее время: 02:27. Часовой пояс GMT +3.


Powered by vBulletin®
Copyright ©2000 - 2017, vBulletin Solutions, Inc.