# 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=Intern\u00e1 chyba VM\: Nedostatok pam\u00e4te
EXEL052=Intern\u00e1 chyba VM\: Nebolo mo\u017en\u00e9 n\u00e1js\u0165 triedu java/lang/String
EXEL053=Intern\u00e1 chyba VM\: Zlyhalo vytvorenie po\u013ea bajtov pre triedu s n\u00e1zvom %s
EXEL054=Intern\u00e1 chyba VM\: Zlyhalo vytvorenie java/lang/String pre triedu s n\u00e1zvom %s
EXEL055=Intern\u00e1 chyba VM\: Nedostatok pam\u00e4te pri konvertovan\u00ed re\u0165azca do UTF pre triedu s n\u00e1zvom %s
EXEL056=Trieda %s neimplementuje main()
EXEL057=Intern\u00e1 chyba VM\: Zlyhalo vytvorenie po\u013ea argumentov
EXEL058=Intern\u00e1 chyba VM\: Zlyhalo vytvorenie po\u013ea bajtov pre argument %s
EXEL059=Intern\u00e1 chyba VM\: Zlyhalo vytvorenie java/lang/String pre argument %s
EXEL060=Intern\u00e1 chyba VM\: Zlyhalo nastavenie prvku po\u013ea pre %s
EXEL061=Chyba pri sp\u00fa\u0161\u0165an\u00ed VM\: Nedostatok pam\u00e4te
EXEL062=Intern\u00e1 chyba VM\: Zlyhalo vytvorenie Java VM

# Port
PORT001=Vyhradenie pam\u00e4te zlyhalo.
PORT002=Nezn\u00e1ma chyba pri zav\u00e1dzan\u00ed zdie\u013eanej kni\u017enice
PORT015=Referencie DLL sa nedaj\u00fa prelo\u017ei\u0165 - m\u00f4\u017ee h\u00fdba\u0165 vy\u017eadovan\u00e9 DLL
PORT016=Intern\u00e1 chyba %i
PORT017=Oper\u00e1cia zlyhala\: %d

# Zip
ZIPS000=%1$s sa ned\u00e1 otvori\u0165 (%2$s)
ZIPS001=%s sa ned\u00e1 otvori\u0165 (ch\u00fdba export)

