# 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=EXEL058=Notranja napaka VM\: Zmanjkalo je pomnilnika
EXEL052=Notranja napaka VM\: Iskanje razreda java/lang/String je spodletelo
EXEL053=Notranja napaka VM\: Ustvarjanje polja bajtov za ime razreda %s je spodletelo
EXEL054=Notranja napaka VM\: Ustvarjanje java/lang/String za ime razreda %s je spodletelo
EXEL055=Notranja napaka VM\: Zmanjkalo je pomnilnika pri pretvorbi niza v znake UTF za ime razreda %s
EXEL056=Razred %s ne izvr\u0161uje glavnega()
EXEL057=Notranja napaka VM\: Ustvarjanje polja argumentov je spodletelo
EXEL058=Notranja napaka VM\: stvarjanje polja bajtov za argument %s je spodletelo
EXEL059=Notranja napaka VM\: Ustvarjanje java/lang/String za argument %s je spodletelo
EXEL060=Notranja napaka VM\: Nastavitev elementa polja za %s je spodletela
EXEL061=Zagonska napaka VM\: Zmanjkalo je pomnilnika
EXEL062=Notranja napaka VM\: Ustvarjanje Java VM je spodletelo

# Port
PORT001=Dodelitev pomnilnika je spodletela.
PORT002=Neznana napaka pri nalaganju knji\u017enice v skupni rabi
PORT015=Sklicev DLL ni mogo\u010de razre\u0161iti - morda manjka pogoj za DLL
PORT016=Notranja napaka %i
PORT017=Operacija je spodletela\: %d

# Zip
ZIPS000=Ni mogo\u010de odpreti %1$s (%2$s)
ZIPS001=Ni mogo\u010de odpreti %s (manjkajo\u010di izvoz)

