Продолжение публикации «Локализация WPF страниц». Интернационализация C++ проектов — это в основном перевод RC ресурсов. Как и раньше, рассмотрим процесс локализацию на простом примере MFC проекта.
Windows 8, Visual Studio 2013
Итак, создадим новый MFC проект.
Оставим всё по умолчанию и нажмём «Finish».
Запустим и проверим, что всё в порядке и на английском.
Добавим в наш проект Nuget пакет Elas.
Как и в случае локализации WPF проекта в солюшене появился новый файл конфигурации Elas.
Соберём проект.
Обратите внимание, что в проект добавился новый файл «MFCApplication1.rc.xlf»
Этот файл содержит ресурсы которые необходимо локализовать.
Туда входят строки, диалоги, меню, акселераторы и т.д. все ресурсы из «MFCApplication1.rc»
По умолчанию в конфигурационный файл Elas добавлен русский язык.
Выполним перевод «MFCApplication1.rc.xlf» на русский язык. (я это сделал автоматический с помощью Microsoft Translator)
Локализация MFC проекта закончена.
Проверим что получилось…
Для этого я добавил в конструктор «CMFCApplication1App» вызов API функции SetThreadUILanguage, чтобы установить русский язык интерфейса для текущего потока.
Также я удалил из реестра ветку «HKEY_CURRENT_USER\Software\Local AppWizard-Generated Applications\MFCApplication1» поскольку без этого не все локализованные ресурсы отображаются.
Вот мой результат.
Windows 8, Visual Studio 2013
Итак, создадим новый MFC проект.
Оставим всё по умолчанию и нажмём «Finish».
Запустим и проверим, что всё в порядке и на английском.
Добавим в наш проект Nuget пакет Elas.
Как и в случае локализации WPF проекта в солюшене появился новый файл конфигурации Elas.
Соберём проект.
Обратите внимание, что в проект добавился новый файл «MFCApplication1.rc.xlf»
Этот файл содержит ресурсы которые необходимо локализовать.
Туда входят строки, диалоги, меню, акселераторы и т.д. все ресурсы из «MFCApplication1.rc»
По умолчанию в конфигурационный файл Elas добавлен русский язык.
Выполним перевод «MFCApplication1.rc.xlf» на русский язык. (я это сделал автоматический с помощью Microsoft Translator)
MFCApplication1.rc.xlf
<?xml version="1.0" encoding="utf-8"?>
<xliff version="1.2" xmlns:elas="urn:devutils:names:tc:xliff:document:1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file original="MFCApplication1.rc" source-language="en-US" target-language="ru-RU" datatype="winres">
<header>
<tool tool-version="0.0.9.0" tool-name="ELAS" tool-company="DevUtils.Net" tool-id="DevUtils.Elas.Tasks.Core, Version=0.0.9.0, Culture=neutral, PublicKeyToken=3cae0f4d0d366709" />
</header>
<body>
<group id="IDR">
<group id="IDR_MAINFRAME" restype="menu">
<group id="5FD4951" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&File</source>
<target xml:space="preserve" state="translated">&Файл</target>
</trans-unit>
<trans-unit id="ID_FILE_NEW" translate="yes" restype="menuitem">
<source xml:space="preserve">&New\tCtrl+N</source>
<target xml:space="preserve" state="translated">&Новый\tCtrl+N</target>
</trans-unit>
<trans-unit id="ID_FILE_OPEN" translate="yes" restype="menuitem">
<source xml:space="preserve">&Open...\tCtrl+O</source>
<target xml:space="preserve" state="translated">&Открыть...\tCtrl+O</target>
</trans-unit>
<trans-unit id="ID_FILE_CLOSE" translate="yes" restype="menuitem">
<source xml:space="preserve">&Close</source>
<target xml:space="preserve" state="translated">&Закрыть</target>
</trans-unit>
<trans-unit id="ID_FILE_PRINT_SETUP" translate="yes" restype="menuitem">
<source xml:space="preserve">P&rint Setup...</source>
<target xml:space="preserve" state="translated">Наст&ройка печати...</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE1" translate="yes" restype="menuitem">
<source xml:space="preserve">Recent File</source>
<target xml:space="preserve" state="translated">Последний файл</target>
</trans-unit>
<trans-unit id="ID_APP_EXIT" translate="yes" restype="menuitem">
<source xml:space="preserve">E&xit</source>
<target xml:space="preserve" state="translated">В&ыход</target>
</trans-unit>
</group>
<group id="4B2D8E7A" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&View</source>
<target xml:space="preserve" state="translated">&Вид</target>
</trans-unit>
<group id="E199D4B6" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&Toolbars and Docking Windows</source>
<target xml:space="preserve" state="translated">&Панель инструментов и расположение окон</target>
</trans-unit>
<trans-unit id="ID_VIEW_TOOLBAR" translate="no" restype="menuitem">
<source xml:space="preserve"><placeholder></source>
<target xml:space="preserve" state="translated" />
</trans-unit>
</group>
<trans-unit id="ID_VIEW_STATUS_BAR" translate="yes" restype="menuitem">
<source xml:space="preserve">&Status Bar</source>
<target xml:space="preserve" state="translated">&Строка состояния</target>
</trans-unit>
<group id="10233E4" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&Application Look</source>
<target xml:space="preserve" state="translated">&Внешнего вида приложения</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_WIN_2000" translate="yes" restype="menuitem">
<source xml:space="preserve">Windows &2000</source>
<target xml:space="preserve" state="translated">Windows &2000</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_XP" translate="yes" restype="menuitem">
<source xml:space="preserve">Office &XP</source>
<target xml:space="preserve" state="translated">Office &XP</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_WIN_XP" translate="yes" restype="menuitem">
<source xml:space="preserve">&Windows XP</source>
<target xml:space="preserve" state="translated">&Windows XP</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2003" translate="yes" restype="menuitem">
<source xml:space="preserve">Office 200&3</source>
<target xml:space="preserve" state="translated">Office 200&3</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_VS_2005" translate="yes" restype="menuitem">
<source xml:space="preserve">Visual Studio 200&5</source>
<target xml:space="preserve" state="translated">Visual Studio 200&5</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_VS_2008" translate="yes" restype="menuitem">
<source xml:space="preserve">Visual Studio 200&8</source>
<target xml:space="preserve" state="translated">Visual Studio 200&8</target>
</trans-unit>
<group id="BF143A50" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">Office 200&7</source>
<target xml:space="preserve" state="translated">Office 200&7</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_BLUE" translate="yes" restype="menuitem">
<source xml:space="preserve">&Blue Style</source>
<target xml:space="preserve" state="translated">&Синий стиль</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_BLACK" translate="yes" restype="menuitem">
<source xml:space="preserve">B&lack Style</source>
<target xml:space="preserve" state="translated">&Чёрный стиль</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_SILVER" translate="yes" restype="menuitem">
<source xml:space="preserve">&Silver Style</source>
<target xml:space="preserve" state="translated">&Серебряный стиль</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_AQUA" translate="yes" restype="menuitem">
<source xml:space="preserve">&Aqua Style</source>
<target xml:space="preserve" state="translated">&Аква стиль</target>
</trans-unit>
</group>
</group>
</group>
<group id="DFC32316" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&Help</source>
<target xml:space="preserve" state="translated">&Помощь</target>
</trans-unit>
<trans-unit id="ID_APP_ABOUT" translate="yes" restype="menuitem">
<source xml:space="preserve">&About MFCApplication1...</source>
<target xml:space="preserve" state="translated">&О MFCApplication1...</target>
</trans-unit>
</group>
</group>
<group id="IDR_MFCApplication1TYPE" restype="menu">
<group id="5FD4951" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&File</source>
<target xml:space="preserve" state="translated">&Файл</target>
</trans-unit>
<trans-unit id="ID_FILE_NEW" translate="yes" restype="menuitem">
<source xml:space="preserve">&New\tCtrl+N</source>
<target xml:space="preserve" state="translated">&Новый\tCtrl+N</target>
</trans-unit>
<trans-unit id="ID_FILE_OPEN" translate="yes" restype="menuitem">
<source xml:space="preserve">&Open...\tCtrl+O</source>
<target xml:space="preserve" state="translated">&Открыть...\tCtrl+O</target>
</trans-unit>
<trans-unit id="ID_FILE_CLOSE" translate="yes" restype="menuitem">
<source xml:space="preserve">&Close</source>
<target xml:space="preserve" state="translated">&Закрыть</target>
</trans-unit>
<trans-unit id="ID_FILE_SAVE" translate="yes" restype="menuitem">
<source xml:space="preserve">&Save\tCtrl+S</source>
<target xml:space="preserve" state="translated">&Сохранить\tCtrl+S</target>
</trans-unit>
<trans-unit id="ID_FILE_SAVE_AS" translate="yes" restype="menuitem">
<source xml:space="preserve">Save &As...</source>
<target xml:space="preserve" state="translated">Сохранить &как...</target>
</trans-unit>
<trans-unit id="ID_FILE_PRINT" translate="yes" restype="menuitem">
<source xml:space="preserve">&Print...\tCtrl+P</source>
<target xml:space="preserve" state="translated">&Печать...\tCtrl+P</target>
</trans-unit>
<trans-unit id="ID_FILE_PRINT_PREVIEW" translate="yes" restype="menuitem">
<source xml:space="preserve">Print Pre&view</source>
<target xml:space="preserve" state="translated">Печать Препросмотр</target>
</trans-unit>
<trans-unit id="ID_FILE_PRINT_SETUP" translate="yes" restype="menuitem">
<source xml:space="preserve">P&rint Setup...</source>
<target xml:space="preserve" state="translated">Печать &настройки...</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE1" translate="yes" restype="menuitem">
<source xml:space="preserve">Recent File</source>
<target xml:space="preserve" state="translated">Последний файл</target>
</trans-unit>
<trans-unit id="ID_APP_EXIT" translate="yes" restype="menuitem">
<source xml:space="preserve">E&xit</source>
<target xml:space="preserve" state="translated">Выход</target>
</trans-unit>
</group>
<group id="7E8AC1DF" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&Edit</source>
<target xml:space="preserve" state="translated">&Редактировать</target>
</trans-unit>
<trans-unit id="ID_EDIT_UNDO" translate="yes" restype="menuitem">
<source xml:space="preserve">&Undo\tCtrl+Z</source>
<target xml:space="preserve" state="translated">&Отменить\tCtrl + Z</target>
</trans-unit>
<trans-unit id="ID_EDIT_CUT" translate="yes" restype="menuitem">
<source xml:space="preserve">Cu&t\tCtrl+X</source>
<target xml:space="preserve" state="translated">Вырезать\tCtrl + X</target>
</trans-unit>
<trans-unit id="ID_EDIT_COPY" translate="yes" restype="menuitem">
<source xml:space="preserve">&Copy\tCtrl+C</source>
<target xml:space="preserve" state="translated">&Копировать\tCtrl + C</target>
</trans-unit>
<trans-unit id="ID_EDIT_PASTE" translate="yes" restype="menuitem">
<source xml:space="preserve">&Paste\tCtrl+V</source>
<target xml:space="preserve" state="translated">&Вставить\tCtrl + V</target>
</trans-unit>
</group>
<group id="4B2D8E7A" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&View</source>
<target xml:space="preserve" state="translated">&Вид</target>
</trans-unit>
<group id="E199D4B6" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&Toolbars and Docking Windows</source>
<target xml:space="preserve" state="translated">&Панель инструментов и расположение окон</target>
</trans-unit>
<trans-unit id="ID_VIEW_TOOLBAR" translate="no" restype="menuitem">
<source xml:space="preserve"><placeholder></source>
<target xml:space="preserve" state="translated" />
</trans-unit>
</group>
<trans-unit id="ID_VIEW_STATUS_BAR" translate="yes" restype="menuitem">
<source xml:space="preserve">&Status Bar</source>
<target xml:space="preserve" state="translated">&Строка состояния</target>
</trans-unit>
<group id="10233E4" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&Application Look</source>
<target xml:space="preserve" state="translated">&Внешнего вида приложения</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_WIN_2000" translate="yes" restype="menuitem">
<source xml:space="preserve">Windows &2000</source>
<target xml:space="preserve" state="translated">Windows &2000</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_XP" translate="yes" restype="menuitem">
<source xml:space="preserve">Office &XP</source>
<target xml:space="preserve" state="translated">Office &XP</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_WIN_XP" translate="yes" restype="menuitem">
<source xml:space="preserve">&Windows XP</source>
<target xml:space="preserve" state="translated">&Windows XP</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2003" translate="yes" restype="menuitem">
<source xml:space="preserve">Office 200&3</source>
<target xml:space="preserve" state="translated">Office 200&3</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_VS_2005" translate="yes" restype="menuitem">
<source xml:space="preserve">Visual Studio 200&5</source>
<target xml:space="preserve" state="translated">Visual Studio 200&5</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_VS_2008" translate="yes" restype="menuitem">
<source xml:space="preserve">Visual Studio 200&8</source>
<target xml:space="preserve" state="translated">Visual Studio 200&8</target>
</trans-unit>
<group id="BF143A50" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">Office 200&7</source>
<target xml:space="preserve" state="translated">Office 200&7</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_BLUE" translate="yes" restype="menuitem">
<source xml:space="preserve">&Blue Style</source>
<target xml:space="preserve" state="translated">&Синий стиль</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_BLACK" translate="yes" restype="menuitem">
<source xml:space="preserve">B&lack Style</source>
<target xml:space="preserve" state="translated">&Чёрный стиль</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_SILVER" translate="yes" restype="menuitem">
<source xml:space="preserve">&Silver Style</source>
<target xml:space="preserve" state="translated">&Серебряный стиль</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_AQUA" translate="yes" restype="menuitem">
<source xml:space="preserve">&Aqua Style</source>
<target xml:space="preserve" state="translated">&Аква стиль</target>
</trans-unit>
</group>
</group>
</group>
<group id="EE478E85" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&Window</source>
<target xml:space="preserve" state="translated">&Окно</target>
</trans-unit>
<trans-unit id="ID_WINDOW_NEW" translate="yes" restype="menuitem">
<source xml:space="preserve">&New Window</source>
<target xml:space="preserve" state="translated">&Новое окно</target>
</trans-unit>
</group>
<group id="DFC32316" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">&Help</source>
<target xml:space="preserve" state="translated">&Помощь</target>
</trans-unit>
<trans-unit id="ID_APP_ABOUT" translate="yes" restype="menuitem">
<source xml:space="preserve">&About MFCApplication1...</source>
<target xml:space="preserve" state="translated">&О MFCApplication1...</target>
</trans-unit>
</group>
</group>
<group id="POPUP">
<group id="IDR_POPUP_EDIT" restype="menu">
<group id="E33A71BB" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">Edit</source>
<target xml:space="preserve" state="translated">Редактировать</target>
</trans-unit>
<trans-unit id="ID_EDIT_CUT" translate="yes" restype="menuitem">
<source xml:space="preserve">Cu&t\tCtrl+X</source>
<target xml:space="preserve" state="translated">&Вырезать\tCtrl + X</target>
</trans-unit>
<trans-unit id="ID_EDIT_COPY" translate="yes" restype="menuitem">
<source xml:space="preserve">&Copy\tCtrl+C</source>
<target xml:space="preserve" state="translated">&Копировать\tCtrl + C</target>
</trans-unit>
<trans-unit id="ID_EDIT_PASTE" translate="yes" restype="menuitem">
<source xml:space="preserve">&Paste\tCtrl+V</source>
<target xml:space="preserve" state="translated">&Вставить\tCtrl + V</target>
</trans-unit>
</group>
</group>
<group id="IDR_POPUP_SORT" restype="menu">
<group id="BDE3E833" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">Sorting</source>
<target xml:space="preserve" state="translated">Сортировка</target>
</trans-unit>
<trans-unit id="ID_SORTING_SORTALPHABETIC" translate="yes" restype="menuitem">
<source xml:space="preserve">&Sort Alphabeticaly</source>
<target xml:space="preserve" state="translated">&Сортировать по алфавиту</target>
</trans-unit>
<trans-unit id="ID_SORTING_SORTBYTYPE" translate="yes" restype="menuitem">
<source xml:space="preserve">Sort by &Type</source>
<target xml:space="preserve" state="translated">Сортировка по типу</target>
</trans-unit>
<trans-unit id="ID_SORTING_SORTBYACCESS" translate="yes" restype="menuitem">
<source xml:space="preserve">Sort by Acc&ess</source>
<target xml:space="preserve" state="translated">Сортировка по доступу</target>
</trans-unit>
<trans-unit id="ID_SORTING_GROUPBYTYPE" translate="yes" restype="menuitem">
<source xml:space="preserve">Group by t&ype</source>
<target xml:space="preserve" state="translated">Группировка по типу</target>
</trans-unit>
</group>
</group>
<group id="IDR_POPUP_EXPLORER" restype="menu">
<group id="25CC1B70" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">Explorer</source>
<target xml:space="preserve" state="translated">Проводник</target>
</trans-unit>
<trans-unit id="ID_OPEN" translate="yes" restype="menuitem">
<source xml:space="preserve">&Open</source>
<target xml:space="preserve" state="translated">&Открыть</target>
</trans-unit>
<trans-unit id="ID_OPEN_WITH" translate="yes" restype="menuitem">
<source xml:space="preserve">Open &With....</source>
<target xml:space="preserve" state="translated">Открытый &с...</target>
</trans-unit>
<trans-unit id="ID_DUMMY_COMPILE" translate="yes" restype="menuitem">
<source xml:space="preserve">&Compile</source>
<target xml:space="preserve" state="translated">&Компилировать</target>
</trans-unit>
<trans-unit id="ID_EDIT_CUT" translate="yes" restype="menuitem">
<source xml:space="preserve">Cu&t\tCtrl+X</source>
<target xml:space="preserve" state="translated">&Вырезать\tCtrl + X</target>
</trans-unit>
<trans-unit id="ID_EDIT_COPY" translate="yes" restype="menuitem">
<source xml:space="preserve">&Copy\tCtrl+C</source>
<target xml:space="preserve" state="translated">&Копировать\tCtrl + C</target>
</trans-unit>
<trans-unit id="ID_EDIT_CLEAR" translate="yes" restype="menuitem">
<source xml:space="preserve">&Remove</source>
<target xml:space="preserve" state="translated">&Удалить</target>
</trans-unit>
<trans-unit id="ID_PROPERTIES" translate="yes" restype="menuitem">
<source xml:space="preserve">&Properties...</source>
<target xml:space="preserve" state="translated">&Свойства...</target>
</trans-unit>
</group>
</group>
</group>
<group id="OUTPUT">
<group id="IDR_OUTPUT_POPUP" restype="menu">
<group id="A229E31B" restype="menu">
<trans-unit id="$PopupRef" translate="yes" restype="popupmenu">
<source xml:space="preserve">Popup</source>
<target xml:space="preserve" state="translated">Всплывающее окно</target>
</trans-unit>
<trans-unit id="ID_EDIT_COPY" translate="yes" restype="menuitem">
<source xml:space="preserve">&Copy</source>
<target xml:space="preserve" state="translated">&Копировать</target>
</trans-unit>
<trans-unit id="ID_EDIT_CLEAR" translate="yes" restype="menuitem">
<source xml:space="preserve">&Clear</source>
<target xml:space="preserve" state="translated">&Очистить</target>
</trans-unit>
<trans-unit id="ID_VIEW_OUTPUTWND" translate="yes" restype="menuitem">
<source xml:space="preserve">&Hide</source>
<target xml:space="preserve" state="translated">&Скрыть</target>
</trans-unit>
</group>
</group>
</group>
<group id="HELP">
<group id="IDR_HELP_MENU" restype="menu">
<trans-unit id="ID_APP_ABOUT" translate="yes" restype="menuitem">
<source xml:space="preserve">&About MFCApplication1...</source>
<target xml:space="preserve" state="translated">&О MFCApplication1...</target>
</trans-unit>
</group>
</group>
<group id="THEME">
<group id="IDR_THEME_MENU" restype="menu">
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_BLUE" translate="yes" restype="menuitem">
<source xml:space="preserve">Office 2007 (&Blue Style)</source>
<target xml:space="preserve" state="translated">Office 2007 (&синий стиль)</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_BLACK" translate="yes" restype="menuitem">
<source xml:space="preserve">Office 2007 (B&lack Style)</source>
<target xml:space="preserve" state="translated">Office 2007 (&черный стиль)</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_SILVER" translate="yes" restype="menuitem">
<source xml:space="preserve">Office 2007 (&Silver Style)</source>
<target xml:space="preserve" state="translated">Office 2007 (&Серебряный стиль)</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_OFF_2007_AQUA" translate="yes" restype="menuitem">
<source xml:space="preserve">Office 2007 (&Aqua Style)</source>
<target xml:space="preserve" state="translated">Office 2007 (&Аква стиль)</target>
</trans-unit>
<trans-unit id="ID_VIEW_APPLOOK_WINDOWS_7" translate="yes" restype="menuitem">
<source xml:space="preserve">Win&dows 7</source>
<target xml:space="preserve" state="translated">Win&dows 7</target>
</trans-unit>
</group>
</group>
<trans-unit id="IDR_MAINFRAME" translate="yes" restype="string">
<source xml:space="preserve">MFCApplication1</source>
<target xml:space="preserve" state="translated">MFCApplication1</target>
</trans-unit>
<trans-unit id="IDR_MFCApplication1TYPE" translate="yes" restype="string">
<source xml:space="preserve">\nMFCApplication1\nMFCApplication1\n\n\nMFCApplication1.Document\nMFCApplication1.Document</source>
<target xml:space="preserve" state="translated">\nMFCApplication1\nMFCApplication1\n\n\nMFCApplication1.Document\nMFCApplication1.Document</target>
</trans-unit>
</group>
<group id="IDD">
<group id="IDD_ABOUTBOX" restype="dialog">
<trans-unit id="IDC_STATIC_174D6FD" translate="yes" restype="ltext">
<source xml:space="preserve">MFCApplication1, Version 1.0</source>
<target xml:space="preserve" state="translated">MFCApplication1, версия 1.0</target>
</trans-unit>
<trans-unit id="IDC_STATIC_E353917E" translate="yes" restype="ltext">
<source xml:space="preserve">Copyright (C) 2015</source>
<target xml:space="preserve" state="translated">Copyright (C) 2015</target>
</trans-unit>
<trans-unit id="IDOK" translate="yes" restype="defpushbutton">
<source xml:space="preserve">OK</source>
<target xml:space="preserve" state="translated">ОК</target>
</trans-unit>
</group>
</group>
<group id="IDP">
<group id="OLE">
<group id="INIT">
<trans-unit id="IDP_OLE_INIT_FAILED" translate="yes" restype="string">
<source xml:space="preserve">OLE initialization failed. Make sure that the OLE libraries are the correct version.</source>
<target xml:space="preserve" state="translated">Не удалось выполнить инициализацию OLE. Убедитесь, что используются правильные версии библиотек OLE.</target>
</trans-unit>
</group>
</group>
</group>
<group id="AFX">
<group id="IDS">
<group id="APP">
<trans-unit id="AFX_IDS_APP_TITLE" translate="yes" restype="string">
<source xml:space="preserve">MFCApplication1</source>
<target xml:space="preserve" state="translated">MFCApplication1</target>
</trans-unit>
</group>
<trans-unit id="AFX_IDS_IDLEMESSAGE" translate="yes" restype="string">
<source xml:space="preserve">Ready</source>
<target xml:space="preserve" state="translated">Готов</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCSIZE" translate="yes" restype="string">
<source xml:space="preserve">Change the window size</source>
<target xml:space="preserve" state="translated">Изменить размер окна</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCMOVE" translate="yes" restype="string">
<source xml:space="preserve">Change the window position</source>
<target xml:space="preserve" state="translated">Изменить положение окна</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCMINIMIZE" translate="yes" restype="string">
<source xml:space="preserve">Reduce the window to an icon</source>
<target xml:space="preserve" state="translated">Уменьшить окно в значок</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCMAXIMIZE" translate="yes" restype="string">
<source xml:space="preserve">Enlarge the window to full size</source>
<target xml:space="preserve" state="translated">Увеличить окно в полный размер</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCNEXTWINDOW" translate="yes" restype="string">
<source xml:space="preserve">Switch to the next document window</source>
<target xml:space="preserve" state="translated">Переключиться к следующему окну документа</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCPREVWINDOW" translate="yes" restype="string">
<source xml:space="preserve">Switch to the previous document window</source>
<target xml:space="preserve" state="translated">Переключение на предыдущее окно документа</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCCLOSE" translate="yes" restype="string">
<source xml:space="preserve">Close the active window and prompts to save the documents</source>
<target xml:space="preserve" state="translated">Закрыть активное окно и приглашения для сохранения документов</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCRESTORE" translate="yes" restype="string">
<source xml:space="preserve">Restore the window to normal size</source>
<target xml:space="preserve" state="translated">Восстановить нормальный размер окна</target>
</trans-unit>
<trans-unit id="AFX_IDS_SCTASKLIST" translate="yes" restype="string">
<source xml:space="preserve">Activate Task List</source>
<target xml:space="preserve" state="translated">Активировать список задач</target>
</trans-unit>
<trans-unit id="AFX_IDS_MDICHILD" translate="yes" restype="string">
<source xml:space="preserve">Activate this window</source>
<target xml:space="preserve" state="translated">Активация этого окна</target>
</trans-unit>
<group id="PREVIEW">
<trans-unit id="AFX_IDS_PREVIEW_CLOSE" translate="yes" restype="string">
<source xml:space="preserve">Close print preview mode\nCancel Preview</source>
<target xml:space="preserve" state="translated">Закрыть предварительный просмотр mode\nОтмена Просмотр</target>
</trans-unit>
</group>
</group>
</group>
<group id="ID">
<group id="INDICATOR">
<trans-unit id="ID_INDICATOR_EXT" translate="yes" restype="string">
<source xml:space="preserve">EXT</source>
<target xml:space="preserve" state="translated">EXT</target>
</trans-unit>
<trans-unit id="ID_INDICATOR_CAPS" translate="yes" restype="string">
<source xml:space="preserve">CAP</source>
<target xml:space="preserve" state="translated">CAP</target>
</trans-unit>
<trans-unit id="ID_INDICATOR_NUM" translate="yes" restype="string">
<source xml:space="preserve">NUM</source>
<target xml:space="preserve" state="translated">NUM</target>
</trans-unit>
<trans-unit id="ID_INDICATOR_SCRL" translate="yes" restype="string">
<source xml:space="preserve">SCRL</source>
<target xml:space="preserve" state="translated">SCRL</target>
</trans-unit>
<trans-unit id="ID_INDICATOR_OVR" translate="yes" restype="string">
<source xml:space="preserve">OVR</source>
<target xml:space="preserve" state="translated">OVR</target>
</trans-unit>
<trans-unit id="ID_INDICATOR_REC" translate="yes" restype="string">
<source xml:space="preserve">REC</source>
<target xml:space="preserve" state="translated">REC</target>
</trans-unit>
</group>
<group id="FILE">
<trans-unit id="ID_FILE_NEW" translate="yes" restype="string">
<source xml:space="preserve">Create a new document\nNew</source>
<target xml:space="preserve" state="translated">Создание новой документ\nНовый</target>
</trans-unit>
<trans-unit id="ID_FILE_OPEN" translate="yes" restype="string">
<source xml:space="preserve">Open an existing document\nOpen</source>
<target xml:space="preserve" state="translated">Открыть существующий документ\nОткрыть</target>
</trans-unit>
<trans-unit id="ID_FILE_CLOSE" translate="yes" restype="string">
<source xml:space="preserve">Close the active document\nClose</source>
<target xml:space="preserve" state="translated">Закрыть активный документ\nЗакрыть</target>
</trans-unit>
<trans-unit id="ID_FILE_SAVE" translate="yes" restype="string">
<source xml:space="preserve">Save the active document\nSave</source>
<target xml:space="preserve" state="translated">Сохранить активный документ\nСохранить</target>
</trans-unit>
<group id="SAVE">
<trans-unit id="ID_FILE_SAVE_AS" translate="yes" restype="string">
<source xml:space="preserve">Save the active document with a new name\nSave As</source>
<target xml:space="preserve" state="translated">Сохранение активного документа с новым именем\nСохранить как</target>
</trans-unit>
</group>
<group id="PAGE">
<trans-unit id="ID_FILE_PAGE_SETUP" translate="yes" restype="string">
<source xml:space="preserve">Change the printing options\nPage Setup</source>
<target xml:space="preserve" state="translated">Изменить установки печати\nСтраница установки</target>
</trans-unit>
</group>
<group id="PRINT">
<trans-unit id="ID_FILE_PRINT_SETUP" translate="yes" restype="string">
<source xml:space="preserve">Change the printer and printing options\nPrint Setup</source>
<target xml:space="preserve" state="translated">Изменение установок принтера и печати\nПечать установки</target>
</trans-unit>
<trans-unit id="ID_FILE_PRINT_DIRECT" translate="yes" restype="string">
<source xml:space="preserve">Print the active document using current options\nQuick Print</source>
<target xml:space="preserve" state="translated">Печать активного документа с помощью текущих настроек\nБыстрая печать</target>
</trans-unit>
<trans-unit id="ID_FILE_PRINT_PREVIEW" translate="yes" restype="string">
<source xml:space="preserve">Display full pages\nPrint Preview</source>
<target xml:space="preserve" state="translated">Отобразить все страницы\nПросмотр печати</target>
</trans-unit>
</group>
<trans-unit id="ID_FILE_PRINT" translate="yes" restype="string">
<source xml:space="preserve">Print the active document\nPrint</source>
<target xml:space="preserve" state="translated">Печать активного документа\nПечать</target>
</trans-unit>
<group id="MRU">
<trans-unit id="ID_FILE_MRU_FILE1" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE2" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE3" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE4" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE5" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE6" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE7" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE8" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE9" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE10" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE11" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE12" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE13" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE14" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE15" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
<trans-unit id="ID_FILE_MRU_FILE16" translate="yes" restype="string">
<source xml:space="preserve">Open this document</source>
<target xml:space="preserve" state="translated">Открыть этот документ</target>
</trans-unit>
</group>
</group>
<group id="APP">
<trans-unit id="ID_APP_ABOUT" translate="yes" restype="string">
<source xml:space="preserve">Display program information, version number and copyright\nAbout</source>
<target xml:space="preserve" state="translated">Отображения информации о программе, номер версии и copyright\nО программе</target>
</trans-unit>
<trans-unit id="ID_APP_EXIT" translate="yes" restype="string">
<source xml:space="preserve">Quit the application; prompts to save documents\nExit</source>
<target xml:space="preserve" state="translated">Выйти из приложения; подсказки для сохранения документов\nВыход</target>
</trans-unit>
</group>
<group id="NEXT">
<trans-unit id="ID_NEXT_PANE" translate="yes" restype="string">
<source xml:space="preserve">Switch to the next window pane\nNext Pane</source>
<target xml:space="preserve" state="translated">Перейти к следующей панели\nСледующее окно панели</target>
</trans-unit>
</group>
<group id="PREV">
<trans-unit id="ID_PREV_PANE" translate="yes" restype="string">
<source xml:space="preserve">Switch back to the previous window pane\nPrevious Pane</source>
<target xml:space="preserve" state="translated">Вернуться к предыдущей панели\nПредыдущее окно панели</target>
</trans-unit>
</group>
<group id="WINDOW">
<trans-unit id="ID_WINDOW_NEW" translate="yes" restype="string">
<source xml:space="preserve">Open another window for the active document\nNew Window</source>
<target xml:space="preserve" state="translated">Открытие другого окна для активного документа\nНовое окно</target>
</trans-unit>
<trans-unit id="ID_WINDOW_ARRANGE" translate="yes" restype="string">
<source xml:space="preserve">Arrange icons at the bottom of the window\nArrange Icons</source>
<target xml:space="preserve" state="translated">Организовать иконки в нижней части окна\nРеорганизация иконок</target>
</trans-unit>
<trans-unit id="ID_WINDOW_CASCADE" translate="yes" restype="string">
<source xml:space="preserve">Arrange windows so they overlap\nCascade Windows</source>
<target xml:space="preserve" state="translated">Расположить окна так они перекрытее\nКаскадное расположение</target>
</trans-unit>
<group id="TILE">
<trans-unit id="ID_WINDOW_TILE_HORZ" translate="yes" restype="string">
<source xml:space="preserve">Arrange windows as non-overlapping tiles\nTile Windows</source>
<target xml:space="preserve" state="translated">Расположить окна как не перекрывающие\nЗаголовок окон</target>
</trans-unit>
<trans-unit id="ID_WINDOW_TILE_VERT" translate="yes" restype="string">
<source xml:space="preserve">Arrange windows as non-overlapping tiles\nTile Windows</source>
<target xml:space="preserve" state="translated">Расположить окна как не перекрывающие\nЗаголовок окон</target>
</trans-unit>
</group>
<trans-unit id="ID_WINDOW_SPLIT" translate="yes" restype="string">
<source xml:space="preserve">Split the active window into panes\nSplit</source>
<target xml:space="preserve" state="translated">Разделить активное окно на панели\nРазделить</target>
</trans-unit>
<trans-unit id="ID_WINDOW_MANAGER" translate="yes" restype="string">
<source xml:space="preserve">&Windows...</source>
<target xml:space="preserve" state="translated">&Окна...</target>
</trans-unit>
</group>
<group id="EDIT">
<trans-unit id="ID_EDIT_CLEAR" translate="yes" restype="string">
<source xml:space="preserve">Erase the selection\nErase</source>
<target xml:space="preserve" state="translated">Стереть выделенное\nСтереть</target>
</trans-unit>
<group id="CLEAR">
<trans-unit id="ID_EDIT_CLEAR_ALL" translate="yes" restype="string">
<source xml:space="preserve">Erase everything\nErase All</source>
<target xml:space="preserve" state="translated">Стереть всё\nСтереть всё</target>
</trans-unit>
</group>
<trans-unit id="ID_EDIT_COPY" translate="yes" restype="string">
<source xml:space="preserve">Copy the selection and put it on the Clipboard\nCopy</source>
<target xml:space="preserve" state="translated">Копировать выделенный фрагмент и поместить его на буфер\nКопировать</target>
</trans-unit>
<trans-unit id="ID_EDIT_CUT" translate="yes" restype="string">
<source xml:space="preserve">Cut the selection and put it on the Clipboard\nCut</source>
<target xml:space="preserve" state="translated">Вырезание выделенного фрагмента и положил его на буфер\nВырезать</target>
</trans-unit>
<trans-unit id="ID_EDIT_FIND" translate="yes" restype="string">
<source xml:space="preserve">Find the specified text\nFind</source>
<target xml:space="preserve" state="translated">Найдите указанный текст\nНайти</target>
</trans-unit>
<trans-unit id="ID_EDIT_PASTE" translate="yes" restype="string">
<source xml:space="preserve">Insert Clipboard contents\nPaste</source>
<target xml:space="preserve" state="translated">Вставить буфер обмена содержимое\nВставить</target>
</trans-unit>
<trans-unit id="ID_EDIT_REPEAT" translate="yes" restype="string">
<source xml:space="preserve">Repeat the last action\nRepeat</source>
<target xml:space="preserve" state="translated">Повторите последний действие\nПовторить</target>
</trans-unit>
<trans-unit id="ID_EDIT_REPLACE" translate="yes" restype="string">
<source xml:space="preserve">Replace specific text with different text\nReplace</source>
<target xml:space="preserve" state="translated">Заменить определенный текст с различными текстом\nЗаменить</target>
</trans-unit>
<group id="SELECT">
<trans-unit id="ID_EDIT_SELECT_ALL" translate="yes" restype="string">
<source xml:space="preserve">Select the entire document\nSelect All</source>
<target xml:space="preserve" state="translated">Выберите весь документ\nВыделить все</target>
</trans-unit>
</group>
<trans-unit id="ID_EDIT_UNDO" translate="yes" restype="string">
<source xml:space="preserve">Undo the last action\nUndo</source>
<target xml:space="preserve" state="translated">Отменить последний действие\nОтменить</target>
</trans-unit>
<trans-unit id="ID_EDIT_REDO" translate="yes" restype="string">
<source xml:space="preserve">Redo the previously undone action\nRedo</source>
<target xml:space="preserve" state="translated">Повтор применить действие\nВернуть</target>
</trans-unit>
</group>
<group id="VIEW">
<group id="STATUS">
<trans-unit id="ID_VIEW_STATUS_BAR" translate="yes" restype="string">
<source xml:space="preserve">Show or hide the status bar\nToggle Status Bar</source>
<target xml:space="preserve" state="translated">Показать или скрыть статус бар\nПереключить статус бар</target>
</trans-unit>
</group>
</group>
</group>
<group id="IDS">
<group id="STATUS">
<trans-unit id="IDS_STATUS_PANE1" translate="yes" restype="string">
<source xml:space="preserve">Pane 1</source>
<target xml:space="preserve" state="translated">Область 1</target>
</trans-unit>
<trans-unit id="IDS_STATUS_PANE2" translate="yes" restype="string">
<source xml:space="preserve">Pane 2</source>
<target xml:space="preserve" state="translated">Панель 2</target>
</trans-unit>
</group>
<group id="TOOLBAR">
<trans-unit id="IDS_TOOLBAR_STANDARD" translate="yes" restype="string">
<source xml:space="preserve">Standard</source>
<target xml:space="preserve" state="translated">Стандарт</target>
</trans-unit>
<trans-unit id="IDS_TOOLBAR_CUSTOMIZE" translate="yes" restype="string">
<source xml:space="preserve">Customize...</source>
<target xml:space="preserve" state="translated">Настроить...</target>
</trans-unit>
</group>
<group id="FILE">
<trans-unit id="IDS_FILE_VIEW" translate="yes" restype="string">
<source xml:space="preserve">File View</source>
<target xml:space="preserve" state="translated">Просмотр файлов</target>
</trans-unit>
</group>
<group id="CLASS">
<trans-unit id="IDS_CLASS_VIEW" translate="yes" restype="string">
<source xml:space="preserve">Class View</source>
<target xml:space="preserve" state="translated">Представление классов</target>
</trans-unit>
</group>
<trans-unit id="IDS_EXPLORER" translate="yes" restype="string">
<source xml:space="preserve">Explorer</source>
<target xml:space="preserve" state="translated">Исследователь</target>
</trans-unit>
<group id="OUTPUT">
<trans-unit id="IDS_OUTPUT_WND" translate="yes" restype="string">
<source xml:space="preserve">Output</source>
<target xml:space="preserve" state="translated">Выход</target>
</trans-unit>
</group>
<group id="BUILD">
<trans-unit id="IDS_BUILD_TAB" translate="yes" restype="string">
<source xml:space="preserve">Build</source>
<target xml:space="preserve" state="translated">Построить</target>
</trans-unit>
</group>
<group id="DEBUG">
<trans-unit id="IDS_DEBUG_TAB" translate="yes" restype="string">
<source xml:space="preserve">Debug</source>
<target xml:space="preserve" state="translated">Отладка</target>
</trans-unit>
</group>
<group id="FIND">
<trans-unit id="IDS_FIND_TAB" translate="yes" restype="string">
<source xml:space="preserve">Find</source>
<target xml:space="preserve" state="translated">Найти</target>
</trans-unit>
</group>
<group id="PROPERTIES">
<trans-unit id="IDS_PROPERTIES_WND" translate="yes" restype="string">
<source xml:space="preserve">Properties</source>
<target xml:space="preserve" state="translated">Свойства</target>
</trans-unit>
</group>
<group id="EDIT">
<trans-unit id="IDS_EDIT_MENU" translate="yes" restype="string">
<source xml:space="preserve">Edit</source>
<target xml:space="preserve" state="translated">Редактировать</target>
</trans-unit>
</group>
</group>
</body>
</file>
</xliff>
Локализация MFC проекта закончена.
Проверим что получилось…
Для этого я добавил в конструктор «CMFCApplication1App» вызов API функции SetThreadUILanguage, чтобы установить русский язык интерфейса для текущего потока.
Также я удалил из реестра ветку «HKEY_CURRENT_USER\Software\Local AppWizard-Generated Applications\MFCApplication1» поскольку без этого не все локализованные ресурсы отображаются.
Вот мой результат.