# 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=Errore interno VM\: Memoria non sufficiente
EXEL052=Errore VM interno\: Impossibile trovare la classe java/lang/String
EXEL053=Errore VM interno\: Impossibile creare la serie di byte per il nome classe %s
EXEL054=Errore VM interno\: Impossibile creare java/lang/String per il nome classe %s
EXEL055=Errore VM interno\: Memoria non sufficiente per convertire la stringa in caratteri UTF per il nome della classe %s
EXEL056=La classe %s non implementa main()
EXEL057=Errore VM interno\: Impossibile creare una serie di argomenti
EXEL058=Errore VM interno\: Impossibile creare una serie di byte per l'argomento %s
EXEL059=Errore VM interno\: Impossibile creare java/lang/String per l'argomento %s
EXEL060=Errore VM interno\: Impossibile impostare l'elemento di serie per %s
EXEL061=Errore di avvio VM\: Memoria non sufficiente
EXEL062=Errore VM interno\: Non riesce a creare Java VM

# Port
PORT001=Impossibile assegnare la memoria.
PORT002=Errore sconosciuto nel caricamento della libreria condivisa
PORT015=Impossibile risolvere i riferimenti DLL -un prerequisito DLL potrebbe essere mancante
PORT016=Errore interno %i
PORT017=Operazione non riuscita\: %d

# Zip
ZIPS000=Impossibile aprire %1$s (%2$s)
ZIPS001=Impossibile aprire %s (Esportazione mancante)

