# -*- coding: iso-8859-1 -*-
import sys

internalError = 0
fileNotFoundError = 1
invalidOperationError = 2
syntaxInInputError = 3

englishTable = [
"Internal error",
"File not found",
"Invalid operation",
"Syntax error in input file",
]

germanTable = [
"Interner Fehler",
"Datei nicht gefunden",
"Ungültige Operation",
"Syntaxfehler in Eingabedatei",
]

def reportError(errCode=-1, errTable=englishTable, fatal=0):
  if errCode==-1:
    msg = "No error specified"
  else:
    msg = errTable[errCode]
  sys.stderr.write("%s: %s\n"%(sys.argv[0], msg))
  if fatal:
    sys.exit(1)

if __name__=="__main__":
  reportError()
  reportError(internalError)
  reportError(internalError, errTable=germanTable)
  reportError(invalidOperationError, fatal=1)

Der Zugriff auf sys.argv[0] gibt den Namen des aktuell laufenden Programms aus – es ist zumindest unter Unix guter Ton, das bei Fehlermeldungen zu tun.

Die ist übrigens kein besonders schlauer Weg, um zu Internationalisieren (d.h. etwa Fehlermeldungen in Landessprachen auszugeben), schon weil das viel zu wenig automatiert ist. Wenn ihr sowas machen wollt, solltet ihr euch GNU gettext ansehen – die Idee dabei ist, den jeweiligen String im Quellcode als Schlüssel in eine Datenbank von Übersetzungen zu verwenden.