Локализация RC (C++, MFC, Win32)

от автора

… Продолжение, интернационализация 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)

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» поскольку без этого не все локализованные ресурсы отображаются.

Вот мой результат.

ссылка на оригинал статьи http://habrahabr.ru/post/259563/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *