/*
 * Italian resources for WLDAP32
 *
 * Copyright 2010 Luca Bennati
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "windef.h"

/*UTF-8*/
#pragma code_page(65001)

LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL

STRINGTABLE
{
    0 "Successo"
    1 "Errore nelle operazioni"
    2 "Errore nel protocollo"
    3 "Superato il tempo limite"
    4 "Superata la dimensione massima"
    5 "Compara falso"
    6 "Compara vero"
    7 "Metodo di autenticazione non supportato"
    8 "Autenticazione forte richiesta"
    9 "Referral (v2)"
    10 "Referral"
    11 "Superato il limite di amministrazione"
    12 "Estensione critica non disponibile"
    13 "Richiesta confidenzialità"
    14 ""
    15 ""
    16 "Attributo inesistente"
    17 "Tipo non definito"
    18 "Matching inappropriato"
    19 "Violazione del vincolo"
    20 "Attributo o valore esistente"
    21 "Sintassi non valida"
    22 ""
    23 ""
    24 ""
    25 ""
    26 ""
    27 ""
    28 ""
    29 ""
    30 ""
    31 ""
    32 "Oggetto inesistente"
    33 "Problema di alias"
    34 "Sintassi DN non valida"
    35 "È foglia"
    36 "Problema di dereferenziazione di alias"
    37 ""
    38 ""
    39 ""
    40 ""
    41 ""
    42 ""
    43 ""
    44 ""
    45 ""
    46 ""
    47 ""
    48 "Autenticazione non appropriata"
    49 "Credenziali non valide"
    50 "Diritti insufficenti"
    51 "Occupato"
    52 "Non disponibile"
    53 "Non intenzionato ad agire"
    54 "Trovato Loop"
    55 ""
    56 ""
    57 ""
    58 ""
    59 ""
    60 "Controllo dell'ordine mancante"
    61 "Errore di range dell'indice"
    62 ""
    63 ""
    64 "Violazione di nominazione"
    65 "Violazione di classe dell'oggetto"
    66 "Non permesso su non-foglie"
    67 "Non permesso su RDN"
    68 "Esiste già"
    69 "Nessuna mod di classi di oggetto"
    70 "Risultati troppo grandi"
    71 "Ha effetto su molti DSA"
    72 ""
    73 ""
    74 ""
    75 ""
    76 ""
    77 ""
    78 ""
    79 ""
    80 "Altro"
    81 "Server irraggiungibile"
    82 "Errore locale"
    83 "Errore di codifica"
    84 "Errore di decodifica"
    85 "Timeout"
    86 "Autenticazione sconosciuta"
    87 "Errore del filtro"
    88 "Utente eliminato"
    89 "Errore del parametro"
    90 "Memoria non disponibile"
    91 "Impossibile connettersi al server LDAP"
    92 "Operazione non supportata da questa versione del protocollo LDAP"
    93 "Il controllo specificato non è stato trovato nel messaggio"
    94 "Nessun rislutato presente nel messaggio"
    95 "Più risultati ricevuti"
    96 "Loop nel gestire i referral"
    97 "Ecceduto il limite di salti di referral"
}
