/*
 * Regedit (Russian resources)
 *
 * Copyright 2003 Igor Stepin
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "resource.h"

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

/*
 * Menu
 */

IDR_REGEDIT_MENU MENU DISCARDABLE
BEGIN
    POPUP "&Реестр"
    BEGIN
        MENUITEM "&Импортировать файл реестра...",    ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "&Экспортировать файл реестра...",    ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "&Подключить сетевой реестр...", ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "&Отключить сетевой реестр...",  ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "&Напечатать\tCtrl+P",              ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "В&ыйти",                       ID_REGISTRY_EXIT
    END
    POPUP "&Правка"
    BEGIN
        MENUITEM "&Изменить",                     ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "Созд&ать"
        BEGIN
            MENUITEM "Кл&юч",                        ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "&Строковое значение",               ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Бинарное значение",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD значение",                ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Многостроковое значение",       ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Удалить\tDel",                ID_EDIT_DELETE
        MENUITEM "&Переименовать\tF2",           ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "С&копировать имя ключа",              ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Найти\tCtrl+F",               ID_EDIT_FIND, GRAYED
        MENUITEM "Найти &далее\tF3",              ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "&Вид"
    BEGIN
        MENUITEM "Строка &состояния",                 ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Разделить",                      ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Обновить\tF5",                ID_VIEW_REFRESH
    END
    POPUP "&Избранное"
    BEGIN
        MENUITEM "&Добавить в избранное...",          ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "&Удалить из избранного...",           ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "&Справка"
    BEGIN
        MENUITEM "&Содержание",                ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "&О редакторе реестра",      ID_HELP_ABOUT
    END
END

IDR_POPUP_MENUS MENU DISCARDABLE
BEGIN
  POPUP ""
  BEGIN
	MENUITEM "&Изменить",                   ID_EDIT_MODIFY
	MENUITEM "Изменить &бинарное значение", ID_EDIT_MODIFY_BIN
	MENUITEM SEPARATOR
	MENUITEM "&Удалить\tDel",               ID_EDIT_DELETE
	MENUITEM "&Переименовать",              ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "Созд&ать"
        BEGIN
            MENUITEM "Кл&юч",                   ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "&Строковое значение",     ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Бинарное значение",      ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD значение",         ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Многостроковое значение", ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Удалить\tDel",               ID_EDIT_DELETE
        MENUITEM "&Переименовать\tF2",          ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Экспортировать...",          ID_EDIT_EXPORT
        MENUITEM "С&копировать имя ключа",      ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Найти\tCtrl+F",              ID_EDIT_FIND, GRAYED
  END
END


/*
 * Dialog
 */

IDD_EXPORT_TEMPLATE DIALOG DISCARDABLE  50, 50, 278, 54
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
    WS_BORDER
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Экспорт реестра", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "&Весь реестр", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "В&ыбранную ветку:", IDC_EXPORT_SELECTED, 12, 30, 80, 12
    EDITTEXT IDC_EXPORT_PATH, 92, 30, 174, 12
END

IDD_FIND DIALOG DISCARDABLE  22, 17, 210, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Поиск"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Найти:",IDC_STATIC,5,7,119,8
    EDITTEXT        IDC_VALUE_NAME,40,5,120,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    LTEXT           "Искать в:",IDC_STATIC,5, 22, 119, 8
    CHECKBOX        "Ключах", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX        "Названиях значений", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Содержимом", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Всю строку целиком", IDC_FIND_WHOLE, 5, 70, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    DEFPUSHBUTTON   "Искать",IDOK,170,5,35,11,WS_GROUP
    PUSHBUTTON      "Закрыть",IDCANCEL,170,22,35,11, WS_GROUP
END

IDD_ADDFAVORITE DIALOG DISCARDABLE  22, 17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Добавить избранное"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Имя:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,130,40,30,11,WS_GROUP
    PUSHBUTTON      "Отменить",IDCANCEL,165,40,40,11, WS_GROUP
END

IDD_DELFAVORITE DIALOG DISCARDABLE  22, 17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Удалить избранное"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Имя:",IDC_STATIC,5,5,119,8
    LISTBOX         IDC_NAME_LIST,5,15,200,52, WS_BORDER | WS_TABSTOP | LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL
    DEFPUSHBUTTON   "OK",IDOK,130,73,30,11,WS_GROUP
    PUSHBUTTON      "Отменить",IDCANCEL,165,73,40,11, WS_GROUP
END

IDD_EDIT_STRING DIALOG DISCARDABLE  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Изменить строку"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Название значения:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Данные:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,130,60,30,11,WS_GROUP
    PUSHBUTTON      "Отменить",IDCANCEL,165,60,40,11,WS_GROUP
END

IDD_EDIT_DWORD DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Изменить DWORD"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Название значения:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Данные:",IDC_STATIC,5,30,90,8
    EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
    GROUPBOX        "Исчисление", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
    AUTORADIOBUTTON "16-ти ричное", IDC_DWORD_HEX, 130, 40, 60, 10, WS_TABSTOP
    AUTORADIOBUTTON "Десятичное", IDC_DWORD_DEC, 130, 52, 60, 10, WS_TABSTOP
    DEFPUSHBUTTON   "OK",IDOK,130,80,30,11,WS_GROUP
    PUSHBUTTON      "Отменить",IDCANCEL,165,80,40,11,WS_GROUP
END

IDD_EDIT_BINARY DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Изменить бинарные данные"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Название значения:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Данные:",IDC_STATIC,5,30,90,8
    CONTROL         "",IDC_VALUE_DATA,"HexEdit",WS_TABSTOP,4,40,160,40
    DEFPUSHBUTTON   "OK",IDOK,130,80,30,11,WS_GROUP
    PUSHBUTTON      "Отменить",IDCANCEL,165,80,40,11,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG DISCARDABLE  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Изменить многостроковые данные"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Название значения:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Данные:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,112, WS_BORDER | WS_TABSTOP | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN
    DEFPUSHBUTTON   "OK",IDOK,130,160,30,11,WS_GROUP
    PUSHBUTTON      "Отменить",IDCANCEL,165,160,40,11,WS_GROUP
END

/*
 * String Table
 */

STRINGTABLE DISCARDABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "Имя"
    IDS_LIST_COLUMN_TYPE    "Тип"
    IDS_LIST_COLUMN_DATA    "Данные"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_APP_TITLE           "Редактор реестра"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_MENU        "Содержит команды для работы с реестром в целом"
    ID_EDIT_MENU            "Содержит команды для редактирования значений или ключей"
    ID_VIEW_MENU            "Содержит команды для настройки окна реестра"
    ID_FAVORITES_MENU       "Содержит команды для доступа к часто используемым ключам"
    ID_HELP_MENU            "Содержит команды для отображения справки и информации о редакторе реестра"
    ID_EDIT_NEW_MENU        "Содержит команды для создания новых ключей или значений"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_EDIT_MODIFY          "Изменяет значение параметра"
    ID_EDIT_NEW_KEY         "Добавляет новый ключ"
    ID_EDIT_NEW_STRINGVALUE "Добавляет новое строковое значение"
    ID_EDIT_NEW_BINARYVALUE "Добавляет новое бинарное значение"
    ID_EDIT_NEW_DWORDVALUE  "Добавляет новое DWORD-значение"
    ID_EDIT_NEW_MULTI_STRINGVALUE "Добавляет новое многостроковое значение"
    ID_REGISTRY_IMPORTREGISTRYFILE "Импортирует текстовой файл в реестр"
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "Экспортирует весь реестр или его часть в текстовой файл"
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "Подключается к реестру удалённого компьютера"
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "Отключается от реестра удалённого компьютера"
    ID_REGISTRY_PRINT       "Печатает весь реестр или его часть"
/*    ID_HELP_HELPTOPICS      "Opens registry editor help" */
    ID_HELP_ABOUT           "Отображает информацию о программе, номер версии и список авторов"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_EXIT        "Выход из редактора реестра"
    ID_FAVORITES_ADDTOFAVORITES "Добавить ключ в избранное"
    ID_FAVORITES_REMOVEFAVORITE "Удалить ключ из избранного"
    ID_VIEW_STATUSBAR       "Показать или скрыть строку состояния"
    ID_VIEW_SPLIT           "Изменить позицию разделителя между двумя панелями"
    ID_VIEW_REFRESH         "Обновляет окно"
    ID_EDIT_DELETE          "Удаляет выделение"
    ID_EDIT_RENAME          "Переименовывает выделение"
    ID_EDIT_COPYKEYNAME     "Копирует имя выделенного ключа в буфер обмена"
    ID_EDIT_FIND            "Ищет текстовую строку в ключе, значении или данных"
    ID_EDIT_FINDNEXT        "Ищет следующее совпадение текста, заданного в предыдущем поиске"
    ID_EDIT_EXPORT          "Экспортирует выделенную ветку реестра в текстовый файл"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_ERROR		    "Ошибка"
    IDS_BAD_KEY		    "Невозможно запросить ключ '%s'"
    IDS_BAD_VALUE           "Невозможно запросить значение '%s'"
    IDS_UNSUPPORTED_TYPE    "Редактирование ключей типа (%u) не поддерживается"
    IDS_TOO_BIG_VALUE       "Значение слишком велико (%u)"
    IDS_DELETE_BOX_TITLE    "Подтверждение"
    IDS_DELETE_BOX_TEXT     "Удалить значение '%s'?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "Вы уверены что хотите удалить эти значения?"
    IDS_NEWKEY              "Новый ключ #%d"
    IDS_NEWVALUE            "Новое значени #%d"
    IDS_NOTFOUND            "Искомая строка '%s' не найдена"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_FILEDIALOG_IMPORT_TITLE   "Импорт файла реестра"
    IDS_FILEDIALOG_EXPORT_TITLE   "Экспорт файла реестра"
    IDS_FILEDIALOG_FILTER         "Все файлы реестра\0*.reg\0Файлы реестра для Win9x/NT4 (REGEDIT4)\0*.reg\0Все файлы (*.*)\0*.*\0\0"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_REGISTRY_ROOT_NAME           "Мой Компьютер"
    IDS_REGISTRY_DEFAULT_VALUE       "(По умолчанию)"
    IDS_REGISTRY_VALUE_NOT_SET       "(значение не задано)"
    IDS_REGISTRY_VALUE_CANT_DISPLAY  "(невозможно отобразить)"
    IDS_REGISTRY_UNKNOWN_TYPE        "(неизвестно %d)"
END

/*****************************************************************/

/*
 * TEXTINCLUDE
 */

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

/*****************************************************************/
