/*
 * 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 DISCARDABLE
{
    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 "Rinvio (v2)"
    10 "Rinvio"
    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 "Tempo scaduto"
    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 risultato presente nel messaggio"
    95 "Più risultati ricevuti"
    96 "Loop nel gestire i rinvii"
    97 "Ecceduto il limite di salti di rinvio"
}
