/*
 * Task termination utility
 * German language support
 *
 * Copyright 2010 André Hentschel
 *
 * 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_GERMAN, SUBLANG_NEUTRAL

STRINGTABLE
{
    STRING_USAGE, "Aufruf: taskkill [/?] [/f] [/im ProzessName | /pid ProzessID]\n"
    STRING_INVALID_OPTION, "Fehler: Unbekannte oder ungültige Kommandozeilenoption angegeben.\n"
    STRING_INVALID_PARAM, "Fehler: Ungültiger Kommandozeilenparameter angegeben.\n"
    STRING_MISSING_OPTION, "Fehler: Nur eine der Optionen /im oder /pid dürfen angegeben werden.\n"
    STRING_MISSING_PARAM, "Fehler: Option %s erwartet einen Kommandozeilenparameter.\n"
    STRING_MUTUAL_EXCLUSIVE, "Fehler: Optionen /im und /pid widersprechen sich.\n"
    STRING_CLOSE_PID_SEARCH, "Ein Beendigungssignal wurde an die Top-Level Fenster des Prozesses mit der PID %u geschickt.\n"
    STRING_CLOSE_PROC_SRCH, "Ein Beendigungssignal wurde an die Top-Level Fenster des Prozessess \"%s\" mit der PID %u geschickt.\n"
    STRING_TERM_PID_SEARCH, "Prozess mit der PID %u wurde zum beenden gezwungen.\n"
    STRING_TERM_PROC_SEARCH, "Prozess \"%s\" mit der PID %u wurde zum beenden gezwungen.\n"
    STRING_SEARCH_FAILED, "Fehler: Konnte Prozess \"%s\" nicht finden.\n"
    STRING_ENUM_FAILED, "Fehler: Konnte die Prozessliste nicht Enumerieren.\n"
    STRING_TERMINATE_FAILED, "Fehler: Konnte Prozess \"%s\" nicht beenden.\n"
    STRING_SELF_TERMINATION, "Fehler: Eigenen Prozess beenden ist nicht gestattet.\n"
}
