Цієї записці описується деякі конструкції та процедури, які можна використовувати, щоб локалізувати компонент, будь то застосунок або елемент керування OLE або DLL, яка використовує MFC.
Огляд
Є насправді дві проблеми, щоб вирішити, коли локалізації компонент, який використовує MFC. По-перше, ви повинні локалізувати власних ресурсів-струни, діалогів та інші ресурси, які є специфічними для компонента. Більшість компонентів побудована з використанням MFC також включити і використовувати кількість ресурсів, які визначаються MFC. Ви повинні вказати локалізовані MFC ресурсів, а також. На щастя, кілька мов вже надаються MFC, сам.
Крім того, ваш компонент повинні бути готові до запуску в умовах його цільового (Європейського або Двобайтовий включений навколишнього середовища). В більшості, це залежить від вашої програми лікування символи з набором високий трохи неправильно і обробки рядків з двобайтовий символів. MFC увімкнуто, за промовчанням для обох цих середовищах, така, що можна мати одного "світ широкий" двійковий файл, який використовується на всіх платформах з просто різні ресурси підключено на час установки.
Локалізація ваш компонента ресурсів
Локалізації програми або DLL повинна включати просто Заміна ресурсів з ресурсами, які відповідають цільовому мовою. Для власних ресурсів, це відносно проста: змінити ресурси в редактор ресурсів і побудувати вашу заявку. Якщо ваш код написаний належним чином не буде ніяких рядків або текст, який ви хочете, щоб локалізувати жорстко у вихідному коді вашої C++-всі локалізації може бути зроблено шляхом просто зміни ресурсів. Справді, ваш компонент можна реалізувати, така, що всі надання локалізовані версії не навіть пов'язані побудувати оригінального коду. Є більш складною, але це варто було і є механізмом, обраний для MFC, сама по собі. Також є можливість локалізувати заявку на завантаження файлу EXE або DLL в редактор ресурсу та редагування ресурсів безпосередньо. Хоча це й можливо, це вимагає re-application цих змін кожного разу, коли ви побудувати нову версію вашого застосування.
Один зі способів уникнути цього, це знайти всі ресурси в окремому DLL, іноді називають супутник DLL. Ця бібліотека DLL потім завантажуються динамічно під час виконання і ресурси завантажуються з цієї DLL замість з основного модуля з вашого коду. MFC безпосередньо підтримує такий підхід. Розглянемо програму під назвою MYAPP.EXE; Він може мати всі свої ресурси-одна з місцевих громад, що розташована в DLL, називається MYRES.Бібліотека DLL. застосування у InitInstance , він буде виконувати такі дії, щоб завантажити цю Бібліотеку і викликати MFC завантажити ресурси з цього розташування:
CMyApp::InitInstance()
{
/ / Це одна з перших речей, що в коді ініціалізації
HINSTANCE-hInst = LoadLibrary("myres.dll");
Якщо (hInst! = NULL)
AfxSetResourceHandle(hInst);
/ / Інші ініціалізації код буде слідувати
.
.
.
}
З потім в MFC буде завантажити ресурси з цієї DLL, а не з myapp.exe. Всі ресурси, однак, має бути присутнім в тому, що DLL-MFC не буде шукати екземпляр програми в пошуках даного ресурсу. Цей метод застосовується не менш також у регулярних DLL, а також елементи керування OLE. Ваша програма інсталяції буде Копіювати версію MYRES.Бібліотека DLL, в залежності від локалі який ресурс користувач хотів.
Це відносно легко створити ресурс тільки DLL. Створити проект DLL, додати ваш.RC файлу до його і додати необхідні ресурси. Якщо існуючий проект, які не використовують цей метод, ви можете скопіювати ресурси проекту. Після додавання файлу ресурсів проекту ти майже готовий до побудувати проекту. Єдине, що ви повинні зробити, це встановити компонувальник варіантів включити /NOENTRY. Це компонувальник говорить, що DLL не має ніякого сенсу запис – оскільки вона має не коду, вона має сенсу запис.
Примітка Редактор ресурсів в Visual c + +-4.0 і пізніших версіях підтримує кілька мов на.RC файли. Це можна зробити це дуже легко керувати вашу локалізацію в один проект. Ресурси для кожної мови контролюється препроцесора директиви, створений за допомогою редактора ресурсу.
За допомогою наданого MFC локалізовані ресурси
Будь-який додаток MFC, які ви будуєте re-uses дві речі з MFC: код і ресурсів. Тобто, MFC має різні повідомлення про помилки, вбудовані діалогові вікна та інші ресурси, які використовуються MFC класів. Для того, щоб повністю локалізувати заявку, потрібно локалізувати не тільки ваша заявка ресурсів, а також ресурсів, що приходять безпосередньо з MFC. MFC надає цілий ряд різних Мови ресурсу файли автоматично, так що якщо мова, ви орієнтуєтеся одну з мов MFC вже підтримує, потрібно просто переконайтеся, що ви використовуєте ці локалізовані ресурси.
На момент написання статті, підтримує MFC: китайська, німецької, іспанської, французька, італійська, японська та Корейська. Файли, які містять ці локалізовані версії є в у MFC\INCLUDE\L.* (L' виступає за локалізовані) каталоги. Німецька файли знаходяться в MFC\INCLUDE\L.DEU, наприклад. Для того, щоб викликати ваш додаток для використання цих RC файли, замість того, щоб файли-одна з місцевих громад, що розташована в MFC\INCLUDE, просто додайте в /IC:\PROGRAM FILES\DEVSTUDIO\VC\MFC\INCLUDE\L.DEU до RC командного рядка (це просто приклад-ви повинні замінити регіональні параметри вибору, а також каталог, в якому ви встановили Visual c + +).
Вище інструкцій буде працювати, якщо ваша заявка посилання статично з MFC. Більшість програм посилання динамічно (тому що, за промовчанням AppWizard). У цьому випадку не тільки код є динамічно зв'язаних – такі ресурси. В результаті, можна локалізувати ваших ресурсів у вашому додатку, але MFC реалізації ресурсів буде ще завантажений в MFC4x.DLL (або пізнішої версії) або в MFC4xLOC.DLL якщо він існує. Ви можете підійти до цього з двох різних точок зору.
Функція лише у професійних і підприємство видань Статичні посилання на MFC підтримується лише в Visual C++ Professional і підприємство видань. Докладніше, перегляньте статтю Visual C++ видань.
Більш комплексний підхід, щоб судно, один з локалізованими MFC4xLOC.DLLs (наприклад, MFC4xDEU, для німецької, MFC4xESP.DLL для іспанської т. д.) або пізнішої версії і встановити відповідний MFC4xLOC.DLL в системному каталозі, коли користувач встановлює заявку. Це може бути дуже складним для розробників, так і кінцевих користувачів і як такі не рекомендується. Переглянути технічне Примітка 56 більш докладну інформацію про цю техніку і його застереження.
Найпростіший і безпечний підхід, щоб включити локалізовані ресурси MFC у програми або DLL себе (або його супутник DLL), якщо ви використовуєте одну. Це дозволяє уникнути проблем установці MFC4xLOC.DLL належним чином. Щоб зробити так, що ви дотримуйтесь вказівок для статичного випадку наведені вище (налаштування RC командного рядка належним чином для того, щоб вказати на локалізовані ресурси), за винятком, що слід видалити з /D_AFXDLL визначити, що було додано за AppWizard. Коли /D_AFXDLL є визначені AFXRES.H (та інші файли MFC RC) не реально визначити будь-які ресурси (у тому, що вони будуть виведені з DLL MFC замість цього).
Технічні примітки за номером |nbsp; Технічні примітки за категоріями