/*
 * 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

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
