/*
* Add/Remove Programs Russian resources
*
* Copyright 2008 Vladimir Pankratov
* Copyright 2008 Vitaliy Margolen
*
* 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 "res.h"

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

LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

STRINGTABLE
{
   IDS_CPL_TITLE, "Установка/Удаление программ"
   IDS_CPL_DESC, "Позволяет устанавливать новое ПО или удалять существующее с вашего компьютера."
   IDS_TAB1_TITLE, "Приложения"

   IDS_UNINSTALL_FAILED, "Невозможно выполнить, '%s'. Вы хотите удалить программу из списка?"
   IDS_NOT_SPECIFIED, "Отсутствует"

   IDS_COLUMN_NAME, "Название"
   IDS_COLUMN_PUBLISHER, "Издатель"
   IDS_COLUMN_VERSION, "Версия"
   IDS_INSTALL_FILTER, "Установщики\0*instal*.exe;*setup*.exe;*.msi\0Программы (*.exe)\0*.exe\0Все файлы (*.*)\0*.*\0\0"


   IDS_REMOVE, "&Удалить..."
   IDS_MODIFY_REMOVE, "&Изменить/Удалить..."
}

STRINGTABLE
{
    IDS_DOWNLOADING     "Загрузка..."
    IDS_INSTALLING      "Установка..."
}

IDD_MAIN DIALOG 0, 0, 320, 235
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Установка/Удаление"
FONT 8, "MS Shell Dlg"
{
CONTROL "Чтобы установить программу с CD-ROM, дискеты или жёсткого диска, нажмите Установить.", 1000, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 7, 270, 20
 CONTROL "Ус&тановить...", IDC_INSTALL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 246, 26, 64, 14
 CONTROL "", -1, "STATIC", SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 7, 46, 303, 1
 CONTROL 2, 1001, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 7, 21, 20
 CONTROL "&Перечисленные программы можно удалить или переустановить автоматически. Чтобы удалить программу или изменить состав установленных компонентов, выберите нужный пункт списка и нажмите кнопку Установить/Удалить.", 1002, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 55, 270, 32
 CONTROL "", IDL_PROGRAMS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SORTASCENDING | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 90, 303, 100
 CONTROL "&Сведения о поддержке...", IDC_SUPPORT_INFO, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 198, 94, 14
 CONTROL "&Изменить...", IDC_MODIFY, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 172, 198, 68, 14
 CONTROL "&Удалить...", IDC_ADDREMOVE, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 244, 198, 68, 14
 CONTROL 3, 1003, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 57, 21, 20
}

IDD_INFO DIALOG 0, 0, 256, 138
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Сведения о поддержке"
FONT 8, "MS Shell Dlg"
{
 CONTROL "OK", IDOK, "BUTTON", BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 103, 116, 50, 14
 CONTROL "Перечисленная информация может быть использована для получения технической поддержки приложения %s:", IDC_INFO_LABEL, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 12, 9, 228, 23
 CONTROL "Издатель:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 33, 60, 8
 CONTROL "Версия:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 43, 60, 8
 CONTROL "Контактное лицо:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 53, 60, 8
 CONTROL "Поддержка:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 63, 64, 8
 CONTROL "Телефон:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 73, 68, 8
 CONTROL "Файл 'Readme':", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 83, 60, 8
 CONTROL "Обновления:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 93, 60, 8
 CONTROL "Комментарий:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 103, 60, 8
 CONTROL "", IDC_INFO_PUBLISHER, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 33, 136, 8
 CONTROL "", IDC_INFO_VERSION, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 43, 136, 8
 CONTROL "", IDC_INFO_CONTACT, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 53, 136, 8
 CONTROL "", IDC_INFO_SUPPORT, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 63, 136, 8
 CONTROL "", IDC_INFO_PHONE, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 73, 136, 8
 CONTROL "", IDC_INFO_README, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 83, 136, 8
 CONTROL "", IDC_INFO_UPDATES, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 93, 136, 8
 CONTROL "", IDC_INFO_COMMENTS, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 103, 136, 8
}

ID_DWL_DIALOG DIALOG  0, 0, 261, 110
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Установка Wine Gecko"
FONT 8, "MS Shell Dlg"
{
    LTEXT "Wine не может найти пакет Gecko, который необходим для корректной работы приложений "\
          "с поддержкой HTML. " \
          "Wine может автоматически загрузить и установить его для вас.\n\n" \
          "Примечание: рекомендуется использовать пакет, предоставляемый вашим дистрибутивом. "\
          "Посетите http://wiki.winehq.org/Gecko для получения более подробной информации.",
          ID_DWL_STATUS, 10, 10, 240, 70, SS_LEFT
    CONTROL "Прогресс", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 65, 240, 12
    DEFPUSHBUTTON "&Установить", ID_DWL_INSTALL, 180, 85, 70, 15, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Отмена", IDCANCEL, 100, 85, 70, 15, WS_GROUP | WS_TABSTOP
}
