i18n(client): migrate plural messages to ICU MessageFormat

Replace pipe-delimited Vue I18n plural messages with ICU MessageFormat syntax across all locale catalogs and Vue components. Configure custom message formatting and validation to enforce ICU syntax and argument parity.

Closes #792
This commit is contained in:
neon
2026-07-27 01:28:52 +00:00
parent 5aedd93ad5
commit 92ade7dbba
93 changed files with 1709 additions and 1223 deletions
+142 -149
View File
@@ -70,7 +70,7 @@
"empty": "Nenhum administrador visualizou seu perfil de leitura compartilhado.",
"paginationLabel": "Páginas do histórico de acesso ao perfil"
},
"durationMinutes": "{count} minuto | {count} minutos",
"durationMinutes": "{count, plural, one {# minuto} many {# minutos} other {# minutos}}",
"durationHours": "{count} horas",
"unknownTitle": "Livro sem título",
"errors": {
@@ -401,7 +401,7 @@
"icons": {
"title": "Ícones Personalizados",
"uploadIcons": "Enviar ícones",
"uploadedCount": "nenhum ícone enviado | {count} ícone enviado | {count} ícones enviados",
"uploadedCount": "{count, plural, =0 {nenhum ícone enviado} one {# ícone enviado} many {# ícones enviados} other {# ícones enviados}}",
"searchPlaceholder": "Buscar ícones",
"sort": {
"newest": "Mais recentes",
@@ -420,19 +420,19 @@
"rename": "Renomear",
"replace": "Substituir",
"usage": {
"libraries": "nenhuma biblioteca | {count} biblioteca | {count} bibliotecas",
"collections": "nenhuma coleção | {count} coleção | {count} coleções",
"smartScopes": "nenhum escopo inteligente | {count} escopo inteligente | {count} escopos inteligentes"
"libraries": "{count, plural, =0 {nenhuma biblioteca} one {# biblioteca} many {# bibliotecas} other {# bibliotecas}}",
"collections": "{count, plural, =0 {nenhuma coleção} one {# coleção} many {# coleções} other {# coleções}}",
"smartScopes": "{count, plural, =0 {nenhum escopo inteligente} one {# escopo inteligente} many {# escopos inteligentes} other {# escopos inteligentes}}"
},
"confirm": {
"deleteOne": "Excluir \"{name}\"? Os usos existentes reverterão para o ícone padrão.",
"deleteMany": "Excluir nenhum ícone? | Excluir {count} ícone? Os usos existentes reverterão para o ícone padrão. | Excluir {count} ícones? Os usos existentes reverterão para o ícone padrão."
"deleteMany": "{count, plural, =0 {Excluir nenhum ícone?} one {Excluir # ícone? Os usos existentes reverterão para o ícone padrão.} many {Excluir # ícones? Os usos existentes reverterão para o ícone padrão.} other {Excluir # ícones? Os usos existentes reverterão para o ícone padrão.}}"
},
"toasts": {
"saved": "Ícone salvo",
"updated": "Ícone atualizado",
"deleted": "Ícone excluído",
"bulkDeleted": "Nenhum ícone excluído | Excluído {count} ícone | Excluídos {count} ícones",
"bulkDeleted": "{count, plural, =0 {Nenhum ícone excluído} one {Excluído # ícone} many {Excluídos # ícones} other {Excluídos # ícones}}",
"bulkDeletePartial": "Excluído(s) {deleted}, {failed} falhou(aram)"
},
"errors": {
@@ -582,7 +582,7 @@
"expiresOn": "Expira em {date}",
"revokedOn": "Revogado em {date}",
"expiredOn": "Expirou em {date}",
"usesCount": "nenhum uso | um uso | {count} usos",
"usesCount": "{count, plural, =0 {nenhum uso} one {um uso} many {# usos} other {# usos}}",
"copied": "Copiado!",
"copyLink": "Copiar link",
"pause": "Pausar",
@@ -755,7 +755,7 @@
"viewDetails": "Ver Detalhes",
"refreshRecommendationIndex": "Atualizar índice de recomendações",
"refreshRecommendationHint": "Atualize o mecanismo de recomendações com as alterações mais recentes da sua biblioteca. Este processo roda em segundo plano.",
"booksQueuedForProcessing": "nenhum livro na fila de processamento | {count} livro na fila de processamento | {count} livros na fila de processamento",
"booksQueuedForProcessing": "{count, plural, =0 {nenhum livro na fila de processamento} one {# livro na fila de processamento} many {# livros na fila de processamento} other {# livros na fila de processamento}}",
"run": "Executar",
"running": "Executando...",
"backfillAchievements": "Preenchimento retroativo de conquistas",
@@ -767,7 +767,7 @@
"updateChecksEnabled": "Verificação de atualizações ativada",
"updateChecksDisabled": "Verificação de atualizações desativada",
"updateSettingFailed": "Falha ao atualizar configuração",
"booksQueuedForEmbedding": "nenhum livro na fila de incorporação | {count} livro na fila de incorporação | {count} livros na fila de incorporação",
"booksQueuedForEmbedding": "{count, plural, =0 {nenhum livro na fila de incorporação} one {# livro na fila de incorporação} many {# livros na fila de incorporação} other {# livros na fila de incorporação}}",
"failed": "Falhou",
"unknownError": "Erro desconhecido",
"rebuildEmbeddingsFailed": "Falha ao reconstruir incorporações (embeddings): {error}",
@@ -947,7 +947,7 @@
"ofCount": "de {count}",
"targetBookNum": "Livro de destino #{id}",
"recommended": "Recomendado",
"resolveDuplicatesButton": "Resolver {count} duplicata | Resolver {count} duplicata | Resolver {count} duplicatas",
"resolveDuplicatesButton": "{count, plural, =0 {Resolver # duplicata} one {Resolver # duplicata} many {Resolver # duplicatas} other {Resolver # duplicatas}}",
"preflightChecks": "Verificações pré-migração",
"allChecksPassed": "Todas as verificações passaram - pronto para migrar",
"checkSourceValidated": "Origem validada",
@@ -1023,11 +1023,11 @@
"refreshCovers": "Atualizar capas",
"syncMetadataToFiles": "Sincronizar metadados para os arquivos",
"deleteLibrary": "Excluir biblioteca",
"bookCount": "nenhum livro | {count} livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {# livro} many {# livros} other {# livros}}",
"addedDate": "Adicionado em {date}",
"fileMode": "Modo por arquivo",
"folderMode": "Modo por pasta",
"folderCount": "nenhuma pasta | {count} pasta | {count} pastas",
"folderCount": "{count, plural, =0 {nenhuma pasta} one {# pasta} many {# pastas} other {# pastas}}",
"watching": "Monitorando",
"fileWrite": "Gravação de arquivo",
"fileRename": "Renomeação de arquivo",
@@ -1050,7 +1050,7 @@
"scanStartFailed": "Falha ao iniciar escaneamento para \"{name}\"",
"refreshCoversFailed": "Falha ao atualizar capas para \"{name}\"",
"scanStartedAll": "Escaneamento iniciado para todas as bibliotecas",
"librariesFailedToStart": "nenhuma biblioteca falhou ao iniciar | {count} biblioteca falhou ao iniciar | {count} bibliotecas falharam ao iniciar",
"librariesFailedToStart": "{count, plural, =0 {nenhuma biblioteca falhou ao iniciar} one {# biblioteca falhou ao iniciar} many {# bibliotecas falharam ao iniciar} other {# bibliotecas falharam ao iniciar}}",
"scansStartFailed": "Falha ao iniciar escaneamentos",
"libraryCreated": "Biblioteca \"{name}\" criada",
"libraryUpdated": "Biblioteca \"{name}\" atualizada",
@@ -1189,7 +1189,7 @@
"eligible": "~{count} elegíveis"
},
"trigger": {
"queued": "{count} livro na fila | {count} livros na fila",
"queued": "{count, plural, one {# livro na fila} many {# livros na fila} other {# livros na fila}}",
"noneFound": "Nenhum livro elegível encontrado"
},
"lastRun": {
@@ -1220,7 +1220,7 @@
"missingFields": {
"label": "Campos ausentes",
"hint": "Buscar se qualquer um dos campos selecionados estiver vazio.",
"summary": "Ausente em {count} campo | Ausente em {count} campos"
"summary": "{count, plural, one {Ausente em # campo} many {Ausente em # campos} other {Ausente em # campos}}"
}
},
"library": {
@@ -1324,7 +1324,7 @@
},
"library": {
"primary": "Primário:",
"overrideCount": "{count} Substituição | {count} Substituições",
"overrideCount": "{count, plural, one {# Substituição} many {# Substituições} other {# Substituições}}",
"unsavedSuffix": "(não salvo)",
"unsavedChanges": "Alterações não salvas",
"globalDefaults": "Padrões Globais",
@@ -1384,7 +1384,7 @@
"duplicate": "Este gênero já está bloqueado.",
"add": "Adicionar",
"filterPlaceholder": "Filtrar lista de bloqueio",
"entryCount": "{count} entrada | {count} entradas",
"entryCount": "{count, plural, one {# entrada} many {# entradas} other {# entradas}}",
"filteredCount": "{shown} de {total}",
"noFilterMatch": "Nenhum gênero bloqueado corresponde ao filtro atual.",
"emptyTitle": "Nenhum gênero bloqueado",
@@ -1397,7 +1397,7 @@
"labelTooLong": "O rótulo deve ter 255 caracteres ou menos",
"labelDuplicate": "Um campo com este rótulo já existe",
"type": "Tipo",
"usage": "Usado por {count} livro | Usado por {count} livros",
"usage": "{count, plural, one {Usado por # livro} many {Usado por # livros} other {Usado por # livros}}",
"newField": {
"title": "Novo Campo",
"hint": "Defina um campo de metadado personalizado e escolha quais bibliotecas o utilizam."
@@ -1419,7 +1419,7 @@
"unsaved": "Não salvo",
"archive": "Arquivar",
"archivedFields": "Campos Arquivados",
"archivedSummary": "{count} campo arquivado - restaure ou exclua permanentemente. | {count} campos arquivados - restaure ou exclua permanentemente.",
"archivedSummary": "{count, plural, one {# campo arquivado - restaure ou exclua permanentemente.} many {# campos arquivados - restaure ou exclua permanentemente.} other {# campos arquivados - restaure ou exclua permanentemente.}}",
"archivedAt": "Arquivado em {when}",
"restore": "Restaurar",
"deleteForever": "Excluir permanentemente",
@@ -1622,7 +1622,7 @@
"fontsUsed": "{count} / {max} usado",
"noFontsYet": "Nenhuma fonte enviada ainda",
"noFontsHint": "Arraste um arquivo de fonte acima para começar.",
"fileCount": "nenhum arquivo | {count} arquivo | {count} arquivos",
"fileCount": "{count, plural, =0 {nenhum arquivo} one {# arquivo} many {# arquivos} other {# arquivos}}",
"pangram": "A rápida raposa marrom salta sobre o cão preguiçoso",
"renameFamily": "Renomear família",
"deleteFamily": "Excluir família",
@@ -1827,7 +1827,7 @@
"never": "Nunca",
"none": "Nenhuma",
"unknown": "Desconhecido",
"failureCount": "{count} falha | {count} falhas",
"failureCount": "{count, plural, one {# falha} many {# falhas} other {# falhas}}",
"noActivityRecorded": "Nenhuma atividade de sincronização do Kobo foi registrada.",
"lastSuccess": "Último sucesso em {time}",
"lastFailure": "Última falha em {time}",
@@ -1861,7 +1861,7 @@
"chip": {
"morePending": "Mais pendentes",
"noUpdatesPending": "Nenhuma atualização pendente",
"bookCount": "{count} livro | {count} livros",
"bookCount": "{count, plural, one {# livro} many {# livros} other {# livros}}",
"deletedAnnotations": "{count} anotações excluídas",
"deviceAlreadyCurrent": "Dispositivo já atualizado",
"freshHighlightData": "Dados de destaque recentes",
@@ -1873,31 +1873,31 @@
"readingPositionSyncedTitle": "Posição de leitura sincronizada: {title}",
"readingPositionSynced": "Posição de leitura sincronizada",
"labelWithTitle": "{label}: {title}",
"updateCount": "{count} atualização | {count} atualizações",
"updateCount": "{count, plural, one {# atualização} many {# atualizações} other {# atualizações}}",
"directionToKobo": "BookOrbit -> Kobo",
"directionToBookOrbit": "Kobo -> BookOrbit",
"twoWaySyncEnabled": "Sincronização bilateral ativada",
"deviceProgressSaved": "Progresso do dispositivo salvo",
"summary": {
"noLibraryUpdatesPending": "Nenhuma atualização de biblioteca pendente para este dispositivo",
"libraryUpdatesPrepared": "{count} atualização de biblioteca preparada para o dispositivo | {count} atualizações de biblioteca preparadas para o dispositivo",
"libraryUpdatesPrepared": "{count, plural, one {# atualização de biblioteca preparada para o dispositivo} many {# atualizações de biblioteca preparadas para o dispositivo} other {# atualizações de biblioteca preparadas para o dispositivo}}",
"bookDownloadedBy": "{title} foi baixado por {device}",
"booksDownloaded": "{count} livro baixado | {count} livros baixados",
"progressUpdatesSyncedFor": "{count} atualização de progresso sincronizada para {title} | {count} atualizações de progresso sincronizadas para {title}",
"progressUpdatesSynced": "{count} atualização de progresso sincronizada | {count} atualizações de progresso sincronizadas",
"booksDownloaded": "{count, plural, one {# livro baixado} many {# livros baixados} other {# livros baixados}}",
"progressUpdatesSyncedFor": "{count, plural, one {# atualização de progresso sincronizada para {title}} many {# atualizações de progresso sincronizadas para {title}} other {# atualizações de progresso sincronizadas para {title}}}",
"progressUpdatesSynced": "{count, plural, one {# atualização de progresso sincronizada} many {# atualizações de progresso sincronizadas} other {# atualizações de progresso sincronizadas}}",
"newReadingPositionFor": "O Kobo informou uma nova posição de leitura para {title}",
"newReadingPosition": "O Kobo informou uma nova posição de leitura",
"noHighlightChangesNeededFor": "Nenhuma alteração de destaque necessária para {title}",
"noHighlightChangesNeeded": "Nenhuma alteração de destaque necessária",
"highlightsSentToKoboFor": "{count} destaque enviado ao Kobo para {title} | {count} destaques enviados ao Kobo para {title}",
"highlightsSentToKobo": "{count} destaque enviado ao Kobo | {count} destaques enviados ao Kobo",
"highlightsSentToKoboFor": "{count, plural, one {# destaque enviado ao Kobo para {title}} many {# destaques enviados ao Kobo para {title}} other {# destaques enviados ao Kobo para {title}}}",
"highlightsSentToKobo": "{count, plural, one {# destaque enviado ao Kobo} many {# destaques enviados ao Kobo} other {# destaques enviados ao Kobo}}",
"noKoboHighlightChangesFor": "Nenhuma alteração de destaque do Kobo para {title}",
"noKoboHighlightChanges": "Nenhuma alteração de destaque do Kobo",
"highlightsImportedFromKoboFor": "{count} destaque importado do Kobo para {title} | {count} destaques importados do Kobo para {title}",
"highlightsImportedFromKobo": "{count} destaque importado do Kobo | {count} destaques importados do Kobo"
"highlightsImportedFromKoboFor": "{count, plural, one {# destaque importado do Kobo para {title}} many {# destaques importados do Kobo para {title}} other {# destaques importados do Kobo para {title}}}",
"highlightsImportedFromKobo": "{count, plural, one {# destaque importado do Kobo} many {# destaques importados do Kobo} other {# destaques importados do Kobo}}"
},
"timeRange": "{from} até {to}",
"eventsGrouped": "{count} evento agrupado | {count} eventos agrupados",
"eventsGrouped": "{count, plural, one {# evento agrupado} many {# eventos agrupados} other {# eventos agrupados}}",
"removedDevice": "Dispositivo removido",
"loadMoreFailed": "Falha ao carregar mais histórico",
"historyRefreshed": "Histórico de sincronização do Kobo atualizado",
@@ -1996,9 +1996,9 @@
"progressSyncHint": "Permitir que dispositivos KOReader sincronizem progresso, atividade de leitura, destaques e exclusão de anotações com o BookOrbit.",
"lastSync": "Última sincronização",
"syncedBooks": "Livros sincronizados",
"bookCount": "nenhum livro | {count} livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {# livro} many {# livros} other {# livros}}",
"devices": "Dispositivos",
"deviceCount": "nenhum dispositivo | {count} dispositivo | {count} dispositivos",
"deviceCount": "{count, plural, =0 {nenhum dispositivo} one {# dispositivo} many {# dispositivos} other {# dispositivos}}",
"credentialsCreatedLabel": "Credenciais criadas",
"setup": "Configuração",
"pluginServerUrl": "URL do servidor do plugin",
@@ -2024,8 +2024,8 @@
"highlights": "Destaques",
"syncedTotals": "Totais sincronizados",
"trashedHighlights": "Destaques na lixeira",
"pendingDeletes": "nenhum destaque excluído aguardando confirmação do plugin KOReader. | {count} destaque excluído aguardando confirmação do plugin KOReader. | {count} destaques excluídos aguardando confirmação do plugin KOReader.",
"failedPositions": "nenhuma posição de destaque precisa de atenção. | {count} posição de destaque precisa de atenção. | {count} posições de destaque precisam de atenção.",
"pendingDeletes": "{count, plural, =0 {nenhum destaque excluído aguardando confirmação do plugin KOReader.} one {# destaque excluído aguardando confirmação do plugin KOReader.} many {# destaques excluídos aguardando confirmação do plugin KOReader.} other {# destaques excluídos aguardando confirmação do plugin KOReader.}}",
"failedPositions": "{count, plural, =0 {nenhuma posição de destaque precisa de atenção.} one {# posição de destaque precisa de atenção.} many {# posições de destaque precisam de atenção.} other {# posições de destaque precisam de atenção.}}",
"setupGuide": "Guia de Configuração",
"setupSteps": "Passos para configuração do KOReader",
"setupStepsHint": "Use o plugin do BookOrbit para navegação no catálogo, downloads, progresso, eventos de leitura e destaques. Use o plugin nativo apenas para progresso.",
@@ -2096,7 +2096,7 @@
"unlinkFailed": "Falha ao desvincular o livro",
"unmatchedDismissed": "Livro não correspondido dispensado",
"dismissFailed": "Falha ao dispensar o livro não correspondido",
"allDismissed": "Nenhum livro dispensado | Dispensado {count} livro não correspondido | Dispensados {count} livros não correspondidos",
"allDismissed": "{count, plural, =0 {Nenhum livro dispensado} one {Dispensado # livro não correspondido} many {Dispensados # livros não correspondidos} other {Dispensados # livros não correspondidos}}",
"dismissAllFailed": "Falha ao dispensar todos os livros não correspondidos"
},
"modal": {
@@ -2131,7 +2131,7 @@
"unlinkConfirmBody": "Sincronizações futuras para este hash deixarão de apontar para {title} até que seja vinculado novamente. As estatísticas já sincronizadas permanecerão no seu livro atual no BookOrbit.",
"dismissConfirmTitle": "Dispensar {title}?",
"dismissConfirmBody": "Isso o remove da sua lista de livros não correspondidos. Se qualquer dispositivo informar este hash novamente no futuro, ele reaparecerá como uma nova entrada.",
"dismissAllConfirmTitle": "Nenhum livro | Dispensar todos os {count} livros não correspondidos? | Dispensar todos os {count} livros não correspondidos?",
"dismissAllConfirmTitle": "{count, plural, =0 {Nenhum livro} one {Dispensar todos os # livros não correspondidos?} many {Dispensar todos os # livros não correspondidos?} other {Dispensar todos os # livros não correspondidos?}}",
"dismissAllConfirmBody": "Isso limpa toda a sua lista de livros não correspondidos, não apenas a página atual. Se algum dispositivo informar um desses hashes novamente, ele reaparecerá como uma nova entrada.",
"changeLinkTitle": "Alterar vínculo do KOReader",
"linkBookTitle": "Vincular livro do KOReader",
@@ -2321,7 +2321,7 @@
"auditNotice": "O acesso a este perfil é registrado e fica visível para o usuário.",
"period": "Período do relatório",
"periodDays": "Últimos {count} dias",
"durationMinutes": "{count} minuto | {count} minutos",
"durationMinutes": "{count, plural, one {# minuto} many {# minutos} other {# minutos}}",
"durationHours": "{count} horas",
"metrics": {
"sessions": "Sessões",
@@ -2333,7 +2333,6 @@
"trend": "Tendência de leitura diária",
"emptyTitle": "Nenhuma atividade de leitura neste período",
"noData": "Nenhum dado de leitura registrado para este período.",
"sessionCount": "{count} sessão | {count} sessões",
"sourceNames": {
"web": "Leitor web",
"koreader": "KOReader",
@@ -2464,7 +2463,7 @@
"status": "Status"
},
"adminBadge": "Admin",
"permissionCount": "nenhuma permissão | uma permissão | {count} permissões",
"permissionCount": "{count, plural, =0 {nenhuma permissão} one {uma permissão} many {# permissões} other {# permissões}}",
"filteredBadge": "Filtrado",
"contentRestrictionsActive": "Restrições de conteúdo ativas",
"statusActive": "Ativo",
@@ -2599,8 +2598,8 @@
"hub": {
"title": "Anotações",
"totalCount": "{count} no total",
"bookCount": "nenhum livro | {count} livro | {count} livros",
"noteCount": "nenhuma nota | {count} nota | {count} notas",
"bookCount": "{count, plural, =0 {nenhum livro} one {# livro} many {# livros} other {# livros}}",
"noteCount": "{count, plural, =0 {nenhuma nota} one {# nota} many {# notas} other {# notas}}",
"export": "Exportar",
"exportMarkdown": "Markdown",
"exportCsv": "CSV",
@@ -2625,10 +2624,10 @@
"annotationRestored": "Anotação restaurada",
"annotationDeletedForever": "Anotação excluída permanentemente",
"failedToDelete": "Falha ao excluir",
"bulkTrashed": "Nenhuma anotação movida para a lixeira | Movida {count} anotação para a lixeira | Movidas {count} anotações para a lixeira",
"bulkRestored": "Nenhuma anotação restaurada | Restaurada {count} anotação | Restauradas {count} anotações",
"bulkRecolored": "Nenhuma anotação recolorida | Recolorida {count} anotação | Recoloridas {count} anotações",
"bulkRestyled": "Estilo não alterado | Alterado o estilo de {count} anotação | Alterado o estilo de {count} anotações"
"bulkTrashed": "{count, plural, =0 {Nenhuma anotação movida para a lixeira} one {Movida # anotação para a lixeira} many {Movidas # anotações para a lixeira} other {Movidas # anotações para a lixeira}}",
"bulkRestored": "{count, plural, =0 {Nenhuma anotação restaurada} one {Restaurada # anotação} many {Restauradas # anotações} other {Restauradas # anotações}}",
"bulkRecolored": "{count, plural, =0 {Nenhuma anotação recolorida} one {Recolorida # anotação} many {Recoloridas # anotações} other {Recoloridas # anotações}}",
"bulkRestyled": "{count, plural, =0 {Estilo não alterado} one {Alterado o estilo de # anotação} many {Alterado o estilo de # anotações} other {Alterado o estilo de # anotações}}"
}
}
},
@@ -2848,7 +2847,7 @@
"deleteSelected": "Excluir selecionados",
"deleting": "Excluindo...",
"exitSelection": "Sair da seleção",
"confirmDeleteCount": "Excluir {count} autor? | Excluir {count} autor? | Excluir {count} autores?"
"confirmDeleteCount": "{count, plural, =0 {Excluir # autor?} one {Excluir # autor?} many {Excluir # autores?} other {Excluir # autores?}}"
},
"toast": {
"refreshed": "Metadados do autor atualizados",
@@ -2857,7 +2856,7 @@
"bulkRefreshPartial": "Atualizado(s) {updated} autor(es), {failed} falhou(aram)",
"bulkRefreshSuccess": "Metadados atualizados para {updated} autor(es)",
"bulkRefreshFailed": "Falha ao atualizar os autores selecionados",
"deleteSuccess": "Excluído {count} autor; {books} livros afetados | Excluído {count} autor; {books} livros afetados | Excluídos {count} autores; {books} livros afetados",
"deleteSuccess": "{count, plural, =0 {Excluído # autor; {books} livros afetados} one {Excluído # autor; {books} livros afetados} many {Excluídos # autores; {books} livros afetados} other {Excluídos # autores; {books} livros afetados}}",
"deleteFailed": "Falha ao excluir autor(es)"
}
},
@@ -2884,7 +2883,7 @@
"merge": {
"searchPlaceholder": "Busque autores para mesclar a este autor",
"searching": "Buscando...",
"bookCount": "nenhum livro | {count} livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {# livro} many {# livros} other {# livros}}",
"selectedSummary": "Selecionado(s) {count} autor(es), aprox. {books} livros afetados.",
"merging": "Mesclando...",
"mergeSelected": "Mesclar Selecionados",
@@ -2941,7 +2940,7 @@
"unknownFormat": "desconhecido",
"collapsedSeries": {
"label": "Série",
"bookCount": "nenhum livro | {count} livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {# livro} many {# livros} other {# livros}}",
"readCount": "{count} lido(s)"
},
"card": {
@@ -3031,7 +3030,7 @@
"description": "Isso excluirá permanentemente o livro e todos os seus metadados, arquivos, progresso de leitura e marcadores. Isso não pode ser desfeito."
},
"bulkEdit": {
"title": "Editar metadados - {count} livro | Editar metadados - {count} livro | Editar metadados - {count} livros",
"title": "{count, plural, =0 {Editar metadados - # livro} one {Editar metadados - # livro} many {Editar metadados - # livros} other {Editar metadados - # livros}}",
"instructions": "Alterne os campos para editar e, em seguida, configure os valores. Apenas os campos ativados serão alterados.",
"invalidYear": "Digite um ano válido (apenas números)",
"clearWarning": "Isso removerá todo o campo {field} dos livros selecionados.",
@@ -3071,8 +3070,8 @@
"estimatedSize": "Tamanho estimado:",
"fileLabel": "Arquivo: {fileName}",
"exportAction": "Exportar",
"selectedRowsSummary": "{count} linha selecionada | {count} linha selecionada | {count} linhas selecionadas",
"matchingRowsSummary": "{count} linha correspondente | {count} linha correspondente | {count} linhas correspondentes",
"selectedRowsSummary": "{count, plural, =0 {# linha selecionada} one {# linha selecionada} many {# linhas selecionadas} other {# linhas selecionadas}}",
"matchingRowsSummary": "{count, plural, =0 {# linha correspondente} one {# linha correspondente} many {# linhas correspondentes} other {# linhas correspondentes}}",
"prepareFailed": "Falha ao preparar exportação",
"exportStarted": "Exportação de metadados iniciada: {fileName}",
"exportFailed": "Falha na exportação de metadados"
@@ -3139,7 +3138,7 @@
"titleFor": "Visualização rápida de {title}",
"description": "Pré-visualize detalhes do livro e execute ações rápidas.",
"openIn": "Abrir em {provider}",
"pages": "{count} página | {count} página | {count} páginas",
"pages": "{count, plural, =0 {# página} one {# página} many {# páginas} other {# páginas}}",
"primaryFile": "Arquivo Primário",
"fileNumber": "Arquivo #{id}",
"showLess": "Mostrar menos",
@@ -3155,7 +3154,7 @@
"openBookDetails": "Abrir detalhes do livro",
"openSeries": "Abrir série",
"metadataRefreshFailed": "Falha na atualização de metadados",
"booksSelected": "{count} livro selecionado | {count} livro selecionado | {count} livros selecionados",
"booksSelected": "{count, plural, =0 {# livro selecionado} one {# livro selecionado} many {# livros selecionados} other {# livros selecionados}}",
"loadingMoreBooks": "Carregando mais livros",
"sort": "Ordenar",
"refreshingMetadata": "Atualizando metadados {processed} / {total}",
@@ -3170,7 +3169,7 @@
"selectedStatus": "{count} selecionado(s)",
"filtered": "Filtrado",
"loadedStatus": "{loaded} de {total} carregados",
"bookCount": "{count} livro | {count} livro | {count} livros",
"bookCount": "{count, plural, =0 {# livro} one {# livro} many {# livros} other {# livros}}",
"keyboardShortcutsTitle": "Atalhos de teclado (?)",
"showKeyboardShortcuts": "Mostrar atalhos de teclado da tabela",
"copyHint": "Copiar célula: Ctrl/Cmd+C · Copiar linha: Ctrl/Cmd+Shift+C"
@@ -3203,7 +3202,7 @@
"moreInSeries": "Mais na série {series}"
},
"writeRename": {
"written": "nenhum campo gravado | Gravado (um campo) | Gravados ({count} campos)",
"written": "{count, plural, =0 {nenhum campo gravado} one {Gravado (um campo)} many {Gravados (# campos)} other {Gravados (# campos)}}",
"writeFailed": "Falha na gravação",
"skipped": "Ignorado",
"renamedTo": "Renomeado para {name}",
@@ -3224,11 +3223,11 @@
"hint": "epub, pdf, mobi, cbz, m4b e mais - até {size} MB cada"
},
"addMore": "Adicionar mais arquivos",
"fileCount": "nenhum arquivo | um arquivo | {count} arquivos",
"fileCount": "{count, plural, =0 {nenhum arquivo} one {um arquivo} many {# arquivos} other {# arquivos}}",
"clearAll": "Limpar tudo",
"done": "Concluído",
"retry": "Tentar novamente",
"filesAdded": "nenhum arquivo adicionado | um arquivo adicionado | {count} arquivos adicionados",
"filesAdded": "{count, plural, =0 {nenhum arquivo adicionado} one {um arquivo adicionado} many {# arquivos adicionados} other {# arquivos adicionados}}",
"uploadedFailed": "{done} enviados, {failed} falharam",
"uploadingProgress": "{done} de {total} enviando...",
"renameAfter": "Renomear todos os arquivos do livro após o upload",
@@ -3350,7 +3349,7 @@
"filesNotFoundDescription": "O(s) arquivo(s) deste livro não podem mais ser encontrados no disco. Os metadados ainda estão disponíveis. Execute um escaneamento da biblioteca para confirmar, ou remova o registro."
},
"editMetadata": {
"fieldCount": "nenhum campo | um campo | {count} campos",
"fieldCount": "{count, plural, =0 {nenhum campo} one {um campo} many {# campos} other {# campos}}",
"bookFilesTarget": "arquivos do livro",
"formatFilesTarget": "arquivos {formats}",
"noPrimaryFile": "Nenhum arquivo primário disponível",
@@ -3362,8 +3361,8 @@
"writeManualLibraryDisabled": "Gravar metadados no arquivo e renomear no disco; a regravação automática está desativada para esta biblioteca",
"writeManualTooltip": "Gravar {fields} em {target} e renomear no disco",
"applyResult": "{skipped}, {updated}",
"skippedLockedFields": "Nenhum campo bloqueado ignorado | Ignorado um campo bloqueado | Ignorados {count} campos bloqueados",
"updatedFields": "nenhum campo atualizado | um campo atualizado | {count} campos atualizados",
"skippedLockedFields": "{count, plural, =0 {Nenhum campo bloqueado ignorado} one {Ignorado um campo bloqueado} many {Ignorados # campos bloqueados} other {Ignorados # campos bloqueados}}",
"updatedFields": "{count, plural, =0 {nenhum campo atualizado} one {um campo atualizado} many {# campos atualizados} other {# campos atualizados}}",
"wroteFieldsToFile": "Gravados {fields} no arquivo",
"fileWriteFailedReason": "Falha na gravação do arquivo: {reason}",
"fileWriteFailed": "Falha na gravação do arquivo",
@@ -3376,7 +3375,7 @@
"savedWriteSkippedReason": "Metadados salvos, gravação do arquivo ignorada: {reason}",
"savedWriteSkipped": "Metadados salvos, gravação do arquivo ignorada",
"loadFromFileFailed": "Falha ao carregar metadados do arquivo",
"loadedFieldsFromFile": "Nenhum campo carregado do arquivo | Um campo carregado do arquivo | {count} campos carregados do arquivo",
"loadedFieldsFromFile": "{count, plural, =0 {Nenhum campo carregado do arquivo} one {Um campo carregado do arquivo} many {# campos carregados do arquivo} other {# campos carregados do arquivo}}",
"noMetadataInFile": "Nenhum metadado encontrado no arquivo",
"loadFromFile": "Carregar do arquivo",
"loadFromFileTooltip": "Carregar metadados do arquivo primário do livro",
@@ -3437,7 +3436,7 @@
"diffPanel": {
"untitled": "Sem título",
"noFieldsSelected": "Nenhum campo selecionado",
"fieldsSelected": "nenhum campo selecionado | um campo selecionado | {count} campos selecionados",
"fieldsSelected": "{count, plural, =0 {nenhum campo selecionado} one {um campo selecionado} many {# campos selecionados} other {# campos selecionados}}",
"results": "Resultados",
"providerMatches": "Correspondências no {provider}",
"selectedOf": "Selecionados {selected} de {total}",
@@ -3498,7 +3497,7 @@
},
"files": {
"title": "Arquivos do livro",
"fileCount": "nenhum arquivo | {count} arquivo | {count} arquivos",
"fileCount": "{count, plural, =0 {nenhum arquivo} one {# arquivo} many {# arquivos} other {# arquivos}}",
"synced": "Sincronizado {time}",
"sortAria": "Ordenar arquivos",
"syncHistory": "Histórico de sincronização",
@@ -3525,7 +3524,7 @@
"hideLog": "Esconder log",
"viewSyncLog": "Ver log de sincronização",
"noWriteHistory": "Nenhum histórico de gravação ainda.",
"fieldsWritten": "nenhum campo | um campo | {count} campos",
"fieldsWritten": "{count, plural, =0 {nenhum campo} one {um campo} many {# campos} other {# campos}}",
"track": "Faixa {number}",
"primary": "Primário",
"read": "Ler",
@@ -3567,9 +3566,9 @@
"oldest": "Mais antigos primeiro"
},
"summary": {
"highlights": "nenhum destaque | um destaque | {count} destaques",
"notes": "nenhuma nota | uma nota | {count} notas",
"chapters": "nenhum capítulo | um capítulo | {count} capítulos"
"highlights": "{count, plural, =0 {nenhum destaque} one {um destaque} many {# destaques} other {# destaques}}",
"notes": "{count, plural, =0 {nenhuma nota} one {uma nota} many {# notas} other {# notas}}",
"chapters": "{count, plural, =0 {nenhum capítulo} one {um capítulo} many {# capítulos} other {# capítulos}}"
},
"filterByChapter": "Filtrar por capítulo",
"allChapters": "Todos os capítulos",
@@ -3613,7 +3612,6 @@
"dec": "Dez"
},
"heatmap": {
"subtitle": "{count} dia ativo · {ratio}% consistência | {count} dia ativo · {ratio}% consistência | {count} dias ativos · {ratio}% consistência",
"minutesUnit": "min",
"title": "Atividade",
"empty": "Nenhuma atividade de leitura nesta janela.",
@@ -3627,8 +3625,8 @@
"minutes": "há {count}m",
"hours": "há {count}h",
"days": "há {count}d",
"months": "há {count} mês | há {count} mês | há {count} meses",
"years": "há {count} ano | há {count} ano | há {count} anos"
"months": "{count, plural, =0 {há # mês} one {há # mês} many {há # meses} other {há # meses}}",
"years": "{count, plural, =0 {há # ano} one {há # ano} many {há # anos} other {há # anos}}"
},
"noSessions": "Sem sessões",
"dateErrors": {
@@ -3819,7 +3817,7 @@
"unread": "Não Lido"
},
"series": {
"bookCount": "(nenhum livro) | ({count} livro) | ({count} livros)",
"bookCount": "{count, plural, =0 {(nenhum livro)} one {(# livro)} many {(# livros)} other {(# livros)}}",
"readOfCount": "{read} de {total} lidos"
},
"text": {
@@ -3852,7 +3850,7 @@
"confirm": "Confirmar cancelamento",
"keepRunning": "Continuar executando"
},
"viewFailed": "Ver um falhado | Ver {count} falhados",
"viewFailed": "{count, plural, one {Ver um falhado} many {Ver # falhados} other {Ver # falhados}}",
"card": {
"fetchingMetadata": "Buscando metadados",
"enrichingAuthors": "Enriquecendo autores",
@@ -3909,12 +3907,9 @@
"commaSeparated": "separado por vírgulas",
"destinationLibrary": "Biblioteca de Destino",
"destinationFolder": "Pasta de Destino",
"nSelected": "nenhum arquivo selecionado | {count} selecionado | {count} selecionados",
"nFailed": "{count} falharam",
"updatedOfFiles": "Atualizados {updated} de {total} arquivos",
"errorStatus": "Erro {status}",
"applyFetchedTooltip": "Aplicar metadados buscados automaticamente a {count} arquivos | Aplicar metadados buscados automaticamente a {count} arquivo | Aplicar metadados buscados automaticamente a {count} arquivos",
"retryErrorsTooltip": "Tentar buscar metadados novamente para {count} arquivos com erro | Tentar buscar metadados novamente para {count} arquivo com erro | Tentar buscar metadados novamente para {count} arquivos com erro",
"tab": {
"all": "Todos",
"pending": "Pendentes",
@@ -3982,21 +3977,21 @@
"results": "Resultados"
},
"bulkEdit": {
"title": "Edição em Massa de nenhum arquivo | Edição em Massa de {count} arquivo | Edição em Massa de {count} arquivos",
"title": "{count, plural, =0 {Edição em Massa de nenhum arquivo} one {Edição em Massa de # arquivo} many {Edição em Massa de # arquivos} other {Edição em Massa de # arquivos}}",
"resultTitle": "Resultados da Edição em Massa",
"instructions": "Alterne os campos que você deseja atualizar. Apenas os campos ativados serão aplicados.",
"mergeArrays": "Mesclar listas (adicionar aos valores existentes em vez de substituir)",
"failed": "Falha na edição em massa"
},
"setDestination": {
"title": "Definir Destino para nenhum arquivo | Definir Destino para {count} arquivo | Definir Destino para {count} arquivos",
"title": "{count, plural, =0 {Definir Destino para nenhum arquivo} one {Definir Destino para # arquivo} many {Definir Destino para # arquivos} other {Definir Destino para # arquivos}}",
"resultTitle": "Destino Atualizado",
"failed": "Falha ao definir destino"
},
"finalizeDialog": {
"title": "Finalizar nenhum arquivo | Finalizar {count} arquivo | Finalizar {count} arquivos",
"title": "{count, plural, =0 {Finalizar nenhum arquivo} one {Finalizar # arquivo} many {Finalizar # arquivos} other {Finalizar # arquivos}}",
"resultTitle": "Resultados da Finalização",
"needDestination": "{without} de {count} arquivos selecionados precisam de um destino | {without} de {count} arquivo selecionado precisa de um destino | {without} de {count} arquivos selecionados precisam de um destino",
"needDestination": "{count, plural, =0 {{without} de # arquivos selecionados precisam de um destino} one {{without} de # arquivo selecionado precisa de um destino} many {{without} de # arquivos selecionados precisam de um destino} other {{without} de # arquivos selecionados precisam de um destino}}",
"allHaveDestination": "Todos os arquivos selecionados já possuem destino definido",
"defaultDestinationLibrary": "Biblioteca de Destino Padrão",
"defaultDestinationFolder": "Pasta de Destino Padrão",
@@ -4005,15 +4000,15 @@
"start": "Iniciar",
"filesFinalized": "{succeeded} de {total} arquivos finalizados",
"checking": "Verificando arquivos selecionados...",
"readyCount": "nenhum arquivo pronto | {count} arquivo pronto | {count} arquivos prontos",
"duplicateCount": "nenhum já existe na biblioteca | {count} já existe na biblioteca | {count} já existem na biblioteca",
"conflictCount": "nenhum conflito de nome de arquivo | {count} conflito de nome de arquivo | {count} conflitos de nome de arquivo",
"missingDestinationCount": "nenhum destino ausente | {count} destino ausente | {count} destinos ausentes",
"blockedCount": "nenhum arquivo bloqueado | {count} arquivo bloqueado | {count} arquivos bloqueados",
"readyCount": "{count, plural, =0 {nenhum arquivo pronto} one {# arquivo pronto} many {# arquivos prontos} other {# arquivos prontos}}",
"duplicateCount": "{count, plural, =0 {nenhum já existe na biblioteca} one {# já existe na biblioteca} many {# já existem na biblioteca} other {# já existem na biblioteca}}",
"conflictCount": "{count, plural, =0 {nenhum conflito de nome de arquivo} one {# conflito de nome de arquivo} many {# conflitos de nome de arquivo} other {# conflitos de nome de arquivo}}",
"missingDestinationCount": "{count, plural, =0 {nenhum destino ausente} one {# destino ausente} many {# destinos ausentes} other {# destinos ausentes}}",
"blockedCount": "{count, plural, =0 {nenhum arquivo bloqueado} one {# arquivo bloqueado} many {# arquivos bloqueados} other {# arquivos bloqueados}}",
"moreDuplicates": "+{count} mais já existentes na biblioteca",
"discardDuplicates": "Descartar duplicatas",
"failedCount": "nenhum arquivo falhou | {count} arquivo falhou | {count} arquivos falharam",
"failedWithDuplicates": "{failed} falhou ({count} duplicatas) | {failed} falhou ({count} duplicata) | {failed} falharam ({count} duplicatas)",
"failedCount": "{count, plural, =0 {nenhum arquivo falhou} one {# arquivo falhou} many {# arquivos falharam} other {# arquivos falharam}}",
"failedWithDuplicates": "{count, plural, =0 {{failed} falhou (# duplicatas)} one {{failed} falhou (# duplicata)} many {{failed} falharam (# duplicatas)} other {{failed} falharam (# duplicatas)}}",
"view": "Ver",
"viewExisting": "Ver existente",
"hide": "Esconder",
@@ -4051,7 +4046,7 @@
},
"addToSheet": {
"title": "Gerenciar Coleções",
"selectedCount": "nenhum livro selecionado | um livro selecionado | {count} livros selecionados",
"selectedCount": "{count, plural, =0 {nenhum livro selecionado} one {um livro selecionado} many {# livros selecionados} other {# livros selecionados}}",
"newCollection": "Nova Coleção",
"namePlaceholder": "Nome da coleção",
"create": "Criar",
@@ -4063,15 +4058,15 @@
"inCollection": "Nesta coleção",
"allInCollection": "Todos os {total} nesta coleção",
"partialInCollection": "{partial} de {total} nesta coleção",
"bookCount": "nenhum livro | um livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {um livro} many {# livros} other {# livros}}",
"loadFailed": "Falha ao carregar coleções",
"createdAndAdded": "Criada \"{name}\" e adicionado nenhum livro | Criada \"{name}\" e adicionado um livro | Criada \"{name}\" e adicionados {count} livros",
"createdAndAdded": "{count, plural, =0 {Criada \"{name}\" e adicionado nenhum livro} one {Criada \"{name}\" e adicionado um livro} many {Criada \"{name}\" e adicionados # livros} other {Criada \"{name}\" e adicionados # livros}}",
"createdButAddFailed": "Criada \"{name}\", mas falhou ao adicionar livros",
"createFailed": "Falha ao criar coleção",
"addedNewWithExisting": "Adicionado um livro novo a \"{name}\" ({alreadyHad} já estavam lá) | Adicionado um livro novo a \"{name}\" ({alreadyHad} já estavam lá) | Adicionados {count} novos livros a \"{name}\" ({alreadyHad} já estavam lá)",
"addedToCollection": "Nenhum livro adicionado a \"{name}\" | Um livro adicionado a \"{name}\" | {count} livros adicionados a \"{name}\"",
"addedNewWithExisting": "{count, plural, =0 {Adicionado um livro novo a \"{name}\" ({alreadyHad} já estavam lá)} one {Adicionado um livro novo a \"{name}\" ({alreadyHad} já estavam lá)} many {Adicionados # novos livros a \"{name}\" ({alreadyHad} já estavam lá)} other {Adicionados # novos livros a \"{name}\" ({alreadyHad} já estavam lá)}}",
"addedToCollection": "{count, plural, =0 {Nenhum livro adicionado a \"{name}\"} one {Um livro adicionado a \"{name}\"} many {# livros adicionados a \"{name}\"} other {# livros adicionados a \"{name}\"}}",
"addFailed": "Falha ao adicionar à coleção",
"removedFromCollection": "Nenhum livro removido de \"{name}\" | Um livro removido de \"{name}\" | {count} livros removidos de \"{name}\"",
"removedFromCollection": "{count, plural, =0 {Nenhum livro removido de \"{name}\"} one {Um livro removido de \"{name}\"} many {# livros removidos de \"{name}\"} other {# livros removidos de \"{name}\"}}",
"removeFailed": "Falha ao remover da coleção"
}
},
@@ -4082,9 +4077,9 @@
"noResults": "Nenhum resultado",
"loadingMore": "Carregando mais...",
"loadMore": "Carregar mais ({loaded}/{total})",
"allMatchesShown": "Nenhum resultado exibido | {count} resultado exibido | {count} resultados exibidos",
"bookCount": "nenhum livro | {count} livro | {count} livros",
"fileCount": "nenhum arquivo | {count} arquivo | {count} arquivos",
"allMatchesShown": "{count, plural, =0 {Nenhum resultado exibido} one {# resultado exibido} many {# resultados exibidos} other {# resultados exibidos}}",
"bookCount": "{count, plural, =0 {nenhum livro} one {# livro} many {# livros} other {# livros}}",
"fileCount": "{count, plural, =0 {nenhum arquivo} one {# arquivo} many {# arquivos} other {# arquivos}}",
"uploadedToast": "Enviado(s) {uploaded}",
"uploadFailedToast": "Upload falhou para {failed}",
"uploadPartialToast": "Enviado(s) {uploaded}, {failed} falharam",
@@ -4170,7 +4165,7 @@
"apply": "Aplicar",
"fieldPlaceholder": "Deixe em branco para limpar",
"fieldPlaceholderArray": "Separado por vírgulas (deixe em branco para limpar)",
"deleteConfirm": "Excluir {count} livro? | Excluir {count} livro? | Excluir {count} livros?",
"deleteConfirm": "{count, plural, =0 {Excluir # livro?} one {Excluir # livro?} many {Excluir # livros?} other {Excluir # livros?}}",
"typeDelete": "Digite DELETE"
},
"viewHeader": {
@@ -4260,9 +4255,9 @@
"uploadCount": "Enviar {count}",
"onlySvgSupported": "Apenas arquivos SVG são suportados",
"maxStaged": "Você pode preparar no máximo {max} ícones por vez",
"onlyMoreCanStage": "Nenhum outro ícone pode ser preparado | Apenas mais {count} ícone pode ser preparado | Apenas mais {count} ícones podem ser preparados",
"onlyMoreCanStage": "{count, plural, =0 {Nenhum outro ícone pode ser preparado} one {Apenas mais # ícone pode ser preparado} many {Apenas mais # ícones podem ser preparados} other {Apenas mais # ícones podem ser preparados}}",
"readFailed": "Falha ao ler arquivos SVG",
"uploadedCount": "Nenhum ícone enviado | {count} ícone enviado | {count} ícones enviados",
"uploadedCount": "{count, plural, =0 {Nenhum ícone enviado} one {# ícone enviado} many {# ícones enviados} other {# ícones enviados}}",
"uploadedPartial": "Enviado(s) {created}, {failed} falharam",
"noIconsUploaded": "Nenhum ícone enviado",
"uploadFailed": "Falha ao enviar os ícones",
@@ -4317,7 +4312,7 @@
"diversityScore": {
"title": "Score de Diversidade",
"notEnoughData": "Leia pelo menos 3 livros para ver seu score de diversidade",
"booksAnalyzed": "nenhum livro analisado | {count} livro analisado | {count} livros analisados",
"booksAnalyzed": "{count, plural, =0 {nenhum livro analisado} one {# livro analisado} many {# livros analisados} other {# livros analisados}}",
"subScores": {
"genre": "Gênero",
"author": "Autor",
@@ -4344,7 +4339,7 @@
"title": "O Longo Esperar",
"empty": "Nenhum livro na fila de espera. Você começou tudo!",
"daysWaiting": "dias em espera",
"pages": "nenhuma página | {count} página | {count} páginas",
"pages": "{count, plural, =0 {nenhuma página} one {# página} many {# páginas} other {# páginas}}",
"startReading": "Começar a Ler"
},
"monthlyChallenge": {
@@ -4363,7 +4358,7 @@
"readingDna": {
"title": "DNA de Leitura",
"notEnoughData": "Leia pelo menos 5 livros para desbloquear seu DNA de Leitura",
"basedOn": "Baseado em nenhum livro | Baseado em {count} livro | Baseado em {count} livros",
"basedOn": "{count, plural, =0 {Baseado em nenhum livro} one {Baseado em # livro} many {Baseado em # livros} other {Baseado em # livros}}",
"traits": {
"length": "Extensão",
"variety": "Variedade",
@@ -4384,15 +4379,15 @@
"readingRhythm": {
"title": "Ritmo de Leitura",
"empty": "Comece a ler para ver seu ritmo tomar forma",
"activeDays": "nenhum dia ativo | {count} dia ativo | {count} dias ativos",
"activeDays": "{count, plural, =0 {nenhum dia ativo} one {# dia ativo} many {# dias ativos} other {# dias ativos}}",
"consistency": "{activeDays} · {percent}% de consistência",
"avgPerDay": "média de {time}/dia"
},
"readingStreak": {
"title": "Sequência de Leitura",
"empty": "Leia hoje para iniciar sua sequência",
"streakLabel": "dia de sequência | dia de sequência | dias de sequência",
"best": "Melhor: {count} dia | Melhor: {count} dia | Melhor: {count} dias",
"streakLabel": "{count, plural, =0 {dia de sequência} one {dia de sequência} many {dias de sequência} other {dias de sequência}}",
"best": "{count, plural, =0 {Melhor: # dia} one {Melhor: # dia} many {Melhor: # dias} other {Melhor: # dias}}",
"lastSevenDays": "Últimos 7 dias"
},
"yearProjection": {
@@ -4510,7 +4505,7 @@
"namePlaceholder": "ex: Clube do Livro",
"creating": "Criando...",
"empty": "Nenhum grupo ainda. Crie um grupo para enviar a vários destinatários de uma vez.",
"memberCount": "nenhum membro | um membro | {count} membros",
"memberCount": "{count, plural, =0 {nenhum membro} one {um membro} many {# membros} other {# membros}}",
"deleteTooltip": "Excluir grupo",
"noMembers": "Nenhum membro ainda.",
"removeMember": "Remover",
@@ -4579,7 +4574,7 @@
},
"send": {
"title": "Enviar por E-mail",
"bookCount": "nenhum livro | um livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {um livro} many {# livros} other {# livros}}",
"recipients": "Destinatários",
"noRecipients": "Nenhum destinatário configurado. Adicione um nas configurações de E-mail.",
"groups": "Grupos",
@@ -4593,7 +4588,7 @@
"default": "Padrão",
"send": "Enviar",
"sending": "Enviando...",
"queued": "nenhum e-mail na fila | um e-mail na fila | {count} e-mails na fila",
"queued": "{count, plural, =0 {nenhum e-mail na fila} one {um e-mail na fila} many {# e-mails na fila} other {# e-mails na fila}}",
"failed": "Falha ao enviar"
}
},
@@ -4689,8 +4684,8 @@
"lastSynced": {
"justNow": "Agora mesmo",
"minutesAgo": "há {count} min",
"hoursAgo": "há {count} hora | há {count} hora | há {count} horas",
"daysAgo": "há {count} dia | há {count} dia | há {count} dias"
"hoursAgo": "{count, plural, =0 {há # hora} one {há # hora} many {há # horas} other {há # horas}}",
"daysAgo": "{count, plural, =0 {há # dia} one {há # dia} many {há # dias} other {há # dias}}"
}
},
"import": {
@@ -4701,9 +4696,9 @@
"importProgress": "Importar progresso",
"reviewMatches": "Revisar correspondências",
"importReady": "Pronto para importar",
"exactMatches": "nenhuma correspondência exata pode ser importada sem revisão | {count} correspondência exata pode ser importada sem revisão | {count} correspondências exatas podem ser importadas sem revisão",
"progressAvailable": "nenhuma atualização de progresso disponível | {count} atualização de progresso disponível | {count} atualizações de progresso disponíveis",
"progressConflicts": "nenhum conflito | {count} conflito | {count} conflitos",
"exactMatches": "{count, plural, =0 {nenhuma correspondência exata pode ser importada sem revisão} one {# correspondência exata pode ser importada sem revisão} many {# correspondências exatas podem ser importadas sem revisão} other {# correspondências exatas podem ser importadas sem revisão}}",
"progressAvailable": "{count, plural, =0 {nenhuma atualização de progresso disponível} one {# atualização de progresso disponível} many {# atualizações de progresso disponíveis} other {# atualizações de progresso disponíveis}}",
"progressConflicts": "{count, plural, =0 {nenhum conflito} one {# conflito} many {# conflitos} other {# conflitos}}",
"unavailable": {
"permissionDenied": "Você não tem permissão para usar a sincronização do Hardcover.",
"missingToken": "Conecte-se ao Hardcover antes de importar.",
@@ -4722,8 +4717,8 @@
},
"toast": {
"importFailed": "Falha ao importar status de leitura do Hardcover",
"imported": "nenhum status de leitura importado{progress} | {count} status de leitura importado{progress} | {count} status de leitura importados{progress}",
"progressUpdates": "nenhuma atualização de progresso | {count} atualização de progresso | {count} atualizações de progresso"
"imported": "{count, plural, =0 {nenhum status de leitura importado{progress}} one {# status de leitura importado{progress}} many {# status de leitura importados{progress}} other {# status de leitura importados{progress}}}",
"progressUpdates": "{count, plural, =0 {nenhuma atualização de progresso} one {# atualização de progresso} many {# atualizações de progresso} other {# atualizações de progresso}}"
}
},
"review": {
@@ -4737,7 +4732,7 @@
"noRows": "Nenhuma linha corresponde aos filtros atuais.",
"selectRowAriaLabel": "Selecionar {title}",
"selectionSummary": "{count} selecionados: {ready} prontos, {reviewed} revisados.",
"selectedProgress": "nenhuma atualização de progresso | {count} atualização de progresso | {count} atualizações de progresso",
"selectedProgress": "{count, plural, =0 {nenhuma atualização de progresso} one {# atualização de progresso} many {# atualizações de progresso} other {# atualizações de progresso}}",
"selectReady": "Selecionar prontos",
"selectPage": "Selecionar página",
"clearPage": "Limpar página",
@@ -4842,10 +4837,8 @@
"pathNotAccessible": "O caminho não está acessível no servidor.",
"pathAccessible": "O caminho está acessível.",
"pathNotAccessibleShort": "Caminho não acessível",
"bookFilesFound": "nenhum arquivo de livro encontrado | {count} arquivo de livro encontrado | {count} arquivos de livro encontrados",
"overlapsWith": "Sobrepõe-se a \"{library}\"",
"noneAdded": "Nenhuma pasta adicionada ainda",
"totalFilesFound": "nenhum arquivo de livro encontrado | {count} arquivo de livro encontrado - o número real de livros pode ser menor se houver vários formatos do mesmo livro | {count} arquivos de livro encontrados - o número real de livros pode ser menor se houver vários formatos do mesmo livro",
"runPrescanHint": "Execute uma verificação prévia (prescan) para validar os caminhos antes de salvar.",
"scanning": "Escaneando…",
"prescan": "Verificação prévia"
@@ -5010,7 +5003,7 @@
"empty": "Esta pasta está vazia",
"emptyHint": "Você pode selecionar a pasta atual ou criar uma nova.",
"openFolderAria": "Abrir {name}",
"selectedCount": "nenhuma pasta selecionada | {count} pasta selecionada | {count} pastas selecionadas",
"selectedCount": "{count, plural, =0 {nenhuma pasta selecionada} one {# pasta selecionada} many {# pastas selecionadas} other {# pastas selecionadas}}",
"noFolders": "Nenhuma pasta encontrada",
"selectFolder": "Selecionar esta pasta",
"errors": {
@@ -5031,8 +5024,8 @@
"upload": "Fazer Upload",
"uploadWithCount": "Fazer Upload ({count})",
"viewInLibrary": "Ver na Biblioteca",
"fileCount": "nenhum arquivo | {count} arquivo | {count} arquivos",
"booksAdded": "nenhum livro adicionado | {count} livro adicionado | {count} livros adicionados",
"fileCount": "{count, plural, =0 {nenhum arquivo} one {# arquivo} many {# arquivos} other {# arquivos}}",
"booksAdded": "{count, plural, =0 {nenhum livro adicionado} one {# livro adicionado} many {# livros adicionados} other {# livros adicionados}}",
"uploadedFailed": "{done} enviados, {failed} falharam",
"progress": "{done} de {total} enviando...",
"header": {
@@ -5048,7 +5041,7 @@
}
},
"metadataScore": {
"missingFields": "nenhum campo faltando - editar metadados | {count} campo faltando - editar metadados | {count} campos faltando - editar metadados"
"missingFields": "{count, plural, =0 {nenhum campo faltando - editar metadados} one {# campo faltando - editar metadados} many {# campos faltando - editar metadados} other {# campos faltando - editar metadados}}"
},
"migration": {
"sidebarTitle": "Importação do Booklore",
@@ -5178,7 +5171,7 @@
"ofCount": "de {total}",
"targetBookId": "Livro de destino #{id}",
"recommended": "Recomendado",
"resolveButton": "Resolver {count} duplicata | Resolver {count} duplicata | Resolver {count} duplicatas",
"resolveButton": "{count, plural, =0 {Resolver # duplicata} one {Resolver # duplicata} many {Resolver # duplicatas} other {Resolver # duplicatas}}",
"sourceRecordId": "ID de registro de origem #{id}",
"byAuthor": "por {author} (ID: {id})",
"byFilePath": "{filePath} (ID: {id})",
@@ -5452,7 +5445,7 @@
"tooShort": "Digite no mínimo {min} caracteres",
"noResults": "Nenhum resultado encontrado",
"prompt": "Digite para pesquisar",
"resultCount": "nenhum resultado | {count} resultado | {count} resultados"
"resultCount": "{count, plural, =0 {nenhum resultado} one {# resultado} many {# resultados} other {# resultados}}"
},
"sidebar": {
"tabs": {
@@ -5618,7 +5611,7 @@
},
"scanner": {
"filesProgress": "{processed}/{total} arquivos",
"booksFound": "nenhum livro encontrado | {count} livro encontrado | {count} livros encontrados"
"booksFound": "{count, plural, =0 {nenhum livro encontrado} one {# livro encontrado} many {# livros encontrados} other {# livros encontrados}}"
},
"series": {
"completion": {
@@ -5662,7 +5655,7 @@
"pageTitleNamed": "Série · {name}",
"pageTitleWithId": "Série #{id}",
"entityName": "Série",
"bookCount": "nenhum livro | {count} livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {# livro} many {# livros} other {# livros}}",
"byAuthors": "por {authors}",
"moreAuthors": "+{count} mais",
"preparingEditor": "Preparando editor...",
@@ -5726,7 +5719,7 @@
"untitled": "SmartScope Sem Título",
"subtitle": "Configure as definições do SmartScope",
"counting": "contando...",
"bookCount": "nenhum livro | um livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {um livro} many {# livros} other {# livros}}",
"identity": "Identidade",
"filters": "Filtros",
"noFilters": "Nenhum filtro definido. Todos os livros acessíveis serão incluídos neste SmartScope.",
@@ -5778,7 +5771,7 @@
"loadError": "Falha ao carregar os dados",
"emptyTitle": "Ainda não há dados",
"emptyDescription": "Nenhum dado disponível para este gráfico",
"unknownField": "nenhum dado para este campo | {count} livro sem dados para este campo | {count} livros sem dados para este campo"
"unknownField": "{count, plural, =0 {nenhum dado para este campo} one {# livro sem dados para este campo} many {# livros sem dados para este campo} other {# livros sem dados para este campo}}"
},
"breakdown": {
"ariaLabel": "Detalhamento por fonte ou formato"
@@ -5974,8 +5967,8 @@
"label": "Resumo",
"toRename": "{count} para renomear",
"unchanged": "{count} inalterado",
"collisions": "{count} colisão | {count} colisão | {count} colisões",
"errors": "{count} erro | {count} erro | {count} erros"
"collisions": "{count, plural, =0 {# colisão} one {# colisão} many {# colisões} other {# colisões}}",
"errors": "{count, plural, =0 {# erro} one {# erro} many {# erros} other {# erros}}"
},
"empty": {
"title": "Escolha uma Biblioteca para Iniciar",
@@ -5991,8 +5984,8 @@
},
"confirmDialog": {
"title": "Confirmar Renomeação em Massa",
"body": "Isto renomeará {count} livro no disco. Arquivos com colisões ou erros serão ignorados. Esta ação não pode ser desfeita. | Isto renomeará {count} livro no disco. Arquivos com colisões ou erros serão ignorados. Esta ação não pode ser desfeita. | Isto renomeará {count} livros no disco. Arquivos com colisões ou erros serão ignorados. Esta ação não pode ser desfeita.",
"renameButton": "Renomear {count} livro | Renomear {count} livro | Renomear {count} livros"
"body": "{count, plural, =0 {Isto renomeará # livro no disco. Arquivos com colisões ou erros serão ignorados. Esta ação não pode ser desfeita.} one {Isto renomeará # livro no disco. Arquivos com colisões ou erros serão ignorados. Esta ação não pode ser desfeita.} many {Isto renomeará # livros no disco. Arquivos com colisões ou erros serão ignorados. Esta ação não pode ser desfeita.} other {Isto renomeará # livros no disco. Arquivos com colisões ou erros serão ignorados. Esta ação não pode ser desfeita.}}",
"renameButton": "{count, plural, =0 {Renomear # livro} one {Renomear # livro} many {Renomear # livros} other {Renomear # livros}}"
}
},
"bookDuplicates": {
@@ -6010,7 +6003,7 @@
"queued": "Escaneamento na fila",
"running": "Analisando livros"
},
"groupsFound": "Sem grupos duplicados | Um grupo duplicado | {count} grupos duplicados",
"groupsFound": "{count, plural, =0 {Sem grupos duplicados} one {Um grupo duplicado} many {# grupos duplicados} other {# grupos duplicados}}",
"filter": "Tipo de correspondência",
"allReasons": "Todos os tipos de correspondência",
"reasons": {
@@ -6059,10 +6052,10 @@
},
"deleteDialog": {
"title": "Excluir livros duplicados permanentemente?",
"description": "This will permanently delete {count} selected book and its files. | This will permanently delete {count} selected book and its files. | This will permanently delete {count} selected books and their files.",
"description": "{count, plural, =0 {This will permanently delete # selected book and its files.} one {This will permanently delete # selected book and its files.} many {This will permanently delete # selected books and their files.} other {This will permanently delete # selected books and their files.}}",
"warning": "Metadados, coleções, leitura de dados e estado do dispositivo não são transferidos para o livro mantido. Dados associados para outros usuários também são removidos.",
"confirm": "Excluir {count} livro? | Excluir {count} livro? | Excluir {count} livros",
"success": "No books deleted | One duplicate book deleted | {count} duplicate books deleted"
"confirm": "{count, plural, =0 {Excluir # livro?} one {Excluir # livro?} many {Excluir # livros} other {Excluir # livros}}",
"success": "{count, plural, =0 {No books deleted} one {One duplicate book deleted} many {# duplicate books deleted} other {# duplicate books deleted}}"
},
"errors": {
"start": "Não foi possível iniciar o escaneamento duplicado.",
@@ -6078,7 +6071,7 @@
},
"entityManager": {
"unknown": "Desconhecido",
"bookCount": "nenhum livro | {count} livro | {count} livros",
"bookCount": "{count, plural, =0 {nenhum livro} one {# livro} many {# livros} other {# livros}}",
"sortPrefix": "· ordenação: {sortName}",
"selectTargetToKeep": "Selecione o destino que deseja manter",
"writeToFiles": "Gravar nos arquivos",
@@ -6105,8 +6098,8 @@
"emptyDescription": "Ajuste o limite de similaridade e clique em Analisar para detectar possíveis duplicatas.",
"noneFoundTitle": "Nenhuma duplicata encontrada",
"noneFoundDescription": "Não foram detectadas possíveis duplicatas com as configurações atuais.",
"clustersFound": "nenhum cluster encontrado | {count} cluster encontrado | {count} clusters encontrados",
"plusOthers": "+ {count} outro | + {count} outro | + {count} outros",
"clustersFound": "{count, plural, =0 {nenhum cluster encontrado} one {# cluster encontrado} many {# clusters encontrados} other {# clusters encontrados}}",
"plusOthers": "{count, plural, =0 {+ # outro} one {+ # outro} many {+ # outros} other {+ # outros}}",
"percentSimilar": "{percent}% semelhante",
"pairDetails": "Detalhes do par",
"dismissEntityTitle": "Ignorar todos os pares desta entidade",
@@ -6163,7 +6156,7 @@
},
"bulkDeleteModal": {
"title": "Exclusão em Massa",
"confirm": "Tem certeza que quer excluir {count} entidade selecionada? | Tem certeza que quer excluir {count} entidade selecionada? | Tem certeza que quer excluir {count} entidades selecionadas?",
"confirm": "{count, plural, =0 {Tem certeza que quer excluir # entidade selecionada?} one {Tem certeza que quer excluir # entidade selecionada?} many {Tem certeza que quer excluir # entidades selecionadas?} other {Tem certeza que quer excluir # entidades selecionadas?}}",
"deleteButton": "Excluir {count}"
},
"mergeModal": {
@@ -6241,12 +6234,12 @@
},
"retry": {
"noneToRetry": "Nenhum erro de arquivo para tentar novamente",
"retrying": "Tentando um arquivo novamente | Tentando um arquivo novamente | Tentando {count} arquivos novamente"
"retrying": "{count, plural, =0 {Tentando um arquivo novamente} one {Tentando um arquivo novamente} many {Tentando # arquivos novamente} other {Tentando # arquivos novamente}}"
},
"applyFetched": {
"applied": "Aplicado a nenhum arquivo | Aplicado a um arquivo | Aplicado a {count} arquivos",
"skippedEdited": "ignorado um arquivo por ter edições manuais | ignorado um arquivo por ter edições manuais | ignorados {count} arquivos por terem edições manuais",
"skippedNoMetadata": "ignorado um arquivo por não ter metadados buscados | ignorado um arquivo por não ter metadados buscados | ignorados {count} arquivos por não terem metadados buscados",
"applied": "{count, plural, =0 {Aplicado a nenhum arquivo} one {Aplicado a um arquivo} many {Aplicado a # arquivos} other {Aplicado a # arquivos}}",
"skippedEdited": "{count, plural, =0 {ignorado um arquivo por ter edições manuais} one {ignorado um arquivo por ter edições manuais} many {ignorados # arquivos por terem edições manuais} other {ignorados # arquivos por terem edições manuais}}",
"skippedNoMetadata": "{count, plural, =0 {ignorado um arquivo por não ter metadados buscados} one {ignorado um arquivo por não ter metadados buscados} many {ignorados # arquivos por não terem metadados buscados} other {ignorados # arquivos por não terem metadados buscados}}",
"noneApplied": "Nenhum arquivo aplicado; {reasons}",
"noneSelected": "Nenhum arquivo selecionado"
}
@@ -6259,7 +6252,7 @@
"showControlsAria": "Exibir controles de coleção",
"loadError": "Não foi possível carregar esta coleção",
"toast": {
"removed": "Nenhum livro removido da coleção | Um livro removido da coleção | {count} livros removidos da coleção",
"removed": "{count, plural, =0 {Nenhum livro removido da coleção} one {Um livro removido da coleção} many {# livros removidos da coleção} other {# livros removidos da coleção}}",
"removeFailed": "Falha ao remover livros da coleção"
},
"empty": {
@@ -6326,7 +6319,7 @@
"title": "O que há de novo",
"subtitle": "Tudo o que foi lançado, do mais recente ao mais antigo.",
"versionPrefix": "Versão {version}",
"newUpdates": "nenhuma nova atualização | uma nova atualização | {count} novas atualizações",
"newUpdates": "{count, plural, =0 {nenhuma nova atualização} one {uma nova atualização} many {# novas atualizações} other {# novas atualizações}}",
"remindLater": "Lembrar mais tarde",
"gotIt": "Entendi",
"latest": "Última versão",