/*
 * Ukrainian Language Support
 *
 * Copyright 2008 Mikolaj Zalewski
 * Copyright 2010 igor Paliychuk
 *
 * 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_UKRAINIAN, SUBLANG_DEFAULT

IDM_DEBUG_POPUP MENU
BEGIN
    POPUP ""
    BEGIN
        MENUITEM "&Налагодження", ID_DEBUG
    END
END

IDD_CRASH_DLG DIALOGEX 100, 100, 273, 175
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Помилка програми"
FONT 8, "Tahoma"
BEGIN
    LTEXT           "",IDC_STATIC_BG,0,0,273,52,WS_BORDER,0
    LTEXT           "В програмі %s сталась серйозна помилка. Програма повинна \
                    бути закрита. Вибачте за незручності.",
                    IDC_STATIC_TXT1,27,10,224,30
    LTEXT           "Це могло бути викликане проблемою в програмі або недоробкою в Wine. \
                    Ви можете відвідати http://appdb.winehq.org та пошукати поради щодо \
                    запуску цієї програми.\n\n\
                    Якщо ця проблема не присутня під Windows і ще не була зареєстрована, \
                    ви можете повідомити про неї на http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100
    DEFPUSHBUTTON   "Закрити", IDOK, 205, 151, 60, 16, WS_TABSTOP
END

STRINGTABLE
BEGIN
    IDS_AUTO_CAPTION     "Крах програми Wine"
    IDS_INVALID_PARAMS   "Внутрішні помилки - отримані невірні параметри"
    IDS_UNIDENTIFIED     "(не визначено)"
END
