# 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=Bels\u0151 VM hiba\: Elfogyott a mem\u00f3ria
EXEL052=Bels\u0151 VM hiba\: nem tal\u00e1lhat\u00f3 a java/lang/String oszt\u00e1ly
EXEL053=Bels\u0151 VM hiba\: nem siker\u00fclt byte t\u00f6mb\u00f6t l\u00e9trehozni a(z) %s oszt\u00e1lyn\u00e9vhez
EXEL054=Bels\u0151 VM hiba\: nem siker\u00fclt java/lang/String oszt\u00e1lyt l\u00e9trehozni a(z) %s oszt\u00e1lyn\u00e9vhez
EXEL055=Bels\u0151 VM hiba\: Elfogyott a mem\u00f3ria a(z) %s oszt\u00e1lyn\u00e9v karaktersorozatainak UTF karakterekre k\u00f3dol\u00e1sa k\u00f6zben
EXEL056=A(z) %s oszt\u00e1ly nem val\u00f3s\u00edtja meg a main() met\u00f3dust
EXEL057=Bels\u0151 VM hiba\: Nem siker\u00fclt l\u00e9trehozni az argumentumt\u00f6mb\u00f6t
EXEL058=Bels\u0151 VM hiba\: nem siker\u00fclt byte t\u00f6mb\u00f6t l\u00e9trehozni a(z) %s argumentumhoz
EXEL059=Bels\u0151 VM hiba\: nem siker\u00fclt java/lang/String oszt\u00e1lyt l\u00e9trehozni a(z) %s argumentumhoz
EXEL060=Bels\u0151 VM hiba\: nem siker\u00fclt be\u00e1ll\u00edtani %s t\u00f6mbelem\u00e9t
EXEL061=VM ind\u00edt\u00e1si hiba\: Nincs el\u00e9g mem\u00f3ria
EXEL062=Bels\u0151 VM hiba\: nem siker\u00fclt l\u00e9trehozni a Java virtu\u00e1lis g\u00e9pet

# Port
PORT001=Nem siker\u00fclt mem\u00f3ri\u00e1t lefoglalni.
PORT002=Ismeretlen hiba a megosztott f\u00fcggv\u00e9nyt\u00e1r bet\u00f6lt\u00e9se k\u00f6zben
PORT015=Nem oldhat\u00f3k fel a DLL hivatkoz\u00e1sok - lehet, hogy hi\u00e1nyzik egy el\u0151felt\u00e9tel DLL
PORT016=Bels\u0151 hiba\: %i
PORT017=A m\u0171velet meghi\u00fasult\: %d

# Zip
ZIPS000=%1$s nem nyithat\u00f3 meg (%2$s)
ZIPS001=%s nem nyithat\u00f3 meg (export hi\u00e1nyzik)

