/*
 * Task termination utility
 * Dutch language support
 *
 * Copyright 2010 Sven Baars
 *
 * 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"

#pragma code_page(65001)

LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL

STRINGTABLE
{
    STRING_USAGE, "Gebruik: taskkill [/?] [/f] [/im ProcesNaam | /pid ProcesID]\n"
    STRING_INVALID_OPTION, "Fout: Onbekende of ongeldige commandoregeloptie gespecificeerd.\n"
    STRING_INVALID_PARAM, "Fout: Ongeldige commandoregelparameter gespecificeerd.\n"
    STRING_MISSING_OPTION, "Fout: Eén van de opties /im of /pid moet zijn gespecificeerd.\n"
    STRING_MISSING_PARAM, "Fout: Optie %s verwacht een commandoregelparameter.\n"
    STRING_MUTUAL_EXCLUSIVE, "Fout: Opties /im en /pid spreken elkaar tegen.\n"
    STRING_CLOSE_PID_SEARCH, "Bericht om te sluiten verzonden naar top-level vensters van het proces met PID %u.\n"
    STRING_CLOSE_PROC_SRCH, "Bericht om te sluiten verzonden naar top-level vensters van het proces \"%s\" met PID %u.\n"
    STRING_TERM_PID_SEARCH, "Proces met PID %u is geforceerd beëindigd.\n"
    STRING_TERM_PROC_SEARCH, "Proces \"%s\" met PID %u is geforceerd beëindigd.\n"
    STRING_SEARCH_FAILED, "Fout: Kon proces \"%s\" niet vinden.\n"
    STRING_ENUM_FAILED, "Fout: Kon de proceslijst niet opsommen.\n"
    STRING_TERMINATE_FAILED, "Fout: Kon het proces \"%s\" niet beëindigen.\n"
    STRING_SELF_TERMINATION, "Fout: Zelf-beëindiging van een proces is niet toegestaan.\n"
}
