export default {
  // Texto da página de login
  'login.requiredUsername': 'O nome de usuário não pode estar vazio',
  'login.requiredPassword': 'A senha não pode estar vazia',
  'login.requiredCaptcha': 'O captcha não pode estar vazio',
  'login.requiredMobile': 'Por favor, insira um número de celular válido',
  'login.loginSuccess': 'Login realizado com sucesso!',

  // Texto do componente HeaderBar
  'header.smartManagement': 'Agentes',
  'header.modelConfig': 'Modelos',
  'header.knowledgeBase': 'Conhecimento',
  'header.voiceCloneManagement': 'Clonagem de Voz',
  'header.voiceResourceManagement': 'Recurso de Voz',
  'header.userManagement': 'Usuários',
  'header.otaManagement': 'Gerenciamento OTA',
  'header.paramDictionary': 'Mais',
  'header.paramManagement': 'Gerenciamento de Parâmetros',
  'header.dictManagement': 'Gerenciamento de Dicionário',
  'header.agentTemplate': 'Modelos de Papel Padrão',
  'header.searchHistory': 'Histórico de Pesquisa',
  'header.clearHistory': 'Limpar Histórico',
  'header.providerManagement': 'Gerenciamento de Provedores',
  'header.serverSideManagement': 'Gerenciamento de Servidores',
  'header.featureManagement': 'Gerenciamento de Funcionalidades do Sistema',
  'header.changePassword': 'Alterar Senha',
  'header.logout': 'Sair',
  'header.searchPlaceholder': 'Nome, tag ou pesquisa no Mac',

  // Texto do componente McpToolCallDialog
  'mcpToolCall.title': 'Chamada de Ferramenta',
  'mcpToolCall.execute': 'Executar',
  'mcpToolCall.chooseFunction': '1、Escolher Função',
  'mcpToolCall.searchFunction': 'Pesquisar Função',
  'mcpToolCall.noResults': 'Nenhuma função correspondente encontrada',
  'mcpToolCall.settings': '2、Configuração de Parâmetros',
  'mcpToolCall.inputPlaceholder': 'Por favor, insira {label}',
  'mcpToolCall.valueRange': 'Faixa de valores: {min} - {max}',
  'mcpToolCall.selectPlaceholder': 'Por favor, selecione {label}',
  'mcpToolCall.lightTheme': 'Tema Claro',
  'mcpToolCall.darkTheme': 'Tema Escuro',
  'mcpToolCall.pleaseSelect': 'Por favor, selecione uma função',
  'mcpToolCall.cancel': 'Cancelar',
  'mcpToolCall.requiredField': 'Por favor, insira {field}',
  'mcpToolCall.minValue': 'O valor mínimo é {value}',
  'mcpToolCall.maxValue': 'O valor máximo é {value}',
  'mcpToolCall.selectTool': 'Por favor, selecione uma ferramenta para executar',
  'mcpToolCall.executionResult': '3、Resultado da Execução',
  'mcpToolCall.copyResult': 'Copiar Resultado',
  'mcpToolCall.noResultYet': 'Nenhum resultado ainda',
  'mcpToolCall.loadingToolList': 'Carregando lista de ferramentas...',

  // Nomes de ferramentas
  'mcpToolCall.toolName.getDeviceStatus': 'Ver Status do Dispositivo',
  'mcpToolCall.toolName.setVolume': 'Definir Volume',
  'mcpToolCall.toolName.setBrightness': 'Definir Brilho',
  'mcpToolCall.toolName.setTheme': 'Definir Tema',
  'mcpToolCall.toolName.takePhoto': 'Tirar Foto e Reconhecer',
  'mcpToolCall.toolName.getSystemInfo': 'Informações do Sistema',
  'mcpToolCall.toolName.reboot': 'Reiniciar Dispositivo',
  'mcpToolCall.toolName.upgradeFirmware': 'Atualizar Firmware',
  'mcpToolCall.toolName.getScreenInfo': 'Informações da Tela',
  'mcpToolCall.toolName.snapshot': 'Captura de Tela',
  'mcpToolCall.toolName.previewImage': 'Pré-visualizar Imagem',
  'mcpToolCall.toolName.setDownloadUrl': 'Definir URL de Download',

  // Categorias de ferramentas
  'mcpToolCall.category.audio': 'Áudio',
  'mcpToolCall.category.display': 'Tela',
  'mcpToolCall.category.camera': 'Câmera',
  'mcpToolCall.category.system': 'Sistema',
  'mcpToolCall.category.assets': 'Recursos',
  'mcpToolCall.category.deviceInfo': 'Info do Dispositivo',

  // Categorias e propriedades da tabela
  'mcpToolCall.table.audioSpeaker': 'Alto-falante',
  'mcpToolCall.table.screen': 'Tela',
  'mcpToolCall.table.network': 'Rede',
  'mcpToolCall.table.audioControl': 'Controle de Áudio',
  'mcpToolCall.table.screenControl': 'Controle de Tela',
  'mcpToolCall.table.systemControl': 'Controle do Sistema',
  'mcpToolCall.table.screenInfo': 'Info da Tela',
  'mcpToolCall.table.hardwareInfo': 'Info do Hardware',
  'mcpToolCall.table.memoryInfo': 'Info da Memória',
  'mcpToolCall.table.applicationInfo': 'Info da Aplicação',
  'mcpToolCall.table.networkInfo': 'Info da Rede',
  'mcpToolCall.table.displayInfo': 'Info do Display',
  'mcpToolCall.table.deviceInfo': 'Info do Dispositivo',
  'mcpToolCall.table.systemInfo': 'Info do Sistema',
  // Cabeçalhos das colunas da tabela
  'mcpToolCall.table.component': 'Componente',
  'mcpToolCall.table.property': 'Propriedade',
  'mcpToolCall.table.value': 'Valor',

  'mcpToolCall.prop.volume': 'Volume',
  'mcpToolCall.prop.brightness': 'Brilho',
  'mcpToolCall.prop.theme': 'Tema',
  'mcpToolCall.prop.type': 'Tipo',
  'mcpToolCall.prop.ssid': 'SSID',
  'mcpToolCall.prop.signalStrength': 'Intensidade do Sinal',
  'mcpToolCall.prop.operationResult': 'Resultado da Operação',
  'mcpToolCall.prop.width': 'Largura',
  'mcpToolCall.prop.height': 'Altura',
  'mcpToolCall.prop.screenType': 'Tipo',
  'mcpToolCall.prop.chipModel': 'Modelo do Chip',
  'mcpToolCall.prop.cpuCores': 'Núcleos do CPU',
  'mcpToolCall.prop.chipVersion': 'Versão do Chip',
  'mcpToolCall.prop.flashSize': 'Tamanho do Flash',
  'mcpToolCall.prop.minFreeHeap': 'Heap Livre Mínimo',
  'mcpToolCall.prop.applicationName': 'Nome da Aplicação',
  'mcpToolCall.prop.applicationVersion': 'Versão da Aplicação',
  'mcpToolCall.prop.compileTime': 'Hora de Compilação',
  'mcpToolCall.prop.idfVersion': 'Versão IDF',
  'mcpToolCall.prop.macAddress': 'Endereço MAC',
  'mcpToolCall.prop.ipAddress': 'Endereço IP',
  'mcpToolCall.prop.wifiName': 'Nome WiFi',
  'mcpToolCall.prop.wifiChannel': 'Canal WiFi',
  'mcpToolCall.prop.screenSize': 'Tamanho da Tela',
  'mcpToolCall.prop.deviceUuid': 'UUID do Dispositivo',
  'mcpToolCall.prop.systemLanguage': 'Idioma do Sistema',
  'mcpToolCall.prop.currentOtaPartition': 'Partição OTA Atual',
  'mcpToolCall.prop.getResult': 'Obter Resultado',
  'mcpToolCall.prop.url': 'URL',
  'mcpToolCall.prop.quality': 'Qualidade',
  'mcpToolCall.prop.question': 'Pergunta',

  // Textos de ajuda das ferramentas
  'mcpToolCall.help.getDeviceStatus': 'Visualizar o status atual de execução do dispositivo, incluindo volume, tela, bateria e outras informações.',
  'mcpToolCall.help.setVolume': 'Ajustar o volume do dispositivo. Por favor, insira um valor entre 0-100.',
  'mcpToolCall.help.setBrightness': 'Ajustar o brilho da tela do dispositivo. Por favor, insira um valor entre 0-100.',
  'mcpToolCall.help.setTheme': 'Alternar o tema de exibição da tela do dispositivo. Você pode escolher entre modo claro ou escuro.',
  'mcpToolCall.help.takePhoto': 'Tirar fotos com a câmera do dispositivo e realizar análise de reconhecimento. Por favor, insira a pergunta que deseja fazer.',
  'mcpToolCall.help.getSystemInfo': 'Obter as informações do sistema do dispositivo, incluindo especificações de hardware, versão do software, etc.',
  'mcpToolCall.help.reboot': 'Reiniciar o dispositivo. O dispositivo será reiniciado após a execução.',
  'mcpToolCall.help.upgradeFirmware': 'Baixar e atualizar o firmware do dispositivo a partir da URL especificada. O dispositivo será reiniciado automaticamente após a atualização.',
  'mcpToolCall.help.getScreenInfo': 'Obter informações detalhadas sobre a tela, como resolução, tamanho e outros parâmetros.',
  'mcpToolCall.help.snapshot': 'Capturar a tela atual e enviar para a URL especificada.',
  'mcpToolCall.help.previewImage': 'Pré-visualizar imagens da URL especificada na tela do dispositivo.',
  'mcpToolCall.help.setDownloadUrl': 'Definir o endereço de download dos arquivos de recursos do dispositivo.',

  // Outros textos
  'mcpToolCall.text.strong': 'Forte',
  'mcpToolCall.text.medium': 'Médio',
  'mcpToolCall.text.weak': 'Fraco',
  'mcpToolCall.text.dark': 'Escuro',
  'mcpToolCall.text.light': 'Claro',
  'mcpToolCall.text.setSuccess': 'Configuração realizada com sucesso',
  'mcpToolCall.text.setFailed': 'Falha na configuração',
  'mcpToolCall.text.brightnessSetSuccess': 'Brilho configurado com sucesso',
  'mcpToolCall.text.brightnessSetFailed': 'Falha ao configurar brilho',
  'mcpToolCall.text.themeSetSuccess': 'Tema configurado com sucesso',
  'mcpToolCall.text.themeSetFailed': 'Falha ao configurar tema',
  'mcpToolCall.text.rebootCommandSent': 'Comando de reinicialização enviado',
  'mcpToolCall.text.rebootFailed': 'Falha ao reiniciar',
  'mcpToolCall.text.monochrome': 'Tela Monocromática',
  'mcpToolCall.text.color': 'Tela Colorida',
  'mcpToolCall.text.getSuccessParseFailed': 'Obtido com sucesso, mas falha ao analisar',
  'mcpToolCall.text.getFailed': 'Falha ao obter',
  'mcpToolCall.text.getSuccessFormatError': 'Obtido com sucesso, mas formato de dados anormal',

  // Diálogo de dados do dicionário
  'dictDataDialog.addDictData': 'Adicionar Dados do Dicionário',
  'dictDataDialog.dictLabel': 'Rótulo do Dicionário',
  'dictDataDialog.dictLabelPlaceholder': 'Por favor, insira o rótulo do dicionário',
  'dictDataDialog.dictValue': 'Valor do Dicionário',
  'dictDataDialog.dictValuePlaceholder': 'Por favor, insira o valor do dicionário',
  'dictDataDialog.sort': 'Ordenação',
  'dictDataDialog.requiredDictLabel': 'Por favor, insira o rótulo do dicionário',
  'dictDataDialog.requiredDictValue': 'Por favor, insira o valor do dicionário',

  // Diálogo de tipo de dicionário
  'dictTypeDialog.addDictType': 'Adicionar Tipo de Dicionário',
  'dictTypeDialog.dictName': 'Nome do Tipo de Dicionário',
  'dictTypeDialog.dictNamePlaceholder': 'Por favor, insira o nome do tipo de dicionário',
  'dictTypeDialog.dictType': 'Código do Tipo de Dicionário',
  'dictTypeDialog.dictTypePlaceholder': 'Por favor, insira o código do tipo de dicionário',
  'dictTypeDialog.requiredDictName': 'Por favor, insira o nome do tipo de dicionário',
  'dictTypeDialog.requiredDictType': 'Por favor, insira o código do tipo de dicionário',

  // Diálogo de edição de voz
  'editVoiceDialog.voiceCode': 'Código da Voz',
  'editVoiceDialog.voiceCodePlaceholder': 'Por favor, insira o código da voz',
  'editVoiceDialog.voiceName': 'Nome da Voz',
  'editVoiceDialog.voiceNamePlaceholder': 'Por favor, insira o nome da voz',
  'editVoiceDialog.languageType': 'Tipo de Idioma',
  'editVoiceDialog.languageTypePlaceholder': 'Por favor, insira o tipo de idioma',
  'editVoiceDialog.sortNumber': 'Número de Ordenação',
  'editVoiceDialog.remark': 'Observação',
  'editVoiceDialog.remarkPlaceholder': 'Por favor, insira o conteúdo da observação',
  'editVoiceDialog.generatePreview': 'Gerar Pré-visualização',
  'editVoiceDialog.defaultVoiceName': 'Wawa Xiaohe',
  'editVoiceDialog.defaultLanguageType': 'Chinês',
  'editVoiceDialog.requiredVoiceCode': 'Por favor, insira o código da voz',
  'editVoiceDialog.requiredVoiceName': 'Por favor, insira o nome da voz',

  // Diálogo de firmware
  'firmwareDialog.firmwareName': 'Nome do Firmware',
  'firmwareDialog.firmwareNamePlaceholder': 'Por favor, insira o nome do firmware (placa + versão)',
  'firmwareDialog.firmwareType': 'Tipo de Firmware',
  'firmwareDialog.firmwareTypePlaceholder': 'Por favor, selecione o tipo de firmware',
  'firmwareDialog.version': 'Versão',
  'firmwareDialog.versionPlaceholder': 'Por favor, insira a versão (formato x.x.x)',
  'firmwareDialog.firmwareFile': 'Arquivo de Firmware',
  'firmwareDialog.clickUpload': 'Clique para Enviar',
  'firmwareDialog.uploadTip': 'Apenas arquivos de firmware (.bin/.apk) são suportados, e o tamanho não deve exceder 100MB',
  'firmwareDialog.uploadHint': 'Lembrete: Por favor, envie o arquivo xiaozhi.bin pré-mesclado, não o arquivo merged-binary.bin mesclado',
  'firmwareDialog.remark': 'Observação',
  'firmwareDialog.remarkPlaceholder': 'Por favor, insira informações de observação',
  'firmwareDialog.requiredFirmwareName': 'Por favor, insira o nome do firmware (placa + versão)',
  'firmwareDialog.requiredFirmwareType': 'Por favor, selecione o tipo de firmware',
  'firmwareDialog.requiredVersion': 'Por favor, insira a versão',
  'firmwareDialog.versionFormatError': 'Formato de versão incorreto. Por favor, insira no formato x.x.x',
  'firmwareDialog.requiredFirmwareFile': 'Por favor, envie o arquivo de firmware',
  'firmwareDialog.invalidFileType': 'Apenas arquivos de firmware no formato .bin/.apk são suportados!',
  'firmwareDialog.invalidFileSize': 'O tamanho do arquivo de firmware não pode exceder 100MB!',
  'firmwareDialog.uploadSuccess': 'Arquivo de firmware enviado com sucesso',
  'firmwareDialog.uploadFailed': 'Falha no envio do arquivo',

  // Diálogo de impressão vocal
  'voicePrintDialog.addSpeaker': 'Adicionar Falante',
  'voicePrintDialog.voicePrintVector': 'Vetor de Impressão Vocal',
  'voicePrintDialog.selectVoiceMessage': 'Por favor, selecione uma mensagem de voz',
  'voicePrintDialog.name': 'Nome',
  'voicePrintDialog.enterName': 'Por favor, insira o nome',
  'voicePrintDialog.description': 'Descrição',
  'voicePrintDialog.enterDescription': 'Por favor, insira a descrição',
  'voicePrintDialog.save': 'Salvar',
  'voicePrintDialog.cancel': 'Cancelar',
  'voicePrintDialog.requiredDescription': 'Por favor, insira a descrição',
  'voicePrintDialog.requiredName': 'Por favor, insira o nome',
  'voicePrintDialog.requiredAudioVector': 'Por favor, selecione o vetor de áudio',

  // Diálogo de provedor de contexto
  'contextProviderDialog.title': 'Editar Fonte',
  'contextProviderDialog.noContextApi': 'Sem API de Contexto',
  'contextProviderDialog.add': 'Adicionar',
  'contextProviderDialog.apiUrl': 'URL da API',
  'contextProviderDialog.apiUrlPlaceholder': 'http://api.example.com/data',
  'contextProviderDialog.requestHeaders': 'Cabeçalhos da Requisição',
  'contextProviderDialog.headerKeyPlaceholder': 'Chave',
  'contextProviderDialog.headerValuePlaceholder': 'Valor',
  'contextProviderDialog.noHeaders': 'Sem Cabeçalhos',
  'contextProviderDialog.addHeader': 'Adicionar Cabeçalho',
  'contextProviderDialog.cancel': 'Cancelar',
  'contextProviderDialog.confirm': 'Confirmar',

  // Página de configuração de papel - provedor de contexto
  'roleConfig.contextProvider': 'Contexto',
  'roleConfig.contextProviderSuccess': '{count} fontes adicionadas com sucesso.',
  'roleConfig.contextProviderDocLink': 'Como implantar provedor de contexto',
  'roleConfig.editContextProvider': 'Editar Fonte',

  // Página de impressão vocal
  'voicePrint.pageTitle': 'Reconhecimento de Impressão Vocal',
  'voicePrint.name': 'Nome',
  'voicePrint.description': 'Descrição',
  'voicePrint.createTime': 'Data de Criação',
  'voicePrint.action': 'Ação',
  'voicePrint.edit': 'Editar',
  'voicePrint.delete': 'Excluir',
  'voicePrint.add': 'Adicionar',
  'voicePrint.addSpeaker': 'Adicionar Falante',
  'voicePrint.editSpeaker': 'Editar Falante',
  'voicePrint.fetchFailed': 'Falha ao buscar lista de impressões vocais',
  'voicePrint.updateSuccess': 'Atualizado com sucesso',
  'voicePrint.addSuccess': 'Adicionado com sucesso',
  'voicePrint.confirmDelete': 'Tem certeza de que deseja excluir esta impressão vocal?',
  'voicePrint.warning': 'Aviso',
  'voicePrint.confirm': 'Confirmar',
  'voicePrint.cancel': 'Cancelar',
  'voicePrint.deleteSuccess': 'Impressão vocal excluída com sucesso',
  'voicePrint.deleteFailed': 'Falha na exclusão. Por favor, tente novamente',
  'voicePrint.cancelDelete': 'Operação de exclusão cancelada',
  'voicePrint.closeOperation': 'Operação fechada',
  'voicePrint.loading': 'Carregando...',

  // Diálogo de adição manual de dispositivo
  'manualAddDeviceDialog.title': 'Adicionar Dispositivo Manualmente',
  'manualAddDeviceDialog.deviceType': 'Tipo de Dispositivo',
  'manualAddDeviceDialog.deviceTypePlaceholder': 'Por favor, selecione o tipo de dispositivo',
  'manualAddDeviceDialog.firmwareVersion': 'Versão do Firmware',
  'manualAddDeviceDialog.firmwareVersionPlaceholder': 'Por favor, insira a versão do firmware',
  'manualAddDeviceDialog.macAddress': 'Endereço MAC',
  'manualAddDeviceDialog.macAddressPlaceholder': 'Por favor, insira o endereço MAC',
  'manualAddDeviceDialog.confirm': 'Confirmar',
  'manualAddDeviceDialog.cancel': 'Cancelar',
  'manualAddDeviceDialog.requiredMacAddress': 'Por favor, insira o endereço MAC',
  'manualAddDeviceDialog.invalidMacAddress': 'Por favor, insira o formato correto de endereço MAC, ex.: 00:1A:2B:3C:4D:5E',
  'manualAddDeviceDialog.requiredDeviceType': 'Por favor, selecione o tipo de dispositivo',
  'manualAddDeviceDialog.requiredFirmwareVersion': 'Por favor, insira a versão do firmware',
  'manualAddDeviceDialog.getFirmwareTypeFailed': 'Falha ao obter tipo de firmware',
  'manualAddDeviceDialog.addSuccess': 'Dispositivo adicionado com sucesso',
  'manualAddDeviceDialog.addFailed': 'Falha ao adicionar',

  // Componente AddModelDialog
  'addModelDialog.requiredSupplier': 'Por favor, selecione um fornecedor',

  // Página de registro
  'register.title': 'Criar Conta',
  'register.welcome': 'Bem-vindo ao XiaoZhi AI',
  'register.usernamePlaceholder': 'Por favor, insira o nome de usuário',
  'register.mobilePlaceholder': 'Por favor, insira o número de celular',
  'register.captchaPlaceholder': 'Por favor, insira o captcha',
  'register.mobileCaptchaPlaceholder': 'Por favor, insira o código de verificação SMS',
  'register.passwordPlaceholder': 'Por favor, defina a senha',
  'register.confirmPasswordPlaceholder': 'Por favor, confirme a senha',
  'register.goToLogin': 'Já tem uma conta? Entrar',
  'register.registerButton': 'Registrar',
  'register.agreeTo': 'Ao se registrar, você concorda com nossos',
  'register.userAgreement': 'Termos de Uso',
  'register.privacyPolicy': 'Política de Privacidade',
  'register.notAllowRegister': 'O registro de usuários não é permitido',
  'register.captchaLoadFailed': 'Falha ao carregar captcha',
  'register.inputCaptcha': 'Por favor, insira o captcha',
  'register.inputCorrectMobile': 'Por favor, insira um número de celular válido',
  'register.captchaSendSuccess': 'Código de verificação enviado com sucesso',
  'register.captchaSendFailed': 'Falha ao enviar código de verificação',
  'register.passwordsNotMatch': 'As senhas não coincidem',
  'register.registerSuccess': 'Registro realizado com sucesso!',
  'register.registerFailed': 'Falha no registro',
  'register.requiredUsername': 'O nome de usuário não pode estar vazio',
  'register.requiredPassword': 'A senha não pode estar vazia',
  'register.requiredCaptcha': 'O captcha não pode estar vazio',
  'register.requiredMobileCaptcha': 'Por favor, insira o código de verificação SMS',
  'register.invalidCaptcha': 'Código de verificação inválido',
  'register.passwordLength': 'A senha deve ter entre 6 e 20 caracteres',
  'register.usernameFormat': 'Formato de nome de usuário inválido',
  'register.confirmPasswordRequired': 'A confirmação de senha não pode estar vazia',
  'register.sendCaptcha': 'Obter Código de Verificação',
  'register.secondsLater': 'segundos depois',

  // Diálogo de parâmetros
  'paramDialog.paramCode': 'Código do Parâmetro',
  'paramDialog.paramCodePlaceholder': 'Por favor, insira o código do parâmetro',
  'paramDialog.paramValue': 'Valor do Parâmetro',
  'paramDialog.paramValuePlaceholder': 'Por favor, insira o valor do parâmetro',
  'paramDialog.valueType': 'Tipo de Valor',
  'paramDialog.valueTypePlaceholder': 'Por favor, selecione o tipo de valor',
  'paramDialog.remark': 'Observação',
  'paramDialog.remarkPlaceholder': 'Por favor, insira a observação',
  'paramDialog.save': 'Salvar',
  'paramDialog.cancel': 'Cancelar',
  'paramDialog.requiredParamCode': 'Por favor, insira o código do parâmetro',
  'paramDialog.requiredParamValue': 'Por favor, insira o valor do parâmetro',
  'paramDialog.requiredValueType': 'Por favor, selecione o tipo de valor',
  'paramDialog.stringType': 'Texto',
  'paramDialog.numberType': 'Número',
  'paramDialog.booleanType': 'Booleano',
  'paramDialog.arrayType': 'Array',
  'paramDialog.jsonType': 'Objeto JSON',

  // Página de login
  'login.title': 'Entrar',
  'login.welcome': 'BEM-VINDO AO LOGIN',
  'login.username': 'Nome de Usuário',
  'login.usernamePlaceholder': 'Por favor, insira o nome de usuário',
  'login.mobilePlaceholder': 'Por favor, insira o número de celular',
  'login.password': 'Senha',
  'login.passwordPlaceholder': 'Por favor, insira a senha',
  'login.captchaPlaceholder': 'Por favor, insira o código de verificação',
  'login.loginButton': 'Entrar',
  'login.login': 'Entrar',
  'login.register': 'Registrar',
  'login.forgotPassword': 'Esqueceu a Senha',
  'login.forgetPassword': 'Esqueceu a Senha?',
  'login.mobileLogin': 'Login por Celular',
  'login.usernameLogin': 'Login por Usuário',
  'login.agreeTo': 'Ao entrar, você aceita os',
  'login.userAgreement': 'Termos de Uso',
  'login.and': 'e',
  'login.privacyPolicy': 'Política de Privacidade',
  'login.registerAccount': 'Registrar Conta',

  // Página de recuperação de senha
  'retrievePassword.title': 'Redefinir Senha',
  'retrievePassword.welcome': 'RECUPERAÇÃO DE SENHA',
  'retrievePassword.subtitle': 'Recuperar Senha',
  'retrievePassword.mobile': 'Celular',
  'retrievePassword.mobilePlaceholder': 'Por favor, insira o número de celular',
  'retrievePassword.captcha': 'Código de Verificação',
  'retrievePassword.captchaPlaceholder': 'Por favor, insira o código de verificação',
  'retrievePassword.mobileCaptcha': 'Código de Verificação por Celular',
  'retrievePassword.mobileCaptchaPlaceholder': 'Por favor, insira o código de verificação por celular',
  'retrievePassword.newPassword': 'Nova Senha',
  'retrievePassword.newPasswordPlaceholder': 'Por favor, insira a nova senha',
  'retrievePassword.confirmNewPassword': 'Confirmar Nova Senha',
  'retrievePassword.confirmNewPasswordPlaceholder': 'Por favor, confirme a nova senha',
  'retrievePassword.getMobileCaptcha': 'Obter Código de Verificação',
  'retrievePassword.resetButton': 'Redefinir Senha',
  'retrievePassword.updateButton': 'Atualizar Agora',
  'retrievePassword.goToLogin': 'Voltar ao Login',
  'retrievePassword.inputCorrectMobile': 'Por favor, insira um número de celular válido',
  'retrievePassword.captchaSendSuccess': 'Código de verificação enviado com sucesso',
  'retrievePassword.passwordsNotMatch': 'As duas senhas não coincidem',
  'retrievePassword.passwordLength': 'A senha deve ter entre 6 e 20 caracteres',
  'retrievePassword.mobileRequired': 'O número de celular não pode estar vazio',
  'retrievePassword.captchaRequired': 'O código de verificação não pode estar vazio',
  'retrievePassword.mobileCaptchaRequired': 'O código de verificação por celular não pode estar vazio',
  'retrievePassword.newPasswordRequired': 'A nova senha não pode estar vazia',
  'retrievePassword.confirmNewPasswordRequired': 'A confirmação da nova senha não pode estar vazia',
  'retrievePassword.passwordUpdateSuccess': 'Senha atualizada com sucesso',
  'retrievePassword.agreeTo': 'Redefinir significa concordar',

  // Página de alteração de senha
  'changePassword.title': 'Alterar Senha',
  'changePassword.oldPasswordLabel': 'Senha Atual:',
  'changePassword.oldPasswordPlaceholder': 'Por favor, insira a senha atual',
  'changePassword.newPasswordLabel': 'Nova Senha:',
  'changePassword.newPasswordPlaceholder': 'Por favor, insira a nova senha',
  'changePassword.confirmPasswordLabel': 'Confirmar Nova Senha:',
  'changePassword.confirmPasswordPlaceholder': 'Por favor, insira novamente a nova senha',
  'changePassword.confirmButton': 'Confirmar',
  'changePassword.cancelButton': 'Cancelar',
  'changePassword.allFieldsRequired': 'Por favor, preencha todos os campos',
  'changePassword.passwordsNotMatch': 'As duas novas senhas não coincidem',
  'changePassword.newPasswordSameAsOld': 'A nova senha não pode ser igual à senha atual',
  'changePassword.passwordChangedSuccessfully': 'Senha alterada com sucesso. Por favor, faça login novamente',
  'changePassword.changeFailed': 'Falha ao alterar senha',

  // Página de gerenciamento de dispositivos
  'device.management': 'Gerenciamento de Dispositivos',
  'device.add': 'Adicionar Dispositivo',
  'device.edit': 'Editar Dispositivo',
  'device.delete': 'Excluir Dispositivo',
  'device.name': 'Nome do Dispositivo',
  'device.type': 'Tipo de Dispositivo',
  'device.status': 'Status do Dispositivo',
  'device.dialogTitle': 'Adicionar Dispositivo',
  'device.verificationCode': 'Código de Verificação:',
  'device.verificationCodePlaceholder': 'Por favor, insira o código de verificação de 6 dígitos transmitido pelo dispositivo..',
  'device.confirmButton': 'Confirmar',
  'device.cancelButton': 'Cancelar',
  'device.input6DigitCode': 'Por favor, insira um código de verificação de 6 dígitos',
  'device.bindSuccess': 'Dispositivo vinculado com sucesso',
  'device.bindFailed': 'Falha na vinculação',
  'device.searchPlaceholder': 'Por favor, insira modelo do dispositivo ou endereço MAC para pesquisar',
  'device.model': 'Modelo do Dispositivo',
  'device.macAddress': 'Endereço MAC',
  'device.firmwareVersion': 'Versão do Firmware',
  'device.bindTime': 'Data de Vinculação',
  'device.lastConversation': 'Última Conversa',
  'device.remark': 'Observação',
  'device.autoUpdate': 'Atualização Automática',
  'device.operation': 'Operação',
  'device.search': 'Pesquisar',
  'device.selectAll': 'Selecionar Tudo/Desmarcar Tudo',
  'deviceManagement.loading': 'Carregando...',
  'device.bindWithCode': 'Vincular com Código de 6 Dígitos',
  'device.manualAdd': 'Adicionar Manualmente',
  'device.unbind': 'Desvincular',
  'device.deviceThemeGeneration': 'Geração de tema do dispositivo',
  'device.toolCall': 'Chamada de Ferramenta',
  'device.selectAtLeastOne': 'Por favor, selecione pelo menos um registro',
  'device.confirmBatchUnbind': 'Tem certeza de que deseja desvincular {count} dispositivos selecionados?',
  'device.batchUnbindSuccess': '{count} dispositivos desvinculados com sucesso',
  'device.batchUnbindError': 'Ocorreu um erro durante a desvinculação em lote',
  'device.remarkTooLong': 'A observação não pode exceder 64 caracteres',
  'device.remarkSaved': 'Observação salva com sucesso',
  'device.remarkSaveFailed': 'Falha ao salvar observação',
  'device.confirmUnbind': 'Tem certeza de que deseja desvincular este dispositivo?',
  'device.unbindSuccess': 'Dispositivo desvinculado com sucesso',
  'device.unbindFailed': 'Falha ao desvincular dispositivo',
  'device.getListFailed': 'Falha ao buscar lista de dispositivos',
  'device.autoUpdateEnabled': 'Atualização automática ativada',
  'device.autoUpdateDisabled': 'Atualização automática desativada',
  'device.getFirmwareTypeFailed': 'Falha ao buscar tipo de firmware',
  'device.deviceStatus': 'Status',
  'device.online': 'Online',
  'device.offline': 'Offline',

  // Mensagens de dica
  'message.success': 'Operação Realizada com Sucesso',
  'message.error': 'Falha na Operação',
  'message.warning': 'Aviso',
  'message.info': 'Informação',

  // Cache
  'cache.viewer': 'Visualizador de Cache',

  // Diálogo de histórico de chat
  'chatHistory.with': 'Com',
  'chatHistory.dialogTitle': ' - Histórico de Chat',
  'chatHistory.loading': 'Carregando...',
  'chatHistory.noMoreRecords': 'Não há mais registros',
  'chatHistory.selectSession': 'Por favor, selecione uma sessão para visualizar o histórico de chat',
  'chatHistory.today': 'Hoje',
  'chatHistory.yesterday': 'Ontem',
  'chatHistory.downloadCurrentSession': 'Baixar histórico de chat da sessão atual',
  'chatHistory.downloadCurrentWithPreviousSessions': 'Baixar histórico de chat da sessão atual e das 20 sessões anteriores',
  'chatHistory.downloadLinkFailed': 'Falha ao obter link de download',

  'cache.status': 'Status do Cache',
  'cache.cdnEnabled': 'Modo CDN Ativado',
  'cache.cdnDisabled': 'Modo CDN Desativado',
  'cache.serviceWorkerRegistered': 'Service Worker Registrado',
  'cache.serviceWorkerNotRegistered': 'Service Worker Não Registrado',
  'cache.noCacheDetected': 'Nenhum cache detectado ainda. Por favor, atualize a página ou aguarde o cache ser estabelecido',
  'cache.swDevEnvWarning': 'No ambiente de desenvolvimento, o Service Worker pode não inicializar o cache corretamente',
  'cache.swCheckMethods': 'Por favor, tente os seguintes métodos para verificar se o Service Worker está funcionando:',
  'cache.swCheckMethod1': 'Verifique o status do Service Worker na aba Application/Aplicação das ferramentas de desenvolvedor',
  'cache.swCheckMethod2': 'Visualize o conteúdo do cache em Application/Cache/Cache Storage das ferramentas de desenvolvedor',
  'cache.swCheckMethod3': 'Use o build de produção (npm run build) e acesse através de um servidor HTTP para testar a funcionalidade completa',
  'cache.swDevEnvNormal': 'No ambiente de desenvolvimento, isso é normal',
  'cache.swProdOnly': 'O Service Worker geralmente funciona apenas no ambiente de produção',
  'cache.swTestingTitle': 'Para testar a funcionalidade do Service Worker:',
  'cache.swTestingStep1': 'Execute npm run build para compilar a versão de produção',
  'cache.swTestingStep2': 'Acesse a página compilada através de um servidor HTTP',
  'cache.swNotSupported': 'O navegador atual não suporta Service Worker. A função de cache de recursos CDN não está disponível',
  'cache.dialogTitle': 'Status de Cache de Recursos CDN',
  'cache.loading': 'Carregando informações de cache...',
  'cache.notSupported': 'Seu navegador não suporta Cache API ou o Service Worker não está instalado',
  'cache.refreshPage': 'Atualizar Página',
  'cache.noCachedResources': 'Nenhum recurso CDN em cache encontrado',
  'cache.noCachedResourcesDesc': 'O Service Worker pode não ter concluído a inicialização ou o cache não foi estabelecido. Por favor, atualize a página ou tente novamente mais tarde.',
  'cache.cdnCacheStatus': 'Status de Cache de Recursos CDN',
  'cache.totalCachedResources': 'Encontrados {count} recursos em cache no total',
  'cache.jsResources': 'Recursos JavaScript ({count})',
  'cache.cssResources': 'Recursos CSS ({count})',
  'cache.cached': 'Em Cache',
  'cache.notCached': 'Não Em Cache',
  'cache.refreshStatus': 'Atualizar Status do Cache',
  'cache.clearCache': 'Limpar Cache',
  'cache.refreshingStatus': 'Atualizando status do cache',
  'cache.confirmClear': 'Tem certeza de que deseja limpar todo o cache?',
  'cache.clearedSuccess': 'Cache limpo com sucesso',
  'cache.clearFailed': 'Falha ao limpar cache',
  'cache.clearCanceled': 'Operação de limpeza cancelada',

  // Botões comuns
  'button.ok': 'OK',
  'button.cancel': 'Cancelar',
  'button.save': 'Salvar',
  'button.close': 'Fechar',

  // Informações do sistema
  'system.name': 'Serviço XiaoZhi',

  // Impressão vocal
  'voiceprint.management': 'Gerenciamento de Impressão Vocal',
  'voiceprint.add': 'Adicionar Impressão Vocal',
  'voiceprint.delete': 'Excluir Impressão Vocal',

  // Página de gerenciamento de dicionário
  'dictManagement.pageTitle': 'Gerenciamento de Dicionário',
  'dictManagement.searchPlaceholder': 'Por favor, insira o rótulo do dicionário para pesquisar',
  'dictManagement.search': 'Pesquisar',
  'dictManagement.dictTypeName': 'Nome do Tipo de Dicionário',
  'dictManagement.operation': 'Operação',
  'dictManagement.edit': 'Editar',
  'dictManagement.dictLabel': 'Rótulo do Dicionário',
  'dictManagement.dictValue': 'Valor do Dicionário',
  'dictManagement.sort': 'Ordenação',
  'dictManagement.delete': 'Excluir',
  'dictManagement.selectAll': 'Selecionar Tudo',
  'dictManagement.deselectAll': 'Desmarcar Tudo',
  'dictManagement.addDictType': 'Adicionar Tipo de Dicionário',
  'dictManagement.batchDeleteDictType': 'Exclusão em Lote de Tipos de Dicionário',
  'dictManagement.addDictData': 'Adicionar Dados do Dicionário',
  'dictManagement.batchDeleteDictData': 'Exclusão em Lote de Dados do Dicionário',
  'dictManagement.itemsPerPage': '{items} itens/página',
  'dictManagement.firstPage': 'Primeira Página',
  'dictManagement.prevPage': 'Página Anterior',
  'dictManagement.nextPage': 'Próxima Página',
  'dictManagement.totalRecords': 'Total de {total} registros',
  'dictManagement.editDictType': 'Editar Tipo de Dicionário',
  'dictManagement.editDictData': 'Editar Dados do Dicionário',
  'dictManagement.saveSuccess': 'Salvo com Sucesso',
  'dictManagement.deleteSuccess': 'Excluído com Sucesso',
  'dictManagement.selectDictTypeToDelete': 'Por favor, selecione tipos de dicionário para excluir',
  'dictManagement.confirmDeleteDictType': 'Tem certeza de que deseja excluir os tipos de dicionário selecionados?',
  'dictManagement.confirm': 'Confirmar',
  'dictManagement.cancel': 'Cancelar',
  'dictManagement.selectDictTypeFirst': 'Por favor, selecione um tipo de dicionário primeiro',
  'dictManagement.confirmDeleteDictData': 'Tem certeza de que deseja excluir estes dados do dicionário?',
  'dictManagement.selectDictDataToDelete': 'Por favor, selecione dados do dicionário para excluir',
  'dictManagement.confirmBatchDeleteDictData': 'Tem certeza de que deseja excluir {count} itens de dados do dicionário selecionados?',
  'dictManagement.getDictDataFailed': 'Falha ao obter dados do dicionário',

  // Informações do usuário
  'user.info': 'Informações do Usuário',
  'user.username': 'Nome de Usuário',
  'user.mobile': 'Celular',
  'user.userid': 'ID do Usuário',
  'user.deviceCount': 'Quantidade de Dispositivos',
  'user.createDate': 'Data de Registro',
  'user.status': 'Status',
  'user.normal': 'Normal',
  'user.disabled': 'Desativado',
  'user.resetPassword': 'Redefinir Senha',
  'user.disableAccount': 'Desativar Conta',
  'user.enableAccount': 'Ativar Conta',
  'user.deleteUser': 'Excluir Usuário',
  'user.deselectAll': 'Desmarcar Tudo',
  'user.selectAll': 'Selecionar Tudo',
  'user.enable': 'Ativar',
  'user.disable': 'Desativar',
  'user.delete': 'Excluir',
  'user.selectUsersFirst': 'Por favor, selecione usuários para excluir primeiro',
  'user.confirmDeleteSelected': 'Tem certeza de que deseja excluir {count} usuários selecionados?',
  'user.deleting': 'Excluindo...',
  'user.deleteSuccess': '{count} usuários excluídos com sucesso',
  'user.deleteFailed': 'Falha na exclusão. Por favor, tente novamente',
  'user.partialDelete': '{successCount} usuários excluídos com sucesso, {failCount} falharam',
  'user.deleteError': 'Ocorreu um erro durante a exclusão',
  'user.deleteCancelled': 'Exclusão cancelada',
  'user.confirmResetPassword': 'Uma nova senha será gerada após a redefinição. Continuar?',
  'user.resetPasswordSuccess': 'Senha redefinida. Por favor, notifique o usuário para fazer login com a nova senha',
  'user.generatedPassword': 'Senha Padrão Gerada',
  'user.confirmDeleteUser': 'Tem certeza de que deseja excluir este usuário?',
  'user.deleteUserSuccess': 'Excluído com sucesso',
  'user.operationFailed': 'Falha na operação. Por favor, tente novamente',
  'user.confirmStatusChange': 'Tem certeza de que deseja {action} {count} usuários selecionados?',
  'user.statusChangeSuccess': '{count} usuários {action} com sucesso',
  'user.invalidUserId': 'Existem IDs de usuário inválidos',
  'user.searchPhone': 'Por favor, insira o número de celular para pesquisar',
  'user.search': 'Pesquisar',

  // Página de gerenciamento de provedores
  'providerManagement.categoryFilter': 'Filtro de Categoria',
  'providerManagement.searchPlaceholder': 'Por favor, insira o nome do provedor para pesquisar',
  'providerManagement.category': 'Categoria',
  'providerManagement.providerCode': 'Código do Provedor',
  'providerManagement.fieldConfig': 'Configuração de Campos',
  'providerManagement.selectToDelete': 'Por favor, selecione provedores para excluir primeiro',
  'providerManagement.confirmDelete': 'Tem certeza de que deseja excluir os {count} provedores selecionados?',
  'providerManagement.viewFields': 'Ver Campos',

  // Texto comum
  'common.all': 'Todos',
  'common.search': 'Pesquisar',
  'common.name': 'Nome',
  'common.sort': 'Ordenação',
  'common.action': 'Ação',
  'common.edit': 'Editar',
  'common.delete': 'Excluir',
  'common.selectAll': 'Selecionar Tudo',
  'common.deselectAll': 'Desmarcar Tudo',
  'common.add': 'Adicionar',
  'common.perPage': '{number}/página',
  'common.firstPage': 'Primeira Página',
  'common.prevPage': 'Página Anterior',
  'common.nextPage': 'Próxima Página',
  'common.totalRecords': 'Total de {number} registros',
  'common.addProvider': 'Adicionar Provedor',
  'common.success': 'Sucesso',
  'common.editProvider': 'Editar Provedor',
  'common.updateSuccess': 'Atualizado com Sucesso',
  'common.addSuccess': 'Adicionado com Sucesso',
  'common.deleteSuccess': 'Excluído com Sucesso',
  'common.deleteFailure': 'Falha ao Excluir. Por Favor, Tente Novamente',
  'common.deleteCancelled': 'Exclusão Cancelada',
  'common.warning': 'Aviso',
  'common.tip': 'Dica',
  'common.confirm': 'Confirmar',
  'common.cancel': 'Cancelar',
  'common.sensitive': 'Sensível',
  'common.loading': 'Carregando',

  // Troca de idioma
  'language.zhCN': '中文简体',
  'language.zhTW': '中文繁體',
  'language.en': 'English',
  'language.de': 'Deutsch',
  'language.vi': 'Tiếng Việt',
  'language.ptBR': 'Português (Brasil)',

  // Página inicial
  'home.addAgent': 'Adicionar Agente',
  'home.greeting': 'Olá XiaoZhi',
  'home.wish': 'Vamos ter um dia maravilhoso!',
  'home.languageModel': 'LLM',
  'home.voiceModel': 'TTS',
  'home.configureRole': 'ConfRoles',
  'home.voiceprintRecognition': 'RecVoz',
  'home.deviceManagement': 'Dispositivos',
  'home.chatHistory': 'Conversa',
  'home.lastConversation': 'Última Conversa',
  'home.noConversation': 'Nenhuma conversa',
  'home.justNow': 'Agora mesmo',
  'home.minutesAgo': 'Há {minutes} minutos',
  'home.hoursAgo': 'Há {hours} horas e {minutes} minutos',
  'home.confirmDeleteAgent': 'Tem certeza de que deseja excluir este agente?',
  'home.deleteSuccess': 'Excluído com sucesso',
  'home.deleteFailed': 'Falha ao excluir',
  'home.enableMemory': 'Por favor, ative a memória na página "Configurar Papel" primeiro',

  // Página de gerenciamento de parâmetros
  'paramManagement.pageTitle': 'Gerenciamento de Parâmetros',
  'paramManagement.searchPlaceholder': 'Por favor, insira código do parâmetro ou observação para pesquisar',
  'paramManagement.search': 'Pesquisar',
  'paramManagement.paramCode': 'Código do Parâmetro',
  'paramManagement.paramValue': 'Valor do Parâmetro',
  'paramManagement.remark': 'Observação',
  'paramManagement.operation': 'Operação',
  'paramManagement.hide': 'Ocultar',
  'paramManagement.view': 'Visualizar',
  'paramManagement.deselectAll': 'Desmarcar Tudo',
  'paramManagement.selectAll': 'Selecionar Tudo',
  'paramManagement.add': 'Adicionar',
  'paramManagement.delete': 'Excluir',
  'paramManagement.edit': 'Editar',
  'paramManagement.itemsPerPage': 'itens/página',
  'paramManagement.firstPage': 'Primeira Página',
  'paramManagement.prevPage': 'Página Anterior',
  'paramManagement.nextPage': 'Próxima Página',
  'paramManagement.totalRecords': 'Total de {total} registros',
  'paramManagement.addParam': 'Adicionar Parâmetro',
  'paramManagement.editParam': 'Editar Parâmetro',
  'paramManagement.getParamsListFailed': 'Falha ao obter lista de parâmetros',
  'paramManagement.selectParamsFirst': 'Por favor, selecione parâmetros para excluir primeiro',
  'paramManagement.confirmBatchDelete': 'Tem certeza de que deseja excluir {paramCount} parâmetros selecionados?',
  'paramManagement.invalidParamId': 'Existem IDs de parâmetro inválidos',
  'paramManagement.batchDeleteSuccess': '{paramCount} parâmetros excluídos com sucesso',
  'paramManagement.deleteFailed': 'Falha na exclusão. Por favor, tente novamente',
  'paramManagement.operationCancelled': 'Exclusão cancelada',
  'paramManagement.operationClosed': 'Operação fechada',
  'paramManagement.updateSuccess': 'Atualizado com sucesso. Algumas configurações só terão efeito após reiniciar o módulo xiaozhi-server.',
  'paramManagement.addSuccess': 'Adicionado com sucesso',
  'paramManagement.updateFailed': 'Falha na atualização',
  'paramManagement.addFailed': 'Falha ao adicionar',

  // Página de gerenciamento de servidores
  'serverSideManager.pageTitle': 'Gerenciamento de Servidores',
  'serverSideManager.wsAddress': 'Endereço WS',
  'serverSideManager.operation': 'Operação',
  'serverSideManager.restart': 'Reiniciar',
  'serverSideManager.updateConfig': 'Atualizar Configuração',
  'serverSideManager.restartServer': 'Reiniciar Servidor',
  'serverSideManager.updateConfigTitle': 'Atualizar Configuração',
  'serverSideManager.confirmRestart': 'Tem certeza de que deseja reiniciar o servidor?',
  'serverSideManager.confirmUpdateConfig': 'Tem certeza de que deseja atualizar a configuração?',
  'serverSideManager.loading': 'Carregando...',
  'serverSideManager.getServerListFailed': 'Falha ao obter lista de servidores',
  'serverSideManager.operationFailed': 'Falha na operação',
  'serverSideManager.restartSuccess': 'Reiniciado com sucesso',
  'serverSideManager.updateConfigSuccess': 'Configuração atualizada com sucesso',

  // Diálogo de adicionar agente
  'addAgentDialog.title': 'Adicionar Agente',
  'addAgentDialog.agentName': 'Nome do Agente',
  'addAgentDialog.placeholder': 'Por favor, insira o nome do agente..',
  'addAgentDialog.confirm': 'Confirmar',
  'addAgentDialog.cancel': 'Cancelar',
  'addAgentDialog.nameRequired': 'Por favor, insira o nome do agente',
  'addAgentDialog.addSuccess': 'Adicionado com sucesso',

  // Página de configuração de papel
  'roleConfig.title': 'Configuração de Papel',
  'roleConfig.addTag': 'Adicionar Novo Rótulo',
  'roleConfig.restartNotice': 'Reinicie após salvar a configuração para ativação.',
  'roleConfig.saveConfig': 'Salvar Configuração',
  'roleConfig.reset': 'Redefinir',
  'roleConfig.agentName': 'Apelido',
  'roleConfig.roleTemplate': 'Modelo',
  'roleConfig.roleIntroduction': 'Introdução',
  'roleConfig.languageCode': 'Código do Idioma',
  'roleConfig.interactionLanguage': 'Idioma de Interação',
  'roleConfig.vad': 'Detecção de Voz',
  'roleConfig.asr': 'Reconhecimento de Fala',
  'roleConfig.llm': 'Modelo de Linguagem',
  'roleConfig.vllm': 'Modelo de Visão',
  'roleConfig.intent': 'Reconhecimento de Intenção',
  'roleConfig.memoryHis': 'Memória',
  'roleConfig.memory': 'Modelo de Memória',
  'roleConfig.tts': 'Texto para Fala',
  'roleConfig.language': 'Linguagem do diálogo',
  'roleConfig.selectLanguage': 'Por favor, selecione o idioma',
  'roleConfig.voiceType': 'Tipo de Voz',
  'roleConfig.ttsVolume': 'Volume',
  'roleConfig.ttsRate': 'Velocidade da fala',
  'roleConfig.ttsPitch': 'Tonalidade',
  'roleConfig.ttsAdvanced': 'Parâmetros TTS',
  'roleConfig.advancedSettings': 'Velocidade do som',
  'roleConfig.volumeHint': '-100=mínimo, 0=padrão, 100=máximo',
  'roleConfig.speedHint': '-100=mais lento, 0=padrão, 100=mais rápido',
  'roleConfig.pitchHint': '-100=mínimo, 0=padrão, 100=máximo',
  'roleConfig.pleaseEnterContent': 'Por favor, insira o conteúdo',
  'roleConfig.pleaseEnterLangCode': 'Por favor, insira o código do idioma, ex.: pt_BR',
  'roleConfig.pleaseEnterLangName': 'Por favor, insira o idioma de interação, ex.: Português',
  'roleConfig.pleaseSelect': 'Por favor, selecione',
  'roleConfig.editFunctions': 'Editar Funções',
  'roleConfig.reportText': 'Somente Texto',
  'roleConfig.reportTextVoice': 'Texto e Voz',
  'roleConfig.saveSuccess': 'Configuração salva com sucesso',
  'roleConfig.saveFailed': 'Falha ao salvar configuração',
  'roleConfig.confirmReset': 'Tem certeza de que deseja redefinir a configuração?',
  'roleConfig.resetSuccess': 'Configuração redefinida',
  'roleConfig.fetchTemplatesFailed': 'Falha ao buscar lista de modelos',
  'roleConfig.templateApplied': 'modelo aplicado',
  'roleConfig.applyTemplateFailed': 'Falha ao aplicar modelo',
  'roleConfig.fetchConfigFailed': 'Falha ao buscar configuração',
  'roleConfig.fetchModelsFailed': 'Falha ao buscar lista de modelos',
  'roleConfig.fetchPluginsFailed': 'Falha ao buscar lista de plugins',
  'roleConfig.cannotResumeAudio': 'Não é possível retomar a reprodução de áudio',
  'roleConfig.selectVoiceFirst': 'Por favor, selecione uma voz primeiro',
  'roleConfig.audioLoadTimeout': 'O carregamento do áudio está demorando muito. Por favor, tente novamente mais tarde',
  'roleConfig.cloneAudioPlayFailed': 'Falha na reprodução do áudio clonado',
  'roleConfig.cannotPlayCloneAudio': 'Não é possível reproduzir áudio clonado',
  'roleConfig.getCloneAudioFailed': 'Falha ao obter áudio clonado',
  'roleConfig.noPreviewAudio': 'Esta voz não possui áudio de pré-visualização disponível',
  'roleConfig.audioPlayFailed': 'Falha na reprodução de áudio',
  'roleConfig.cannotPlayAudio': 'Não é possível reproduzir áudio',
  'roleConfig.audioPlayError': 'Ocorreu um erro durante a reprodução de áudio',

  // Diálogo de gerenciamento de funções
  'functionDialog.title': 'Gerenciamento de Funções',
  'functionDialog.unselectedFunctions': 'Funções Não Selecionadas',
  'functionDialog.selectedFunctions': 'Funções Selecionadas',
  'functionDialog.selectAll': 'Selecionar Tudo',
  'functionDialog.noMorePlugins': 'Não há mais plugins disponíveis',
  'functionDialog.pleaseSelectPlugin': 'Por favor, selecione funções de plugin',
  'functionDialog.paramConfig': 'Configuração de Parâmetros',
  'functionDialog.noNeedToConfig': ' não requer configuração de parâmetros',
  'functionDialog.pleaseSelectFunctionForParam': 'Por favor, selecione uma função configurada para definições de parâmetros',
  'functionDialog.mcpAccessPoint': 'Ponto de Acesso MCP',
  'functionDialog.mcpAddressDesc': 'Abaixo estão os endereços de ponto de acesso MCP do agente.',
  'functionDialog.howToDeployMcp': 'Como implantar ponto de acesso MCP',
  'functionDialog.howToIntegrateMcp': 'Como integrar funções MCP',
  'functionDialog.copy': 'Copiar',
  'functionDialog.accessPointStatus': 'Status do Ponto de Acesso',
  'functionDialog.connected': 'Conectado',
  'functionDialog.loading': 'Carregando...',
  'functionDialog.disconnected': 'Desconectado',
  'functionDialog.refresh': 'Atualizar',
  'functionDialog.noAvailableTools': 'Nenhuma ferramenta disponível',
  'functionDialog.cancel': 'Cancelar',
  'functionDialog.saveConfig': 'Salvar Configuração',
  'functionDialog.copiedToClipboard': 'Copiado para a área de transferência',
  'functionDialog.copyFailed': 'Falha ao copiar. Por favor, copie manualmente',
  'functionDialog.jsonFormatError': ' erro no formato do campo: formato JSON inválido',
  'functionDialog.defaultValue': 'Valor Padrão',

  // Página de configuração de modelos
  'modelConfig.searchPlaceholder': 'Por favor, insira o nome do modelo para pesquisar',
  'modelConfig.search': 'Pesquisar',
  'modelConfig.vad': 'Detecção de Atividade de Voz',
  'modelConfig.asr': 'Reconhecimento de Fala',
  'modelConfig.llm': 'Modelo de Linguagem Grande',
  'modelConfig.vllm': 'Modelo de Linguagem Visual',
  'modelConfig.intent': 'Reconhecimento de Intenção',
  'modelConfig.tts': 'Texto para Fala',
  'modelConfig.memory': 'Memória',
  'modelConfig.rag': 'RAG',
  'modelConfig.modelId': 'ID do Modelo',
  'modelConfig.modelName': 'Nome do Modelo',
  'modelConfig.provider': 'Tipo de Interface',
  'modelConfig.unknown': 'Desconhecido',
  'modelConfig.isEnabled': 'Ativado',
  'modelConfig.isDefault': 'Padrão',
  'modelConfig.defaultModelCannotDisable': 'A configuração do modelo padrão não pode ser desativada',
  'modelConfig.action': 'Ação',
  'modelConfig.voiceManagement': 'Gerenciamento de Voz',
  'modelConfig.edit': 'Editar',
  'modelConfig.duplicate': 'Duplicar',
  'modelConfig.delete': 'Excluir',
  'modelConfig.deselectAll': 'Desmarcar Tudo',
  'modelConfig.select': 'Selecionar',
  'modelConfig.selectAll': 'Selecionar Tudo',
  'modelConfig.add': 'Adicionar Novo',
  'modelConfig.selectModelsFirst': 'Por favor, selecione modelos para excluir primeiro',
  'modelConfig.confirmBatchDelete': 'Tem certeza de que deseja excluir os modelos selecionados?',
  'modelConfig.confirmDelete': 'Tem certeza de que deseja excluir este modelo?',
  'modelConfig.batchDeleteSuccess': 'Exclusão em lote realizada com sucesso',
  'modelConfig.partialDeleteFailed': 'Exclusão parcial falhou',
  'modelConfig.deleteSuccess': 'Excluído com sucesso',
  'modelConfig.deleteFailed': 'Falha ao excluir',
  'modelConfig.deleteCancelled': 'Exclusão cancelada',
  'modelConfig.duplicateSuccess': 'Duplicado com sucesso',
  'modelConfig.duplicateFailed': 'Falha ao duplicar',
  'modelConfig.saveSuccess': 'Salvo com sucesso',
  'modelConfig.saveFailed': 'Falha ao salvar',
  'modelConfig.addSuccess': 'Adicionado com sucesso',
  'modelConfig.addFailed': 'Falha ao adicionar',
  'modelConfig.fetchModelsFailed': 'Falha ao buscar lista de modelos',
  'modelConfig.enableSuccess': 'Ativado com sucesso',
  'modelConfig.disableSuccess': 'Desativado com sucesso',
  'modelConfig.operationFailed': 'Falha na operação',
  'modelConfig.setDefaultSuccess': 'Modelo padrão definido com sucesso. Por favor, reinicie o módulo xiaozhi-server manualmente',
  'modelConfig.itemsPerPage': '{items} itens/página',
  'modelConfig.firstPage': 'Primeira Página',
  'modelConfig.prevPage': 'Página Anterior',
  'modelConfig.nextPage': 'Próxima Página',
  'modelConfig.totalRecords': 'Total de {total} registros',
  'modelConfig.loading': 'Carregando...',

  // Diálogo de configuração de modelos
  'modelConfigDialog.addModel': 'Adicionar Modelo',
  'modelConfigDialog.editModel': 'Editar Modelo',
  'modelConfigDialog.duplicateModel': 'Duplicar Modelo',
  'modelConfigDialog.copySuffix': '_cópia',
  'modelConfigDialog.modelInfo': 'Informações do Modelo',
  'modelConfigDialog.enable': 'Ativar',
  'modelConfigDialog.setDefault': 'Definir como Padrão',
  'modelConfigDialog.modelId': 'ID do Modelo',
  'modelConfigDialog.enterModelId': 'Se não preenchido, será gerado automaticamente',
  'modelConfigDialog.invalidModelId': 'O ID do modelo não pode ser apenas texto ou espaços. Use letras, números, sublinhados ou hífens',
  'modelConfigDialog.modelName': 'Nome do Modelo',
  'modelConfigDialog.enterModelName': 'Por favor, insira o nome do modelo',
  'modelConfigDialog.modelCode': 'Código do Modelo',
  'modelConfigDialog.enterModelCode': 'Por favor, insira o código do modelo',
  'modelConfigDialog.supplier': 'Fornecedor',
  'modelConfigDialog.selectSupplier': 'Por favor, selecione',
  'modelConfigDialog.sortOrder': 'Ordem de Classificação',
  'modelConfigDialog.enterSortOrder': 'Por favor, insira a ordem de classificação',
  'modelConfigDialog.docLink': 'Link da Documentação',
  'modelConfigDialog.enterDocLink': 'Por favor, insira o link da documentação',
  'modelConfigDialog.remark': 'Observação',
  'modelConfigDialog.enterRemark': 'Por favor, insira a observação do modelo',
  'modelConfigDialog.callInfo': 'Informações de Chamada',
  'modelConfigDialog.enterJsonExample': 'Por favor, insira variáveis no formato JSON (exemplo: {"key":"value"})',
  'modelConfigDialog.save': 'Salvar',

  // Configuração de modelo TTS
  'ttsModel.select': 'Selecionar',
  'ttsModel.voiceCode': 'Código da Voz',
  'ttsModel.voiceName': 'Nome da Voz',
  'ttsModel.languageType': 'Tipo de Idioma',
  'ttsModel.preview': 'Pré-visualizar',
  'ttsModel.enterMp3Url': 'Por favor, insira a URL do MP3',
  'ttsModel.remark': 'Observação',
  'ttsModel.enterRemark': 'Esta é uma observação',
  'ttsModel.referenceAudioPath': 'Caminho do Áudio de Referência',
  'ttsModel.enterReferenceAudio': 'Este é o caminho do áudio de referência',
  'ttsModel.referenceText': 'Texto do Áudio de Referência',
  'ttsModel.enterReferenceText': 'Este é o texto do áudio de referência',
  'ttsModel.action': 'Ação',
  'ttsModel.operation': 'Operação',
  'ttsModel.operationFailed': 'Falha na operação',
  'ttsModel.operationClosed': 'Operação fechada',
  'ttsModel.edit': 'Editar',
  'ttsModel.delete': 'Excluir',
  'ttsModel.deleteVoiceSuccess': '{count} vozes excluídas com sucesso',
  'ttsModel.deleteFailed': 'Falha ao excluir vozes',
  'ttsModel.save': 'Salvar',
  'ttsModel.deselectAll': 'Desmarcar Tudo',
  'ttsModel.selectAll': 'Selecionar Tudo',
  'ttsModel.add': 'Adicionar',
  'ttsModel.fetchVoicesFailed': 'Falha ao buscar lista de vozes',
  'ttsModel.loadVoicesFailed': 'Falha ao carregar dados de voz',
  'ttsModel.unnamedVoice': 'Voz Sem Nome',
  'ttsModel.finishEditingFirst': 'Por favor, termine a edição atual primeiro',
  'ttsModel.selectVoiceToDelete': 'Por favor, selecione vozes para excluir',
  'ttsModel.warning': 'Aviso',
  'ttsModel.confirmDeleteVoice': 'Tem certeza de que deseja excluir {count} vozes?',
  'ttsModel.voiceCodeNameLanguageRequired': 'Código da voz, nome da voz e tipo de idioma não podem estar vazios',
  'ttsModel.deleteCancelled': 'Exclusão cancelada',
  'ttsModel.updateSuccess': 'Atualizado com sucesso',
  'ttsModel.saveSuccess': 'Salvo com sucesso',

  // Página de gerenciamento OTA
  'otaManagement.firmwareManagement': 'Gerenciamento de Firmware',
  'otaManagement.searchPlaceholder': 'Por favor, insira o nome do firmware para pesquisar',
  'otaManagement.search': 'Pesquisar',
  'otaManagement.firmwareName': 'Nome do Firmware',
  'otaManagement.firmwareType': 'Tipo de Firmware',
  'otaManagement.version': 'Versão',
  'otaManagement.fileSize': 'Tamanho do Arquivo',
  'otaManagement.remark': 'Observação',
  'otaManagement.createTime': 'Data de Criação',
  'otaManagement.updateTime': 'Data de Atualização',
  'otaManagement.action': 'Ação',
  'otaManagement.download': 'Baixar',
  'otaManagement.edit': 'Editar',
  'otaManagement.delete': 'Excluir',
  'otaManagement.selectAll': 'Selecionar Tudo',
  'otaManagement.deselectAll': 'Desmarcar Tudo',
  'otaManagement.addNew': 'Adicionar Novo',
  'otaManagement.addFirmware': 'Adicionar Firmware',
  'otaManagement.editFirmware': 'Editar Firmware',
  'otaManagement.itemsPerPage': '{items} itens/página',
  'otaManagement.firstPage': 'Primeira Página',
  'otaManagement.prevPage': 'Página Anterior',
  'otaManagement.nextPage': 'Próxima Página',
  'otaManagement.totalRecords': 'Total de {total} registros',
  'otaManagement.selectFirmwareFirst': 'Por favor, selecione firmware para excluir primeiro',
  'otaManagement.confirmBatchDelete': 'Tem certeza de que deseja excluir os {paramCount} firmware selecionados?',
  'otaManagement.operationCancelled': 'Operação de exclusão foi cancelada',
  'otaManagement.operationClosed': 'Operação foi fechada',
  'otaManagement.batchDeleteSuccess': '{paramCount} firmware excluídos com sucesso',
  'otaManagement.deleteFailed': 'Falha na exclusão. Por favor, tente novamente',
  'otaManagement.incompleteFirmwareInfo': 'Informações de firmware incompletas',
  'otaManagement.getDownloadUrlFailed': 'Falha ao obter link de download',
  'otaManagement.getFirmwareTypesFailed': 'Falha ao obter tipos de firmware',
  'otaManagement.updateSuccess': 'Atualizado com sucesso',
  'otaManagement.updateFailed': 'Falha na atualização',
  'otaManagement.addSuccess': 'Adicionado com sucesso',
  'otaManagement.addFailed': 'Falha ao adicionar',
  'otaManagement.fetchFirmwareListFailed': 'Falha ao buscar lista de firmware',

  // Tipos de modelo na página de gerenciamento de provedores
  'providerManagement.all': 'Todos',
  'providerManagement.modelType.ASR': 'Reconhecimento de Fala',
  'providerManagement.modelType.TTS': 'Texto para Fala',
  'providerManagement.modelType.LLM': 'Modelo de Linguagem Grande',
  'providerManagement.modelType.VLLM': 'Modelo de Linguagem Visual Grande',
  'providerManagement.modelType.Intent': 'Reconhecimento de Intenção',
  'providerManagement.modelType.Memory': 'Módulo de Memória',
  'providerManagement.modelType.VAD': 'Detecção de Atividade de Voz',
  'providerManagement.modelType.Plugin': 'Ferramenta de Plugin',
  'providerManagement.modelType.RAG': 'RAG',

  // Diálogo de provedor
  'providerDialog.category': 'Categoria',
  'providerDialog.selectCategory': 'Por favor, selecione a categoria',
  'providerDialog.code': 'Código',
  'providerDialog.inputCode': 'Por favor, insira o código do provedor',
  'providerDialog.name': 'Nome',
  'providerDialog.inputName': 'Por favor, insira o nome do provedor',
  'providerDialog.sort': 'Ordenação',
  'providerDialog.fieldConfig': 'Configuração de Campos',
  'providerDialog.add': 'Adicionar',
  'providerDialog.deselectAll': 'Desmarcar Tudo',
  'providerDialog.selectAll': 'Selecionar Tudo',
  'providerDialog.batchDelete': 'Exclusão em Lote',
  'providerDialog.fieldKey': 'Chave do Campo',
  'providerDialog.fieldLabel': 'Rótulo do Campo',
  'providerDialog.fieldType': 'Tipo do Campo',
  'providerDialog.type': 'Tipo',
  'providerDialog.stringType': 'Texto',
  'providerDialog.numberType': 'Número',
  'providerDialog.booleanType': 'Booleano',
  'providerDialog.dictType': 'Dicionário',
  'providerDialog.arrayType': 'Lista Separada por Ponto e Vírgula',
  'providerDialog.ragType': 'RAG',
  'providerDialog.defaultValue': 'Valor Padrão',
  'providerDialog.inputDefaultValue': 'Por favor, insira o valor padrão',
  'providerDialog.operation': 'Operação',
  'providerDialog.edit': 'Editar',
  'providerDialog.complete': 'Concluir',
  'providerDialog.delete': 'Excluir',
  'providerDialog.save': 'Salvar',
  'providerDialog.requiredCategory': 'Por favor, selecione a categoria',
  'providerDialog.requiredCode': 'Por favor, insira o código do provedor',
  'providerDialog.requiredName': 'Por favor, insira o nome do provedor',
  'providerDialog.completeFieldEdit': 'Por favor, conclua a edição do campo atual primeiro',
  'providerDialog.confirmDeleteField': 'Tem certeza de que deseja excluir este campo?',
  'providerDialog.selectFieldsToDelete': 'Por favor, selecione campos para excluir primeiro',
  'providerDialog.confirmBatchDeleteFields': 'Tem certeza de que deseja excluir {count} campos selecionados?',
  'providerDialog.batchDeleteFieldsSuccess': '{count} campos excluídos com sucesso',

  // Gerenciamento de modelos de agente
  'agentTemplateManagement.title': 'Gerenciamento de Papéis Padrão',
  'agentTemplateManagement.templateName': 'Nome do Modelo',
  'agentTemplateManagement.action': 'Ação',
  'agentTemplateManagement.createTemplate': 'Criar Modelo',
  'agentTemplateManagement.editTemplate': 'Editar Modelo',
  'agentTemplateManagement.deleteTemplate': 'Excluir Modelo',
  'agentTemplateManagement.deleteSuccess': 'Modelo excluído com sucesso',
  'agentTemplateManagement.batchDelete': 'Exclusão em Lote',
  'agentTemplateManagement.batchDeleteSuccess': 'Exclusão em lote realizada com sucesso',
  'agentTemplateManagement.selectTemplate': 'Por favor, selecione um modelo',
  'agentTemplateManagement.select': 'Selecionar',
  'agentTemplateManagement.searchPlaceholder': 'Por favor, insira o nome do modelo para pesquisar',
  'agentTemplateManagement.search': 'Pesquisar',
  'agentTemplateManagement.serialNumber': 'Número de Série',
  'agentTemplateManagement.selectAll': 'Selecionar Tudo',
  'agentTemplateManagement.deselectAll': 'Desmarcar Tudo',
  'agentTemplateManagement.loading': 'Carregando...',
  'agentTemplateManagement.confirmSingleDelete': 'Tem certeza de que deseja excluir este modelo?',
  'agentTemplateManagement.confirmBatchDelete': 'Tem certeza de que deseja excluir os {count} modelos selecionados?',
  'agentTemplateManagement.deleteFailed': 'Falha ao excluir modelo',
  'agentTemplateManagement.batchDeleteFailed': 'Falha na exclusão em lote de modelos',
  'agentTemplateManagement.deleteBackendError': 'Falha na exclusão. Verifique se o serviço de backend está funcionando normalmente',

  // Configuração rápida de modelo
  'templateQuickConfig.title': 'Configuração Rápida de Módulo',
  'templateQuickConfig.agentSettings.agentName': 'Apelido',
  'templateQuickConfig.agentSettings.agentNamePlaceholder': 'Por favor, insira o apelido',
  'templateQuickConfig.agentSettings.systemPrompt': 'Introdução',
  'templateQuickConfig.agentSettings.systemPromptPlaceholder': 'Por favor, insira a introdução',
  'templateQuickConfig.saveConfig': 'Salvar Configuração',
  'templateQuickConfig.resetConfig': 'Redefinir Configuração',
  'templateQuickConfig.saveSuccess': 'Configuração salva com sucesso',
  'templateQuickConfig.resetSuccess': 'Configuração redefinida com sucesso',
  'templateQuickConfig.confirmReset': 'Tem certeza de que deseja redefinir a configuração?',
  'templateQuickConfig.saveFailed': 'Falha ao salvar configuração',
  'templateQuickConfig.confirm': 'Confirmar',
  'templateQuickConfig.cancel': 'Cancelar',
  'templateQuickConfig.templateNotFound': 'Modelo não encontrado',
  'templateQuickConfig.newTemplate': 'Novo Modelo',
  'warning': 'Aviso',
  'info': 'Informação',
  'common.networkError': 'Falha na requisição de rede',

  // Criptografia SM2
  'sm2.publicKeyNotConfigured': 'Chave pública SM2 não configurada. Por favor, entre em contato com o administrador',
  'sm2.encryptionFailed': 'Falha na criptografia da senha',
  'sm2.keyGenerationFailed': 'Falha na geração do par de chaves',
  'sm2.invalidPublicKey': 'Formato de chave pública inválido',
  'sm2.encryptionError': 'Ocorreu um erro durante a criptografia',
  'sm2.publicKeyRetry': 'Tentando obter a chave pública novamente...',
  'sm2.publicKeyRetryFailed': 'Falha na nova tentativa de obtenção da chave pública',

  // Clonagem de Voz e Gerenciamento de Recursos
  'voiceClone.title': 'Clonagem de Voz',
  'voiceResource.title': 'Recurso de Voz',
  'voiceClone.platformName': 'Nome da Plataforma',
  'voiceClone.voiceId': 'ID da Voz',
  'voiceClone.userId': 'Proprietário da Conta',
  'voiceClone.name': 'Nome da Voz',
  'voiceClone.clone': 'Clonar Voz',
  'voiceClone.action': 'Ação',
  'voiceClone.modelId': 'ID do Modelo',
  'voiceClone.trainStatus': 'Status do Treinamento',
  'voiceClone.trainError': 'Erro de Treinamento',
  'voiceClone.createdAt': 'Data de Criação',
  'voiceClone.search': 'Pesquisar',
  'voiceClone.searchPlaceholder': 'Por favor, insira o nome da voz ou ID da voz',
  'voiceClone.addNew': 'Adicionar',
  'voiceClone.delete': 'Excluir',
  'voiceClone.selectAll': 'Selecionar Tudo',
  'voiceClone.deselectAll': 'Desmarcar Tudo',
  'voiceClone.addVoiceClone': 'Adicionar Recurso de Voz',
  'voiceClone.confirmDelete': 'Tem certeza de que deseja excluir os {count} recursos de voz selecionados?',
  'voiceClone.deleteSuccess': '{count} recursos de voz excluídos com sucesso',
  'voiceClone.deleteFailed': 'Falha na exclusão',
  'voiceClone.addSuccess': 'Adicionado com sucesso',
  'voiceClone.addFailed': 'Falha ao adicionar',
  'voiceClone.updateSuccess': 'Atualizado com sucesso',
  'voiceClone.updateFailed': 'Falha na atualização',
  'voiceClone.selectFirst': 'Por favor, selecione recursos de voz para excluir primeiro',
  'voiceClone.operationCancelled': 'Cancelar',
  'voiceClone.operationClosed': 'Popup fechado',
  'voiceClone.cloneSuccess': 'Clonado com sucesso',
  'voiceClone.cloneFailed': 'Falha ao clonar',
  'voiceClone.confirmClone': 'Tem certeza de que deseja clonar esta voz?',
  'voiceClone.onlySuccessCanClone': 'Apenas vozes treinadas com sucesso podem ser clonadas',
  'common.insufficient': 'Insuficiente',
  'voiceClone.platformNameRequired': 'Por favor, selecione o nome da plataforma',
  'voiceClone.voiceIdRequired': 'Por favor, selecione o ID da voz',
  'voiceClone.userIdRequired': 'Por favor, selecione o proprietário da conta',
  'voiceClone.platformNamePlaceholder': 'Por favor, selecione o nome da plataforma',
  'voiceClone.voiceIdPlaceholder': 'Por favor, insira o ID da voz e pressione Enter',
  'voiceClone.userIdPlaceholder': 'Por favor, insira palavra-chave para selecionar o proprietário da conta',
  'voiceClone.languages': 'Idiomas',
  'voiceClone.languagesPlaceholder': 'Por favor, insira idiomas, ex.: Português, English',
  'voiceClone.languagesRequired': 'Por favor, insira idiomas',
  'voiceClone.waitingUpload': 'Aguardando envio',
  'voiceClone.waitingTraining': 'Aguardando clonagem',
  'voiceClone.training': 'Treinando',
  'voiceClone.trainSuccess': 'Treinamento bem-sucedido',
  'voiceClone.trainFailed': 'Treinamento falhou',
  'voiceClone.itemsPerPage': '{items} itens/página',
  'voiceClone.firstPage': 'Primeira Página',
  'voiceClone.prevPage': 'Página Anterior',
  'voiceClone.nextPage': 'Próxima Página',
  'voiceClone.totalRecords': '{total} registros no total',
  'voiceClone.noVoiceCloneAssigned': 'Sua conta não possui recursos de voz atribuídos',
  'voiceClone.contactAdmin': 'Por favor, entre em contato com o administrador para atribuição de recursos de voz',
  'voiceClone.dialogTitle': 'Clonagem de Voz',
  'voiceClone.stepUpload': 'Preparar Áudio',
  'voiceClone.stepEdit': 'Editar Áudio',
  'voiceClone.dragOrClick': 'Arraste o arquivo de áudio aqui ou clique para enviar',
  'voiceClone.uploadTip': 'Suporta todos os formatos de áudio principais. A duração selecionada deve ser entre 8 e 60 segundos',
  'voiceClone.editTip1': 'Por favor, confirme se o áudio enviado está satisfatório',
  'voiceClone.editTip2': 'Você pode ouvir e cortar o áudio. Se não estiver satisfeito, pode voltar para regravar ou reenviar',
  'voiceClone.selectedDuration': 'Segmento válido selecionado: {duration} segundos',
  'voiceClone.trim': 'Cortar segmento selecionado',
  'voiceClone.reset': 'Redefinir',
  'voiceClone.play': 'Reproduzir',
  'voiceClone.pause': 'Pausar',
  'voiceClone.stop': 'Parar',
  'voiceClone.cancel': 'Cancelar',
  'voiceClone.warning': 'Aviso',
  'voiceClone.ok': 'OK',
  'voiceClone.nextStep': 'Próximo',
  'voiceClone.prevStep': 'Anterior',
  'voiceClone.upload': 'Enviar Áudio',
  'voiceClone.pleaseSelectAudio': 'Por favor, selecione um arquivo de áudio primeiro',
  'voiceClone.durationError': 'A duração do áudio deve ser entre 8 e 60 segundos',
  'voiceClone.loadAudioFailed': 'Falha ao carregar áudio',
  'voiceClone.trimSuccess': 'Corte realizado com sucesso',
  'voiceClone.resetSuccess': 'Redefinido com sucesso',
  'voiceClone.uploadSuccess': 'Enviado com sucesso',
  'voiceClone.uploadFailed': 'Falha no envio',
  'voiceClone.updateNameSuccess': 'Nome atualizado com sucesso',
  'voiceClone.updateNameFailed': 'Falha ao atualizar nome',
  'voiceClone.playFailed': 'Falha na reprodução',
  'voiceClone.Details': 'Detalhes do Erro',

  // Página de gerenciamento da Base de Conhecimento
  'knowledgeBaseManagement.title': 'Base de Conhecimento',
  'knowledgeBaseManagement.searchPlaceholder': 'Por favor, insira o nome da base de conhecimento para pesquisar',
  'knowledgeBaseManagement.search': 'Pesquisar',
  'knowledgeBaseManagement.name': 'Nome da Base de Conhecimento',
  'knowledgeBaseManagement.description': 'Descrição da Base de Conhecimento',
  'knowledgeBaseManagement.documentCount': 'Quantidade de Documentos',
  'knowledgeBaseManagement.status': 'Ativado',
  'knowledgeBaseManagement.createdAt': 'Data de Criação',
  'knowledgeBaseManagement.operation': 'Operação',
  'knowledgeBaseManagement.add': 'Adicionar',
  'knowledgeBaseManagement.delete': 'Excluir',
  'knowledgeBaseManagement.edit': 'Editar',
  'knowledgeBaseManagement.itemsPerPage': 'itens/página',
  'knowledgeBaseManagement.firstPage': 'Primeira Página',
  'knowledgeBaseManagement.prevPage': 'Página Anterior',
  'knowledgeBaseManagement.nextPage': 'Próxima Página',
  'knowledgeBaseManagement.totalRecords': 'Total de {total} registros',
  'knowledgeBaseManagement.addKnowledgeBase': 'Adicionar Base de Conhecimento',
  'knowledgeBaseManagement.editKnowledgeBase': 'Editar Base de Conhecimento',
  'knowledgeBaseManagement.getKnowledgeBaseListFailed': 'Falha ao obter lista de bases de conhecimento',
  'knowledgeBaseManagement.selectKnowledgeBaseFirst': 'Por favor, selecione bases de conhecimento para excluir primeiro',
  'knowledgeBaseManagement.confirmBatchDelete': 'Tem certeza de que deseja excluir as {count} bases de conhecimento selecionadas?',
  'knowledgeBaseManagement.batchDeleteSuccess': '{count} bases de conhecimento excluídas com sucesso',
  'knowledgeBaseManagement.deleteFailed': 'Falha ao excluir. Por favor, tente novamente',
  'knowledgeBaseManagement.operationCancelled': 'Operação de exclusão foi cancelada',
  'knowledgeBaseManagement.updateSuccess': 'Atualizado com sucesso',
  'knowledgeBaseManagement.addSuccess': 'Adicionado com sucesso',
  'knowledgeBaseManagement.updateFailed': 'Falha na atualização',
  'knowledgeBaseManagement.addFailed': 'Falha ao adicionar',
  'knowledgeBaseManagement.selectAll': 'Selecionar Tudo',
  'knowledgeBaseManagement.cancelSelectAll': 'Desmarcar Tudo',

  // Diálogo da Base de Conhecimento
  'knowledgeBaseDialog.title': 'Base de Conhecimento',
  'knowledgeBaseDialog.name': 'Nome da Base de Conhecimento',
  'knowledgeBaseDialog.namePlaceholder': 'Por favor, insira o nome da base de conhecimento com precisão para melhorar a acurácia da chamada da base de conhecimento',
  'knowledgeBaseDialog.description': 'Descrição da Base de Conhecimento',
  'knowledgeBaseDialog.descriptionPlaceholder': 'Por favor, insira a descrição da base de conhecimento com precisão para ajudar o modelo a entender melhor o conteúdo',
  'knowledgeBaseDialog.ragModel': 'Modelo RAG',
  'knowledgeBaseDialog.ragModelPlaceholder': 'Por favor, selecione o modelo RAG',
  'knowledgeBaseDialog.ragModelRequired': 'Por favor, selecione o modelo RAG',
  'knowledgeBaseDialog.loadRAGModelsFailed': 'Falha ao carregar lista de modelos RAG',
  'knowledgeBaseDialog.status': 'Status',
  'knowledgeBaseDialog.statusEnabled': 'Ativado',
  'knowledgeBaseDialog.statusDisabled': 'Desativado',
  'knowledgeBaseDialog.save': 'Salvar',
  'knowledgeBaseDialog.cancel': 'Cancelar',
  'knowledgeBaseDialog.confirm': 'Confirmar',
  'knowledgeBaseDialog.requiredName': 'Por favor, insira o nome da base de conhecimento',
  'knowledgeBaseDialog.nameRequired': 'Por favor, insira o nome da base de conhecimento',
  'knowledgeBaseDialog.nameLength': 'O nome da base de conhecimento deve ter entre 1 e 50 caracteres',
  'knowledgeBaseDialog.namePattern': 'O nome da base de conhecimento pode conter apenas caracteres chinêses, inglêses, números, espaços, sublinhados e hífens',
  'knowledgeBaseDialog.descriptionLength': 'A descrição da base de conhecimento não pode exceder 200 caracteres',
  'knowledgeBaseDialog.nameLengthLimit': 'O nome da base de conhecimento não pode exceder 50 caracteres',
  'knowledgeBaseDialog.descriptionLengthLimit': 'A descrição da base de conhecimento não pode exceder 200 caracteres',

  // Botão de visualização na página de gerenciamento da base de conhecimento
  'knowledgeBaseManagement.view': 'Gerenciar Arquivos',

  // Página de upload de arquivos da base de conhecimento
  'knowledgeFileUpload.back': 'Voltar',
  'knowledgeFileUpload.searchPlaceholder': 'Por favor, insira o nome do documento para pesquisar',
  'knowledgeFileUpload.search': 'Pesquisar',
  'knowledgeFileUpload.addDocument': 'Adicionar Documento',
  'knowledgeFileUpload.documentName': 'Nome do Documento',
  'knowledgeFileUpload.uploadTime': 'Data de Envio',
  'knowledgeFileUpload.status': 'Status',
  'knowledgeFileUpload.operation': 'Operação',
  'knowledgeFileUpload.parse': 'Analisar',
  'knowledgeFileUpload.viewSlices': 'Ver Fatias',
  'knowledgeFileUpload.delete': 'Excluir',
  'knowledgeFileUpload.itemsPerPage': 'itens/página',
  'knowledgeFileUpload.firstPage': 'Primeira Página',
  'knowledgeFileUpload.prevPage': 'Página Anterior',
  'knowledgeFileUpload.nextPage': 'Próxima Página',
  'knowledgeFileUpload.totalRecords': 'Total de {total} registros',
  'knowledgeFileUpload.uploadDocument': 'Enviar Documento',
  'knowledgeFileUpload.documentNamePlaceholder': 'Por favor, insira o nome do documento',
  'knowledgeFileUpload.file': 'Arquivo',
  'knowledgeFileUpload.clickToUpload': 'Clique para enviar',
  'knowledgeFileUpload.uploadTip': 'Tipos de arquivo suportados: PDF, DOC, DOCX, TXT, MD, CSV, XLS, XLSX, PPT, PPTX. Máximo de 32 arquivos por envio, cada arquivo com até 10MB',
  'knowledgeFileUpload.dragOrClick': 'Arraste o arquivo aqui ou clique para enviar',
  'knowledgeFileUpload.cancel': 'Cancelar',
  'knowledgeFileUpload.confirm': 'Confirmar',
  'knowledgeFileUpload.knowledgeBaseName': 'Nome da Base de Conhecimento',
  'knowledgeFileUpload.statusNotStarted': 'Não Iniciado',
  'knowledgeFileUpload.statusProcessing': 'Processando',
  'knowledgeFileUpload.statusCancelled': 'Cancelado',
  'knowledgeFileUpload.statusCompleted': 'Concluído',
  'knowledgeFileUpload.statusFailed': 'Falhou',
  'knowledgeFileUpload.uploadSuccess': 'Documento enviado com sucesso',
  'knowledgeFileUpload.uploadFailed': 'Falha no envio do documento',
  'knowledgeFileUpload.parseSuccess': 'Documento analisado com sucesso',
  'knowledgeFileUpload.parseFailed': 'Falha na análise do documento',
  'knowledgeFileUpload.deleteSuccess': 'Documento excluído com sucesso',
  'knowledgeFileUpload.deleteFailed': 'Falha ao excluir documento',
  'knowledgeFileUpload.confirmDelete': 'Tem certeza de que deseja excluir este documento?',
  'knowledgeFileUpload.confirmParse': 'Tem certeza de que deseja analisar este documento?',
  'knowledgeFileUpload.nameRequired': 'Por favor, insira o nome do documento',
  'knowledgeFileUpload.fileRequired': 'Por favor, selecione um arquivo para enviar',
  'knowledgeFileUpload.getListFailed': 'Falha ao obter lista de documentos',
  'knowledgeFileUpload.parseCancelled': 'Análise cancelada',
  'knowledgeFileUpload.deleteCancelled': 'Exclusão cancelada',
  'knowledgeFileUpload.selectFilesFirst': 'Por favor, selecione arquivos para excluir primeiro',
  'knowledgeFileUpload.selectAll': 'Selecionar Tudo',
  'knowledgeFileUpload.deselectAll': 'Desmarcar Tudo',
  'knowledgeFileUpload.batchDelete': 'Excluir',
  'knowledgeFileUpload.confirmBatchDelete': 'Tem certeza de que deseja excluir os {count} arquivos selecionados?',
  'knowledgeFileUpload.batchDeleteSuccess': '{count} arquivos excluídos com sucesso',
  'knowledgeFileUpload.batchDeleteFailed': 'Falha na exclusão em lote',
  'knowledgeFileUpload.sliceCount': 'Quantidade de Fatias',
  'knowledgeFileUpload.add': 'Adicionar',
  'knowledgeFileUpload.retrievalTest': 'Teste de Recuperação',
  'knowledgeFileUpload.testQuestion': 'Pergunta de Teste',
  'knowledgeFileUpload.testQuestionPlaceholder': 'Por favor, insira a pergunta para testar',
  'knowledgeFileUpload.executeTest': 'Executar Teste',
  'knowledgeFileUpload.testResult': 'Resultado do Teste:',
  'knowledgeFileUpload.selectedFiles': 'Arquivos Selecionados',
  'knowledgeFileUpload.totalSlices': 'Total de {total} registros',
  'knowledgeFileUpload.slice': 'Fatia',
  'knowledgeFileUpload.noSliceData': 'Não há dados de fatia disponíveis',
  'knowledgeFileUpload.firstPage': 'Primeira',
  'knowledgeFileUpload.prevPage': 'Anterior',
  'knowledgeFileUpload.nextPage': 'Próxima',
  'knowledgeFileUpload.totalRecords': 'Total de {total} registros',
  'knowledgeFileUpload.testQuestion': 'Pergunta de Teste',
  'knowledgeFileUpload.testQuestionPlaceholder': 'Por favor, insira a pergunta para testar',
  'knowledgeFileUpload.runTest': 'Executar Teste',
  'knowledgeFileUpload.testResult': 'Resultado do Teste:',
  'knowledgeFileUpload.noRelatedSlices': 'Nenhuma fatia relacionada encontrada',
  'knowledgeFileUpload.comprehensiveSimilarity': 'Similaridade Geral',
  'knowledgeFileUpload.content': 'Conteúdo:',
  'knowledgeFileUpload.testQuestionRequired': 'Por favor, insira a pergunta de teste',
  'knowledgeBaseDialog.descriptionRequired': 'Por favor, insira a descrição da base de conhecimento',

  // Página de gerenciamento de funcionalidades
  'featureManagement.selectAll': 'Selecionar Tudo',
  'featureManagement.deselectAll': 'Desmarcar Tudo',
  'featureManagement.save': 'Salvar Configuração',
  'featureManagement.reset': 'Redefinir',
  'featureManagement.group.featureManagement': 'Ativar/Desativar a funcionalidade/seção',
  'featureManagement.group.voiceManagement': 'Visível para usuários durante a configuração do agente',
  'featureManagement.noFeatures': 'Nenhuma funcionalidade disponível',
  'featureManagement.contactAdmin': 'Por favor, entre em contato com o administrador para configurar funcionalidades',
  'featureManagement.saveSuccess': 'Configuração de funcionalidades salva com sucesso',
  'featureManagement.resetConfirm': 'Tem certeza de que deseja redefinir todas as configurações de funcionalidades?',
  'featureManagement.confirm': 'Confirmar',
  'featureManagement.cancel': 'Cancelar',
  'featureManagement.resetSuccess': 'Configuração de funcionalidades redefinida com sucesso',
  'featureManagement.noChanges': 'Nenhuma alteração para salvar',

  // Nomes e descrições de funcionalidades
  'feature.voiceprintRecognition.name': 'Reconhecimento de Impressão Vocal',
  'feature.voiceprintRecognition.description': 'Verificar a identidade do usuário através da tecnologia de reconhecimento de impressão vocal, proporcionando uma experiência segura de interação por voz',
  'feature.voiceClone.name': 'Clonagem de Voz',
  'feature.voiceClone.description': 'Clonar timbres de voz específicos usando tecnologia de IA para obter síntese de voz personalizada',
  'feature.knowledgeBase.name': 'Base de Conhecimento',
  'feature.knowledgeBase.description': 'Construir e gerenciar sistema de base de conhecimento para fornecer suporte de conhecimento profissional aos assistentes de IA',
  'feature.mcpAccessPoint.name': 'Ponto de Acesso MCP',
  'feature.mcpAccessPoint.description': 'Fornecer pontos de acesso do protocolo MCP para suportar integração de ferramentas e serviços externos',
  'feature.vad.name': 'Detecção de Atividade de Voz',
  'feature.vad.description': 'Detectar automaticamente atividade de voz para otimizar a eficiência de resposta da interação por voz',
  'feature.asr.name': 'Reconhecimento de Fala',
  'feature.asr.description': 'Converter fala em texto para habilitar a funcionalidade de interação por linguagem natural',

}
