/*
 * Task termination utility
 * Ukrainian language support
 *
 * Copyright 2010 Andrew Nguyen
 * 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 "taskkill.h"

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

LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_USAGE, "Використання: taskkill [/?] [/f] [/im Ім'яПроцесу | /pid IDПроцесу]\n"
    STRING_INVALID_OPTION, "Помилка: Вказана невідома чи невірна опція командного рядка.\n"
    STRING_INVALID_PARAM, "Помилка: Вказано невірний параметр командного рядка.\n"
    STRING_MISSING_OPTION, "Помилка: Повинна бути вказана одна з опцій /im чи /pid.\n"
    STRING_MISSING_PARAM, "Помилка: Опція %s очікує параметр командного рядка.\n"
    STRING_MUTUAL_EXCLUSIVE, "Помилка: Опції /im та /pid є взаємновиключними.\n"
    STRING_CLOSE_PID_SEARCH, "Надіслано повідомлення закриття до вікон верхнього рівня процесу з PID %u.\n"
    STRING_CLOSE_PROC_SRCH, "Надіслано повідомлення закриття до вікон верхнього рівня процесу \"%s\" з PID %u.\n"
    STRING_TERM_PID_SEARCH, "Процес з PID %u був завершений примусово.\n"
    STRING_TERM_PROC_SEARCH, "Процес \"%s\" з PID %u був завершений примусово.\n"
    STRING_SEARCH_FAILED, "Помилка: Не вдалось знайти процес \"%s\".\n"
    STRING_ENUM_FAILED, "Помилка: Неможливо перелічити список процесів.\n"
    STRING_TERMINATE_FAILED, "Помилка: Не вдається завершити процес \"%s\".\n"
    STRING_SELF_TERMINATION, "Помилка: Самоприпинення процесу не дозволене.\n"
}
