/*
 * Portuguese resources for WLDAP32
 *
 * Copyright 2008 Ricardo Filipe
 * Copyright 2010 Gustavo Henrique Milaré
 *
 * 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 code_page(65001)

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE DISCARDABLE
{
    0 "Sucesso"
    1 "Erro de Operações"
    2 "Erro de Protocolo"
    3 "Tempo Limite Excedido"
    4 "Tamanho Limite Excedido"
    5 "Comparar Falso"
    6 "Comparar Verdadeiro"
    7 "Método de Autenticação Não Suportado"
    8 "Autenticação Forte Necessária"
    9 "Referência (v2)"
    10 "Referência"
    11 "Limite de Administração Excedido"
    12 "Extensão Crítica Indisponível"
    13 "Confidencialidade Necessária"
    14 ""
    15 ""
    16 "Atributo Não Encontrado"
    17 "Tipo Indefinido"
    18 "Atribuição Imprópria"
    19 "Violação de Restrições"
    20 "Valor ou Atributo Existente"
    21 "Sintaxe Inválida"
    22 ""
    23 ""
    24 ""
    25 ""
    26 ""
    27 ""
    28 ""
    29 ""
    30 ""
    31 ""
    32 "Objeto Não Encontrado"
    33 "Problema de Abreviatura"
    34 "Sintaxe DN Inválida"
    35 "É Leaf"
    36 "Problema na Referência da Abreviatura"
    37 ""
    38 ""
    39 ""
    40 ""
    41 ""
    42 ""
    43 ""
    44 ""
    45 ""
    46 ""
    47 ""
    48 "Autenticação Imprópria"
    49 "Credenciais Inválidas"
    50 "Direitos Insuficientes"
    51 "Ocupado"
    52 "Indisponível"
    53 "Indisposto a Realizar"
    54 "Loop Detectado"
    55 ""
    56 ""
    57 ""
    58 ""
    59 ""
    60 "Falta de Controle de Ordenação"
    61 "Erro de Limite de Índice"
    62 ""
    63 ""
    64 "Violação de Nome"
    65 "Violação da Classe de Objeto"
    66 "Não Permitido em Non-leaf"
    67 "Não Permitido em RDN"
    68 "Já Existe"
    69 "Sem modificações de Classe de Objeto"
    70 "Resultados Muito Grandes"
    71 "Afeta Múltiplos DSAs"
    72 ""
    73 ""
    74 ""
    75 ""
    76 ""
    77 ""
    78 ""
    79 ""
    80 "Outro"
    81 "Servidor Desligado"
    82 "Erro Local"
    83 "Erro de Codificação"
    84 "Erro de Descodificação"
    85 "Tempo excedido"
    86 "Autenticação desconhecida"
    87 "Erro de Filtro"
    88 "Cancelado pelo Usuário"
    89 "Erro de Parâmetro"
    90 "Sem Memória"
    91 "Impossível conectar-se ao servidor LDAP"
    92 "Operação não suportada por esta versão do protocolo LDAP"
    93 "O controle especificado não foi encontrado na mensagem"
    94 "Nenhum resultado presente na mensagem"
    95 "Mais resultados devolvidos"
    96 "Loop enquanto resolve referências"
    97 "Limite de salto de referências excedido"
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE DISCARDABLE
{
    0 "Sucesso"
    1 "Erro de Operações"
    2 "Erro de Protocolo"
    3 "Tempo Limite Excedido"
    4 "Tamanho Limite Excedido"
    5 "Comparar Falso"
    6 "Comparar Verdadeiro"
    7 "Método de Autenticação não Suportado"
    8 "Autenticação Forte Necessária"
    9 "Referência (v2)"
    10 "Referência"
    11 "Limite de Administração Excedido"
    12 "Extensão Crítica Indisponível"
    13 "Confidencialidade Necessária"
    14 ""
    15 ""
    16 "Atributo não Encontrado"
    17 "Tipo Indefinido"
    18 "Atribuição Imprópria"
    19 "Violação de Restrições"
    20 "Valor ou Atributo Existente"
    21 "Sintaxe Inválida"
    22 ""
    23 ""
    24 ""
    25 ""
    26 ""
    27 ""
    28 ""
    29 ""
    30 ""
    31 ""
    32 "Objecto Não Encontrado"
    33 "Problema de Abreviatura"
    34 "Sintaxe DN Inválida"
    35 "É folha"
    36 "Problema na Referência da Abreviatura"
    37 ""
    38 ""
    39 ""
    40 ""
    41 ""
    42 ""
    43 ""
    44 ""
    45 ""
    46 ""
    47 ""
    48 "Autenticação Imprópria"
    49 "Credenciais Inválidas"
    50 "Direitos Insuficientes"
    51 "Ocupado"
    52 "Indisponível"
    53 "Indisposto a Realizar"
    54 "Ciclo Detectado"
    55 ""
    56 ""
    57 ""
    58 ""
    59 ""
    60 "Falta de Controlo de Ordenação"
    61 "Erro de Limite de Índice"
    62 ""
    63 ""
    64 "Violação de Nome"
    65 "Violação da Classe de Objecto"
    66 "Não Permitido em Não-folha"
    67 "Não Permitido em RDN"
    68 "Já Existe"
    69 "Sem Modificações de Classe de Objecto"
    70 "Resultados Muito Grandes"
    71 "Afecta Múltiplos DSAs"
    72 ""
    73 ""
    74 ""
    75 ""
    76 ""
    77 ""
    78 ""
    79 ""
    80 "Outro"
    81 "Servidor em Baixo"
    82 "Erro Local"
    83 "Erro de Codificação"
    84 "Erro de Descodificação"
    85 "Tempo Excedido"
    86 "Autenticação Desconhecida"
    87 "Erro de Filtro"
    88 "Cancelado pelo Utilizador"
    89 "Erro de Parâmetro"
    90 "Sem Memória"
    91 "Não consegue ligar ao servidor LDAP"
    92 "Operação não suportada por esta versão do protocolo LDAP"
    93 "O controlo especificado não foi encontrado na mensagem"
    94 "Nenhum resultado presente na mensagem"
    95 "Mais resultados devolvidos"
    96 "Ciclo enquanto resolve referências"
    97 "Limite de salto de referências excedido"
}
