# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Launcher
EXEL050=java version %s
EXEL051=Interner VM-Fehler\: Nicht gen\u00fcgend Speicherkapazit\u00e4t
EXEL052=Interner VM-Fehler\: Klasse java/lang/String konnte nicht gefunden werden.
EXEL053=Interner VM-Fehler\: Bytefeldgruppe f\u00fcr Klassenname %s konnte nicht erstellt werden.
EXEL054=Interner VM-Fehler\: java/lang/String f\u00fcr Klassenname %s konnte nicht erstellt werden.
EXEL055=Interner VM-Fehler\: Nicht gen\u00fcgend Speicherkapazit\u00e4t beim Konvertieren der Zeichenfolge in UTF-Zeichen f\u00fcr Klassenname %s
EXEL056=Klasse %s implementiert main() nicht.
EXEL057=Interner VM-Fehler\: Argumentenfeldgruppe konnte nicht erstellt werden.
EXEL058=Interner VM-Fehler\: Bytefeldgruppe f\u00fcr Argument %s konnte nicht erstellt werden.
EXEL059=Interner VM-Fehler\: java/lang/String f\u00fcr Argument %s konnte nicht erstellt werden.
EXEL060=Interner VM-Fehler\: Feldgruppenelement f\u00fcr %s konnte nicht festgelegt werden.
EXEL061=Fehler beim VM-Start\: Nicht gen\u00fcgend Speicherkapazit\u00e4t.
EXEL062=Interner VM-Fehler\: Java VM konnte nicht erstellt werden.

# Port
PORT001=Speicher konnte nicht zugeordnet werden.
PORT002=Unbekannter Fehler beim Laden der gemeinsam genutzten Bibliothek
PORT015=DLL-Referenzen k\u00f6nnen nicht aufgel\u00f6st werden. M\u00f6glicherweise fehlt eine vorausgesetzte DLL.
PORT016=Interner Fehler %i
PORT017=Operation ist fehlgeschlagen\: %d

# Zip
ZIPS000=%1$s kann nicht ge\u00f6ffnet werden (%2$s)
ZIPS001=%s kann nicht ge\u00f6ffnet werden (fehlender Export).

