/*
 * WineFile (Russian resources)
 *
 * Copyright 2003 Igor Stepin
 * Copyright 2007 Konstantin Kondratyuk (Etersoft)
 *
 * 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 */

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "&Файл"  {
        MENUITEM "&Открыть\tEnter",             ID_ACTIVATE
        MENUITEM "&Переместить...\tF7",         ID_FILE_MOVE
        MENUITEM "&Копировать...\tF8",          ID_FILE_COPY
        MENUITEM "&В буфер обмена...\tF9",      118
        MENUITEM "&Удалить\tDel",               ID_FILE_DELETE
        MENUITEM "Переименовать...",            109
        MENUITEM "Свойства...\tAlt+Enter",      ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "Архивировать...",             119
        MENUITEM "Распаковать...",              120
        MENUITEM SEPARATOR
        MENUITEM "&Запустить...",               ID_EXECUTE
        MENUITEM "&Печатать...",                102
        MENUITEM "Ассоциировать...",            103
        MENUITEM SEPARATOR
        MENUITEM "Создать директорию...",       111
        MENUITEM "Поиск...",                    104
        MENUITEM "&Выделить файлы...",          116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "Выход\tAlt+X",                ID_FILE_EXIT
#else
        MENUITEM "Выход",                       ID_FILE_EXIT
#endif
    }

    POPUP "&Диск"  {
        MENUITEM "&Копировать диск...",         201
        MENUITEM "&Метка тома...",              202
        MENUITEM SEPARATOR
        MENUITEM "&Форматировать...",           ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "&Создать системный диск...", -1   /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "Подклю&чить сетевой диск",    ID_CONNECT_NETWORK_DRIVE
        MENUITEM "Отк&лючить сетевой диск",     ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "Сделать о&бщим как...",       254
        MENUITEM "&Закрыть общий доступ...",    255
        MENUITEM SEPARATOR
        MENUITEM "&Выбрать диск...",            251
    }

    POPUP "&Папки"  {
        MENUITEM "С&ледующий уровень\t+",       301
        MENUITEM "&Развернуть дерево\t*",       302
        MENUITEM "Развернуть в&се\tStrg+*",     303
        MENUITEM "&Свернуть дерево\t-",         304
        MENUITEM SEPARATOR
        MENUITEM "&Отметить ветви",             505
    }

    POPUP "&Вид"  {
        MENUITEM "Дерево &и папка",             413
        MENUITEM "Только &дерево",              411
        MENUITEM "Только &папка",               412
        MENUITEM SEPARATOR
        MENUITEM "Раз&бить",                    ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "И&мя",                        ID_VIEW_NAME
        MENUITEM "В&се подробности о файле",    ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "&Выборочно о файле...",       ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "&Сортировать по имени",       ID_VIEW_SORT_NAME
        MENUITEM "Сортировать по &типу",        ID_VIEW_SORT_TYPE
        MENUITEM "Сортировать по &размеру",     ID_VIEW_SORT_SIZE
        MENUITEM "Сортировать по д&ате",        ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Сортировать по &...",         ID_VIEW_FILTER
    }

    POPUP "&Настройки"  {
        MENUITEM "Под&тверждения...",           501
        MENUITEM "&Шрифт...",                   ID_SELECT_FONT
        MENUITEM "&Настроить панель инструментов...", 512
        MENUITEM SEPARATOR
        MENUITEM "&Панель инструментов",        ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "Панель &дисков",              ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "&Строка состояния",           ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "П&олный экран\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "&Значок в список программ",   504
        MENUITEM "Со&хранять настройки при выходе",511
    }


    POPUP "&Безопасность"  {
        MENUITEM "&Доступ...",                  605
        MENUITEM "&Протоколы...",               606
        MENUITEM "&Владелец...",                607
    }

    POPUP "&Окно"  {
        MENUITEM "Новое &окно",                 ID_WINDOW_NEW
        MENUITEM "Окна &каскадом\tCtrl+F5",     ID_WINDOW_CASCADE
        MENUITEM "Окна с&верху вниз",           ID_WINDOW_TILE_HORZ
        MENUITEM "Окна с&лева направо\tCtrl+F4",ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "Расположить &автоматически",  ID_WINDOW_AUTOSORT
#endif
        MENUITEM "&Расположить",                ID_WINDOW_ARRANGE
        MENUITEM "О&бновить\tF5",               ID_REFRESH
    }

    POPUP "&Справка"  {
        MENUITEM "&Содержание\tF1",             ID_HELP
        MENUITEM "&Поиск...\tF1",               ID_HELP
        MENUITEM "&Использование справки\tF1",  ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "&О Winefile...",              ID_ABOUT
    }
}


IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Выполнить"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Команда:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    CONTROL         "Как &символ", 214, "Button", BS_AUTOCHECKBOX|WS_TABSTOP,3, 45, 71, 12
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Отмена", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Справка", 254, 158, 43, 47, 14
}
IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Выберите путь назначения"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Путь:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Отмена", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Обзор", 254, 158, 43, 47, 14
}

IDD_DIALOG_VIEW_TYPE DIALOG DISCARDABLE 15, 13, 161, 97
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "По типу файлов"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "&Имя:",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "Тип файла",-1,7,23,87,56
    CONTROL         "&Каталоги",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "&Программы",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "&Документы",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "Другие &файлы",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "Показать скрытые/&системные файлы",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,106,9
    DEFPUSHBUTTON   "OK",IDOK,104,7,50,14
    PUSHBUTTON      "Отмена",IDCANCEL,104,24,50,14
END

IDD_DIALOG_PROPERTIES DIALOG DISCARDABLE  0, 0, 248, 215
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Свойства %s"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,191,7,50,14
    PUSHBUTTON      "Отмена",IDCANCEL,191,29,50,14
    LTEXT           "Имя &файла:",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "&Полный путь:",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Последнее изменение:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Версия:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Cop&yright:",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Размер:",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "Атрибуты",-1,7,79,158,46
    CONTROL         "&Только для чтения",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "С&крытый",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Archive",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "&Системный",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "С&жатый",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "&Информация о версии",-1,7,129,234,79
    LISTBOX         IDC_LIST_PROP_VERSION_TYPES,13,139,107,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_LIST_PROP_VERSION_VALUES,123,139,111,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END


STRINGTABLE
{
    IDS_FONT_SEL_DLG_NAME   "Применение параметров настройки шрифта"
    IDS_FONT_SEL_ERROR      "Ошибка при выборе нового шрифта."
}

STRINGTABLE
{
    IDS_WINEFILE            "Winefile"
    IDS_ERROR               "Ошибка"
    IDS_ROOT_FS             "Корневая файловая система"
    IDS_UNIXFS              "Основная файловая система"
    IDS_DESKTOP             "Рабочий стол"
    IDS_SHELL               "Shell"
    IDS_TITLEFMT            "%s - %s"
    IDS_NO_IMPL             "Ещё не реализовано"
    IDS_WINE_FILE           "Wine File"
}

STRINGTABLE
{
    IDS_COL_NAME            "Имя"
    IDS_COL_SIZE            "Размер"
    IDS_COL_CDATE           "Дата создания"
    IDS_COL_ADATE           "Дата последнего доступа"
    IDS_COL_MDATE           "Дата последнего изменения"
    IDS_COL_IDX             "Index/Inode"
    IDS_COL_LINKS           "Ссылки"
    IDS_COL_ATTR            "Атрибуты"
    IDS_COL_SEC             "Безопасность"

    IDS_FREE_SPACE_FMT      "%s из %s свободно"
}
