/*
 * English resources for WLDAP32
 *
 * Copyright 2005 Hans Leidekker
 *
 * 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"

#pragma makedep po

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    0 "Success"
    1 "Operations Error"
    2 "Protocol Error"
    3 "Time Limit Exceeded"
    4 "Size Limit Exceeded"
    5 "Compare False"
    6 "Compare True"
    7 "Authentication Method Not Supported"
    8 "Strong Authentication Required"
    9 "Referral (v2)"
    10 "Referral"
    11 "Administration Limit Exceeded"
    12 "Unavailable Critical Extension"
    13 "Confidentiality Required"
    14 ""
    15 ""
    16 "No Such Attribute"
    17 "Undefined Type"
    18 "Inappropriate Matching"
    19 "Constraint Violation"
    20 "Attribute Or Value Exists"
    21 "Invalid Syntax"
    22 ""
    23 ""
    24 ""
    25 ""
    26 ""
    27 ""
    28 ""
    29 ""
    30 ""
    31 ""
    32 "No Such Object"
    33 "Alias Problem"
    34 "Invalid DN Syntax"
    35 "Is Leaf"
    36 "Alias Dereference Problem"
    37 ""
    38 ""
    39 ""
    40 ""
    41 ""
    42 ""
    43 ""
    44 ""
    45 ""
    46 ""
    47 ""
    48 "Inappropriate Authentication"
    49 "Invalid Credentials"
    50 "Insufficient Rights"
    51 "Busy"
    52 "Unavailable"
    53 "Unwilling To Perform"
    54 "Loop Detected"
    55 ""
    56 ""
    57 ""
    58 ""
    59 ""
    60 "Sort Control Missing"
    61 "Index range error"
    62 ""
    63 ""
    64 "Naming Violation"
    65 "Object Class Violation"
    66 "Not allowed on Non-leaf"
    67 "Not allowed on RDN"
    68 "Already Exists"
    69 "No Object Class Mods"
    70 "Results Too Large"
    71 "Affects Multiple DSAs"
    72 ""
    73 ""
    74 ""
    75 ""
    76 ""
    77 ""
    78 ""
    79 ""
    80 "Other"
    81 "Server Down"
    82 "Local Error"
    83 "Encoding Error"
    84 "Decoding Error"
    85 "Timeout"
    86 "Auth Unknown"
    87 "Filter Error"
    88 "User Canceled"
    89 "Parameter Error"
    90 "No Memory"
    91 "Can't connect to the LDAP server"
    92 "Operation not supported by this version of the LDAP protocol"
    93 "Specified control was not found in message"
    94 "No result present in message"
    95 "More results returned"
    96 "Loop while handling referrals"
    97 "Referral hop limit exceeded"
}
