diff --git a/ui/v2.5/src/components/Changelog/versions/v090.md b/ui/v2.5/src/components/Changelog/versions/v090.md
index 7c87b7a62..cbb8b0f3f 100644
--- a/ui/v2.5/src/components/Changelog/versions/v090.md
+++ b/ui/v2.5/src/components/Changelog/versions/v090.md
@@ -2,6 +2,7 @@
* Added not equals/greater than/less than modifiers for resolution criteria. ([#1568](https://github.com/stashapp/stash/pull/1568))
### 🎨 Improvements
+* Added pt-BR language option. ([#1587](https://github.com/stashapp/stash/pull/1587))
* Added de-DE language option. ([#1578](https://github.com/stashapp/stash/pull/1578))
### 🐛 Bug fixes
diff --git a/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx b/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx
index b09af3342..ec7f5f313 100644
--- a/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx
+++ b/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx
@@ -120,6 +120,7 @@ export const SettingsInterfacePanel: React.FC = () => {
+
diff --git a/ui/v2.5/src/locales/index.ts b/ui/v2.5/src/locales/index.ts
index 57e5a9cff..339f88c05 100644
--- a/ui/v2.5/src/locales/index.ts
+++ b/ui/v2.5/src/locales/index.ts
@@ -1,11 +1,13 @@
import deDE from "./de-DE.json";
import enGB from "./en-GB.json";
import enUS from "./en-US.json";
+import ptBR from "./pt-BR.json";
import zhTW from "./zh-TW.json";
export default {
deDE,
enGB,
enUS,
+ ptBR,
zhTW,
};
diff --git a/ui/v2.5/src/locales/pt-BR.json b/ui/v2.5/src/locales/pt-BR.json
new file mode 100644
index 000000000..d7d4e620d
--- /dev/null
+++ b/ui/v2.5/src/locales/pt-BR.json
@@ -0,0 +1,601 @@
+{
+ "actions": {
+ "add": "Adicionar",
+ "add_directory": "Adicionar diretório",
+ "add_entity": "Adicionar {entityType}",
+ "add_to_entity": "Adicionar em {entityType}",
+ "allow": "Permitir",
+ "allow_temporarily": "Permitir temporariamente",
+ "apply": "Aplicar",
+ "auto_tag": "Auto tag",
+ "backup": "Backup",
+ "cancel": "Cancelar",
+ "clean": "Limpar",
+ "clear_back_image": "Limpar imagem de fundo",
+ "clear_front_image": "Limpar imagem frontal",
+ "clear_image": "Limpar imagem",
+ "close": "Fechar",
+ "create": "Criar",
+ "create_entity": "Criar {entityType}",
+ "create_marker": "Criar marcador",
+ "created_entity": "Criar {entity_type}: {entity_name}",
+ "delete": "Apagar",
+ "delete_entity": "Apagar {entityType}",
+ "delete_file": "Apagar arquivo",
+ "delete_generated_supporting_files": "Apagar arquivos gerados de suporte",
+ "disallow": "Não permitir",
+ "download": "Download",
+ "download_backup": "Download backup",
+ "edit": "Editar",
+ "export": "Exportar…",
+ "export_all": "Exportar tudo…",
+ "find": "Encontrar",
+ "from_file": "Do arquivo…",
+ "from_url": "Da URL…",
+ "full_export": "Exportação completa",
+ "full_import": "Importação completa",
+ "generate": "Gerar",
+ "generate_thumb_default": "Gerar thumbnail padrão",
+ "generate_thumb_from_current": "Gerar thumbnail do atual",
+ "hash_migration": "migrar hash",
+ "hide": "Esconder",
+ "import": "Importar…",
+ "import_from_file": "Importar do arquivo",
+ "merge": "Unir",
+ "merge_from": "Unir do",
+ "merge_into": "Unir em",
+ "not_running": "não realizado",
+ "overwrite": "Sobrescrever",
+ "play_random": "Tocar aleatório",
+ "play_selected": "Tocar selecionado",
+ "preview": "Previsualizar",
+ "refresh": "Atualizar",
+ "reload_plugins": "Recarregar plugins",
+ "reload_scrapers": "Recarregar scrapers",
+ "remove": "Remover",
+ "rename_gen_files": "Renomear arquivos gerados",
+ "rescan": "Reescanear",
+ "reshuffle": "Reembaralhar",
+ "running": "rodando",
+ "save": "Salvar",
+ "save_filter": "Salvar filtro",
+ "scan": "Escanear",
+ "scrape_with": "Scrape com…",
+ "search": "Buscar",
+ "select_all": "Selecionar todos",
+ "select_none": "Selecionar nenhum",
+ "selective_auto_tag": "Auto Tag seletivo",
+ "selective_scan": "Escaneamento seletivo",
+ "set_as_default": "Aplicar como padrão",
+ "set_back_image": "Imagem de fundo…",
+ "set_front_image": "Imagem frontal…",
+ "set_image": "Aplicar imagem…",
+ "show": "Mostrar",
+ "skip": "Pular",
+ "tasks": {
+ "clean_confirm_message": "Tem certeza de que quer limpar? Isto irá apagar as informações do banco de dados e conteúdos gerados de todas as cenas e galerias que não são mais encontradas no sistema.",
+ "dry_mode_selected": "Modo não destrutivo. Nenhum arquivo será apagado, apenas será logado.",
+ "import_warning": "Tem certeza de que quer importar? Isto irá apagar o banco de dados e re-importar de seus metadados exportados."
+ },
+ "temp_disable": "Desabilitar temporariamente…",
+ "temp_enable": "Habilitar temporariamente…",
+ "view_random": "Mostrar aleatoriamente"
+ },
+ "actions_name": "Ações",
+ "age": "Idade",
+ "aliases": "Apelidos",
+ "also_known_as": "Também conhecido(a) como",
+ "ascending": "Ascendente",
+ "average_resolution": "Resolução média",
+ "birth_year": "Ano de nascimento",
+ "birthdate": "Data de nascimento",
+ "bitrate": "Taxa de bits",
+ "career_length": "Duração da carreira",
+ "child_studios": "Estúdios filhos",
+ "component_tagger": {
+ "config": {
+ "active_instance": "Ativar stash-box:",
+ "blacklist_desc": "Os itens da lista negra são excluídos das consultas. Observe que são expressões regulares e também não fazem distinção entre maiúsculas e minúsculas. Certos caracteres devem ser escritos com uma barra invertida: {chars_require_escape}",
+ "blacklist_label": "Lista negra",
+ "query_mode_auto": "Automático",
+ "query_mode_auto_desc": "Usa metadados se existentes, ou nome do arquivo",
+ "query_mode_dir": "Dir",
+ "query_mode_dir_desc": "Usa apenas o diretório pai do arquivo de vídeo",
+ "query_mode_filename": "Nome do arquivo",
+ "query_mode_filename_desc": "Usa apenas o nome do arquivo",
+ "query_mode_label": "Modo de consulta.",
+ "query_mode_metadata": "Metadados",
+ "query_mode_metadata_desc": "Usa apenas metadados",
+ "query_mode_path": "Caminho",
+ "query_mode_path_desc": "Usa o caminho inteiro do arquivo",
+ "set_cover_desc": "Substitua a capa da cena se alguma for encontrada.",
+ "set_cover_label": "Definir imagem da capa da cena",
+ "set_tag_desc": "Anexar tags à cena, sobrescrevendo ou mesclando com as tags existentes na cena.",
+ "set_tag_label": "Definir tags.",
+ "show_male_desc": "Artistas masculinos estarão disponíveis para tag.",
+ "show_male_label": "Mostrar artistas masculinos"
+ },
+ "noun_query": "Query",
+ "results": {
+ "fp_found": "{fpCount, plural, =0 {Nenhuma nova correspondência de impressão digital encontrada} other{# novas correspondências de impressão digital encontradas}}",
+ "fp_matches": "Duração é uma correspondência",
+ "fp_matches_multi": "Duração corresponde {matchCount}/{durationsLength} impressão digital(s)",
+ "hash_matches": "{hash_type} é uma correspondência",
+ "match_failed_already_tagged": "Cena já marcada",
+ "match_failed_no_result": "Nenhum resultado encontrado",
+ "match_success": "Cena marcada com sucesso",
+ "duration_off": "Duração por pelo menos {number}s",
+ "duration_unknown": "Duração desconhecida"
+ },
+ "verb_match_fp": "Combine as impressões digitais",
+ "verb_matched": "Combinado",
+ "verb_submit_fp": "Enviar {fpCount, plural, one{# impressão digital} other{# impressões digitais}}",
+ "verb_toggle_config": "{toggle} {configuration}",
+ "verb_toggle_unmatched": "{toggle} cenas incomparáveis"
+ },
+ "config": {
+ "about": {
+ "build_hash": "Build hash:",
+ "build_time": "Tempo de build:",
+ "check_for_new_version": "Verificar se há uma nova versão",
+ "latest_version_build_hash": "Build Hash da última versão:",
+ "new_version_notice": "[NOVA]",
+ "stash_discord": "Junte-se ao nosso {url} canal",
+ "stash_home": "Stash home no {url}",
+ "stash_open_collective": "Apoie-nos através de {url}",
+ "stash_wiki": "Stash {url} página",
+ "version": "Versão"
+ },
+ "categories": {
+ "about": "Sobre",
+ "interface": "Interface",
+ "logs": "Logs",
+ "plugins": "Plugins",
+ "scrapers": "Scrapers",
+ "tasks": "Tarefas",
+ "tools": "Ferramentas"
+ },
+ "dlna": {
+ "allow_temp_ip": "Permitir {tempIP}",
+ "allowed_ip_addresses": "Endereços de IP permitidos",
+ "default_ip_whitelist": "Whitelist de IP padrão",
+ "default_ip_whitelist_desc": "Endereços IP padrão permitidos a acessar DLNA. Use {wildcard} para permitir todos endereços de IP.",
+ "enabled_by_default": "Ativado por padrão",
+ "network_interfaces": "Interfaces",
+ "network_interfaces_desc": "Interfaces para expor servidor DLNA ativo. Uma lista vazia resulta em execução em todas as interfaces. Requer DLNA ser reiniciado depois de alterar.",
+ "recent_ip_addresses": "Endereços de IP recentes",
+ "server_display_name": "Nome de exibição do servidor",
+ "server_display_name_desc": "Nome de exibição do servidor DLNA. Padrão de {server_name} se vazio.",
+ "until_restart": "até reiniciar"
+ },
+ "general": {
+ "auth": {
+ "api_key": "Chave de API",
+ "api_key_desc": "Chave de API para sistemas externos. Exigido apenas quando username/senha está configurado. Username deve ser salvo antes de gerar uma chave de API.",
+ "authentication": "Autenticação",
+ "clear_api_key": "Limpar Chave de API",
+ "generate_api_key": "Gerar Chave de API",
+ "log_file": "Arquivo de log",
+ "log_file_desc": "Caminho para o arquivo para o log de saída. Em branco para desativar o registro de arquivos. Requer reinicialização.",
+ "log_http": "Log de acesso http",
+ "log_http_desc": "Logs de acesso http para o terminal. Requer reinicialização.",
+ "log_to_terminal": "Log para terminal.",
+ "log_to_terminal_desc": "Logs para o terminal, além de um arquivo. Sempre ativo se o log de arquivos estiver desativado. Requer reinicialização.",
+ "maximum_session_age": "Tempo máximo da sessão",
+ "maximum_session_age_desc": "Tempo ocioso máximo antes de uma sessão de login expirar, em segundos.",
+ "password": "Senha",
+ "password_desc": "Senha para acesso Stash. Deixe em branco para desativar a autenticação do usuário",
+ "stash-box_integration": "Integração com Stash-box",
+ "username": "Username",
+ "username_desc": "Username para acessar o Stash. Deixe em branco para desativar a autenticação do usuário"
+ },
+ "cache_location": "Localização do diretório do cache",
+ "cache_path_head": "Caminho do cache",
+ "calculate_md5_and_ohash_desc": "Calcular MD5 checksum além do oshash. A ativação fará com que as varreduras iniciais sejam mais lentas. Nomeação de arquivo Hash deve ser definido para oshash para desabilitar o cálculo MD5.",
+ "calculate_md5_and_ohash_label": "Calcular MD5 para vídeos",
+ "check_for_insecure_certificates": "Verifique se há certificados inseguros",
+ "check_for_insecure_certificates_desc": "Alguns sites usam ssl certificados inseguros. Quando desmarcado o scraper pula a verificação de certificados inseguros e permite o scraping desses sites. Se você receber um erro de certificado quando scraping desmarque isto.",
+ "chrome_cdp_path": "Chrome CDP path",
+ "chrome_cdp_path_desc": "Caminho do arquivo para o executavel do Chrome, ou um endereço remoto (começando com http:// ou https://, por exemplo http://localhost:9222/json/version) para uma instância do Chrome.",
+ "create_galleries_from_folders_desc": "Se marcado, cria galerias de pastas contendo imagens.",
+ "create_galleries_from_folders_label": "Crie galerias de pastas contendo imagens",
+ "db_path_head": "Caminho do banco de dados",
+ "directory_locations_to_your_content": "Locais de diretório para o seu conteúdo",
+ "exclude_image": "Excluir imagem",
+ "exclude_video": "Excluir vídeo",
+ "excluded_image_gallery_patterns_desc": "Regexps de imagem e galeria de arquivos/caminhos para excluir da Varredura e adicionar para Limpar",
+ "excluded_image_gallery_patterns_head": "Padrões de imagem/galeria excluidos",
+ "excluded_video_patterns_desc": "Regexps de video arquivos/caminhos para excluir da Varredura e adicionar para Limpar",
+ "excluded_video_patterns_head": "Padrões de vídeo excluidos",
+ "gallery_ext_desc": "Lista delimitada por vírgulas de extensões de arquivo que serão identificadas como arquivos ZIP da galeria.",
+ "gallery_ext_head": "Extensões zip da galeria",
+ "generated_file_naming_hash_desc": "Use MD5 ou oshash para nomeação de arquivos gerados. Mudando isso requer que todas as cenas tenham o valor MD5/oshash populado. Depois de alterar este valor, arquivos gerados existentes precisarão ser migrados ou regenerados. Veja a página de tarefas para migração.",
+ "generated_file_naming_hash_head": "Hash de nomeação de arquivo gerado",
+ "generated_files_location": "Local de diretório para os arquivos gerados (marcadores de cena, pré visualizações de cena, sprites, etc)",
+ "generated_path_head": "Caminho gerado",
+ "hashing": "Hashing",
+ "image_ext_desc": "Lista delimitada por vírgulas de extensões de arquivo que serão identificadas como imagens.",
+ "image_ext_head": "Extensões de imagem",
+ "logging": "Logging",
+ "maximum_streaming_transcode_size_desc": "Tamanho máximo para streams transcodados",
+ "maximum_streaming_transcode_size_head": "Tamanho máximo de transcodação de streaming",
+ "maximum_transcode_size_desc": "Tamanho máximo para transcodes gerados",
+ "maximum_transcode_size_head": "Tamanho máximo de transcode.",
+ "number_of_parallel_task_for_scan_generation_desc": "Defina como 0 para detecção automática. AVISO Execução de mais tarefas do que é necessário para obter 100% de utilização da CPU diminuirá o desempenho e potencialmente causar outros problemas.",
+ "number_of_parallel_task_for_scan_generation_head": "Número de tarefas paralelas para varredura/geração",
+ "parallel_scan_head": "Varredura/Geração paralela",
+ "preview_generation": "Pré visualizar a geração",
+ "scraper_user_agent": "Scraper User Agent",
+ "scraper_user_agent_desc": "User-Agent string usado durante solicitações http do scrape",
+ "scraping": "Scraping",
+ "sqlite_location": "Localização do arquivo para o banco de dados SQLite (requer reinicialização)",
+ "video_ext_desc": "Lista delimitada por vírgulas de extensões de arquivo que serão identificadas como vídeos.",
+ "video_ext_head": "Extensões de vídeo.",
+ "video_head": "Vídeo"
+ },
+ "logs": {
+ "log_level": "Log Level"
+ },
+ "plugins": {
+ "hooks": "Hooks",
+ "triggers_on": "Triggers on"
+ },
+ "scrapers": {
+ "entity_metadata": "{entityType} metadados",
+ "entity_scrapers": "{entityType} scrapers",
+ "search_by_name": "Buscar por nome",
+ "supported_types": "Tipos suportados",
+ "supported_urls": "URLs"
+ },
+ "stashbox": {
+ "add_instance": "Adicionar uma instância stash-box",
+ "api_key": "Chave de API",
+ "description": "Stash-box facilita o tagging automático de cenas e artistas baseados em 'impressões digitais' e nomes de arquivos..\nEndpoint e chave de API pode ser encontrado na sua página de conta na instancia stash-box. Os nomes são necessários quando mais de uma instância são adicionados.",
+ "endpoint": "Endpoint",
+ "graphql_endpoint": "GraphQL endpoint",
+ "name": "Nome",
+ "title": "Stash-box Endpoints"
+ },
+ "tasks": {
+ "added_job_to_queue": "{operation_name} adicionada para a fila de trabalho.",
+ "auto_tag_based_on_filenames": "Conteúdo automático de tag baseado em nomes de arquivos.",
+ "auto_tagging": "Auto tagging",
+ "backing_up_database": "Backup do banco de dados",
+ "backup_and_download": "Executa um backup do banco de dados e baixa do arquivo resultante.",
+ "backup_database": "Executa um backup do banco de dados para o mesmo diretório que o banco de dados, com o formato do nome do arquivo {filename_format}",
+ "cleanup_desc": "Verifique os arquivos ausentes removendo-os do banco de dados. Esta é uma ação destrutiva.",
+ "dont_include_file_extension_as_part_of_the_title": "Não incluir extensão de arquivo como parte do título",
+ "export_to_json": "Exporta o conteúdo do banco de dados para o formato JSON no diretório de metadados.",
+ "generate_desc": "Gerar imagem de suporte, sprite, video, vtt e outros arquivos.",
+ "generate_phashes_during_scan": "Gerar phashes durante a varredura (para uma deduplicação e identificação de cena)",
+ "generate_previews_during_scan": "Gerar pré-visualizações de imagem durante a digitalização (WebP animadas, somente necessário se o tipo de pré-visualização for definido para imagem animada)",
+ "generate_sprites_during_scan": "Gerar sprites durante a digitalização (para o cena scrubber)",
+ "generate_video_previews_during_scan": "Gerar pré-visualizações durante a digitalização (pré-visualizações de vídeo que tocam ao posicionar o mouse sobre uma cena)",
+ "generated_content": "Conteúdo gerado",
+ "import_from_exported_json": "Importação de JSON exportado no diretório de metadados. Limpa o banco de dados existente.",
+ "incremental_import": "Importação incremental de um arquivo zip de exportação fornecido.",
+ "job_queue": "Fila de trabalho.",
+ "maintenance": "Manutenção",
+ "migrate_hash_files": "Usado depois de alterar o hash gerado de nomeação de arquivos para renomear arquivos gerados existentes para o novo formato hash.",
+ "migrations": "Migrações",
+ "only_dry_run": "Executar apenas modo não destrutivo. Não remova nada",
+ "plugin_tasks": "Tarefas de plugin",
+ "scan_for_content_desc": "Varre para novos conteúdos e adicioná-los ao banco de dados.",
+ "set_name_date_details_from_metadata_if_present": "Definir nome, data, detalhes de metadados (se presente)"
+ },
+ "tools": {
+ "scene_duplicate_checker": "Verificador de cena duplicada",
+ "scene_filename_parser": {
+ "add_field": "Adicionar campo",
+ "capitalize_title": "Capitalizar o título.",
+ "display_fields": "Exibir os campos",
+ "escape_chars": "Use \\ para digitar caracteres literais",
+ "filename": "Nome do arquivo",
+ "filename_pattern": "Padrão de nome de arquivo",
+ "ignored_words": "Palavras ignoradas",
+ "matches_with": "Corresponde com {i}",
+ "select_parser_recipe": "Select Parser Recipe",
+ "title": "Parser de nome de arquivo de cena",
+ "whitespace_chars": "Caracteres de espaço em branco",
+ "whitespace_chars_desc": "Esses caracteres serão substituídos pelo espaço em branco no título."
+ },
+ "scene_tools": "Ferramentas de cena"
+ },
+ "ui": {
+ "custom_css": {
+ "description": "A página deve ser recarregada para alterações para terem efeito.",
+ "heading": "CSS customizado",
+ "option_label": "CSS customizado habilitado"
+ },
+ "handy_connection_key": "Chave de conexão",
+ "handy_connection_key_desc": "Chave de conexão para usar em cenas interativas.",
+ "language": {
+ "heading": "Idioma"
+ },
+ "max_loop_duration": {
+ "description": "Duração máxima da cena onde o player realizará o loop do vídeo - 0 para desabilitar",
+ "heading": "Duração máxima do loop."
+ },
+ "menu_items": {
+ "description": "Mostrar ou ocultar diferentes tipos de conteúdo na barra de navegação",
+ "heading": "Itens do menu"
+ },
+ "preview_type": {
+ "description": "Configuração para itens do paredão",
+ "heading": "Tipo de visualização",
+ "options": {
+ "animated": "Imagem animada",
+ "static": "Imagem estática",
+ "video": "Vídeo"
+ }
+ },
+ "scene_list": {
+ "heading": "Lista de cenas",
+ "options": {
+ "show_studio_as_text": "Mostrar estúdios como texto"
+ }
+ },
+ "scene_player": {
+ "heading": "Player de cenas",
+ "options": {
+ "auto_start_video": "Começar vídeos automaticamente"
+ }
+ },
+ "scene_wall": {
+ "heading": "Scene / Marker Wall",
+ "options": {
+ "display_title": "Exibir título e tags",
+ "toggle_sound": "Habilitar som"
+ }
+ },
+ "slideshow_delay": {
+ "description": "Slideshow está disponível em galerias quando no modo de exibição de paredão",
+ "heading": "Atraso do slideshow"
+ },
+ "title": "Interface de usuário"
+ }
+ },
+ "configuration": "Configuração",
+ "countables": {
+ "galleries": "{count, plural, one {Galeria} other {Galerias}}",
+ "images": "{count, plural, one {Imagem} other {Imagens}}",
+ "markers": "{count, plural, one {Marcador} other {Marcadores}}",
+ "movies": "{count, plural, one {Filme} other {Filmes}}",
+ "performers": "{count, plural, one {Artista} other {Artistas}}",
+ "scenes": "{count, plural, one {Cena} other {Cenas}}",
+ "studios": "{count, plural, one {Estúdio} other {Estúdios}}",
+ "tags": "{count, plural, one {Tag} other {Tags}}"
+ },
+ "country": "País",
+ "cover_image": "Imagem de capa",
+ "created_at": "Criado em",
+ "criterion_modifier": {
+ "equals": "é",
+ "excludes": "exclui",
+ "format_string": "{criterion} {modifierString} {valueString}",
+ "greater_than": "é maior que",
+ "includes": "inclui",
+ "includes_all": "inclui tudo",
+ "is_null": "é nulo",
+ "less_than": "é menor que",
+ "matches_regex": "regex combina com",
+ "not_equals": "não é",
+ "not_matches_regex": "regex não combina com",
+ "not_null": "não é nulo"
+ },
+ "date": "Data",
+ "death_date": "Data de óbito",
+ "death_year": "Ano da morte",
+ "descending": "Descendente",
+ "detail": "Detalhe",
+ "details": "Detalhes",
+ "developmentVersion": "Versão de desenvolvimento.",
+ "dialogs": {
+ "delete_confirm": "Tem certeza de que deseja excluir {entityName}?",
+ "delete_entity_desc": "{count, plural, one {Tem certeza de que deseja excluir este(a) {singularEntity}? A menos que o arquivo também seja excluído, este(a) {singularEntity} será re-adicionado quando a varredura for executada.} other {Tem certeza de que deseja excluir estes(as) {pluralEntity}? A menos que os arquivos também sejam excluídos, estes(as) {pluralEntity} serão re-adicionados quando a varredura for executada.}}",
+ "delete_entity_title": "{count, plural, one {Excluir {singularEntity}} other {Excluir {pluralEntity}}}",
+ "delete_object_desc": "Tem certeza de que deseja excluir {count, plural, one {este(a) {singularEntity}} other {estes(as) {pluralEntity}}}?",
+ "delete_object_overflow": "…e {count} other {count, plural, one {{singularEntity}} other {{pluralEntity}}}.",
+ "delete_object_title": "Excluir {count, plural, one {{singularEntity}} other {{pluralEntity}}}",
+ "edit_entity_title": "Editar {count, plural, one {{singularEntity}} other {{pluralEntity}}}",
+ "export_include_related_objects": "Inclua objetos relacionados na exportação",
+ "export_title": "Exportar",
+ "merge_tags": {
+ "destination": "Destino",
+ "source": "Fonte"
+ },
+ "overwrite_filter_confirm": "Tem certeza de que deseja sobrescrever a consulta salva existente {entityName}?",
+ "scene_gen": {
+ "image_previews": "Pré-visualizações de imagem (WebP animadas, somente necessário se o tipo de pré-visualização for definido para imagem animada)",
+ "markers": "Marcadores (vídeos de 20 segundos que iniciam no dado tempo)",
+ "overwrite": "Substituir arquivos gerados existentes",
+ "phash": "Hashes perceptivos (para desduplicação)",
+ "preview_exclude_end_time_desc": "Excluir os últimos x segundos de pré-visualizações de cena. Isso pode ser um valor em segundos, ou uma porcentagem (p. ex. 2%) da duração total da cena.",
+ "preview_exclude_end_time_head": "Excluir tempo de término",
+ "preview_exclude_start_time_desc": "Excluir os primeiros x segundos de pré-visualizações de cena. Isso pode ser um valor em segundos, ou uma porcentagem (p. ex. 2%) da duração total da cena.",
+ "preview_exclude_start_time_head": "Excluir tempo de início",
+ "preview_options": "Opções de pré-visualização",
+ "preview_preset_desc": "A predefinição regula o tamanho, a qualidade e o tempo de codificação da geração de pré-visualização. Predefinições além de “lenta” tem retornos diminuindo e não são recomendados.",
+ "preview_preset_head": "Codificação predefinida de pré-visualização",
+ "preview_seg_count_desc": "Número de segmentos em arquivos de pré-visualização.",
+ "preview_seg_count_head": "Número de segmentos em pré-visualização",
+ "preview_seg_duration_desc": "Duração de cada segmento de pré-visualização, em segundos.",
+ "preview_seg_duration_head": "Duração do segmento de pré-visualização",
+ "sprites": "Sprites (para scrubber de cena)",
+ "transcodes": "Transcodes (conversões MP4 de formatos de vídeo não suportados)",
+ "video_previews": "Pré-visualizações (pré-visualizações de vídeo que tocam ao posicionar o mouse sobre uma cena)"
+ },
+ "scrape_entity_title": "{entity_type} resultados de scrape",
+ "scrape_results_existing": "Existem",
+ "scrape_results_scraped": "Scraped",
+ "set_image_url_title": "URL da imagem",
+ "unsaved_changes": "Mudanças não salvas. Você tem certeza de que quer sair?"
+ },
+ "dimensions": "Dimensões",
+ "director": "Diretor(a)",
+ "display_mode": {
+ "grid": "Grid",
+ "list": "Lista",
+ "tagger": "Tagger",
+ "unknown": "Desconhecido(a)",
+ "wall": "Paredão"
+ },
+ "donate": "Doar",
+ "dupe_check": {
+ "description": "Níveis abaixo de 'Exato' podem demorar mais para calcular. Falsos positivos também podem ser encontrados em níveis de precisão mais baixos.",
+ "found_sets": "{setCount, plural, one{# conjunto de duplicatas encontrados.} other {# conjuntos de duplicatas encontrados.}}",
+ "options": {
+ "exact": "Exato",
+ "high": "Alto",
+ "low": "Baixo",
+ "medium": "Médio"
+ },
+ "search_accuracy_label": "Precisão de pesquisa",
+ "title": "Cenas duplicadas"
+ },
+ "duration": "Duração",
+ "effect_filters": {
+ "aspect": "Aspect",
+ "blue": "Azul",
+ "blur": "Blur",
+ "brightness": "Brilho",
+ "contrast": "Contraste",
+ "gamma": "Gama",
+ "green": "Verde",
+ "hue": "Matiz",
+ "name": "Filtros",
+ "name_transforms": "Transformadores",
+ "red": "Vermelho",
+ "reset_filters": "Redefinir filtros",
+ "reset_transforms": "Redefinir transformadores",
+ "rotate": "Girar",
+ "rotate_left_and_scale": "Girar para a esquerda e escalar",
+ "rotate_right_and_scale": "Girar a direita e escalar",
+ "saturation": "Saturação",
+ "scale": "Escala",
+ "warmth": "Calor"
+ },
+ "ethnicity": "Etnicidade",
+ "eye_color": "Cor dos olhos",
+ "fake_tits": "Peitos falsos",
+ "favourite": "Favorito(a)",
+ "file_info": "Informações do arquivo",
+ "file_mod_time": "Tempo de modificação do arquivo",
+ "filesize": "Tamanho do arquivo",
+ "filter": "Filtro",
+ "filter_name": "Nome do filtro",
+ "filters": "Filtros",
+ "framerate": "Taxa de quadros",
+ "galleries": "Galerias",
+ "gallery": "Galeria",
+ "gallery_count": "Contagem de galeria",
+ "gender": "Gênero",
+ "hair_color": "Cor do cabelo",
+ "hasMarkers": "Possui marcadores",
+ "height": "Altura",
+ "help": "Ajuda",
+ "image": "Imagem",
+ "image_count": "Contagem de imagem",
+ "images": "Imagens",
+ "images-size": "Tamanho das imagens",
+ "include_child_studios": "Incluem estúdios filho",
+ "instagram": "Instagram",
+ "interactive": "Interativo",
+ "isMissing": "Está faltando",
+ "library": "Biblioteca",
+ "loading": {
+ "generic": "Carregando…"
+ },
+ "marker_count": "Contagem de marcadores",
+ "markers": "Marcadores",
+ "measurements": "Medidas",
+ "media_info": {
+ "audio_codec": "Codec de áudio",
+ "checksum": "Checksum",
+ "downloaded_from": "Baixado de",
+ "hash": "Hash",
+ "performer_card": {
+ "age": "{age} {years_old}",
+ "age_context": "{age} {years_old} nesta cena"
+ },
+ "phash": "PHash",
+ "stream": "Stream",
+ "video_codec": "Codec de vídeo"
+ },
+ "metadata": "Metadados",
+ "movie": "Filme",
+ "movie_scene_number": "Número da cena do filme",
+ "movies": "Filmes",
+ "name": "Nome",
+ "new": "Novo",
+ "none": "Nenhum",
+ "o_counter": "O-contador",
+ "operations": "Operações",
+ "organized": "Organizado",
+ "pagination": {
+ "first": "Primeiro",
+ "last": "Último",
+ "next": "Próximo",
+ "previous": "Anterior"
+ },
+ "parent_studios": "Estúdios pai",
+ "path": "Caminho",
+ "performer": "Artista",
+ "performer_count": "Contagem de artistas",
+ "performer_image": "Imagem do(a) artita",
+ "performers": "Artistas",
+ "performerTags": "Tags de artitas",
+ "piercings": "Piercings",
+ "queue": "Fila",
+ "random": "Aleatória",
+ "rating": "Avaliação",
+ "resolution": "Resolução",
+ "scene": "Cena",
+ "scene_count": "Contagem de cena",
+ "scene_id": "Cena ID",
+ "scenes": "Cenas",
+ "scenes-size": "Tamanho de cenas",
+ "scenes_updated_at": "Cena atualizada em",
+ "sceneTagger": "Tagger de cena",
+ "sceneTags": "Tags de cena",
+ "search_filter": {
+ "add_filter": "Adicionar filtro",
+ "name": "Filtro",
+ "saved_filters": "Filtros salvos",
+ "update_filter": "Atualizar filtro"
+ },
+ "seconds": "Segundos",
+ "settings": "Definições",
+ "stash_id": "Stash ID",
+ "status": "Status: {statusText}",
+ "studio": "Estúdio",
+ "studio_depth": "Níveis (vazio para todos)",
+ "studios": "Estúdios",
+ "synopsis": "Sinopse",
+ "tag": "Tag",
+ "tag_count": "Número de tags",
+ "tags": "Tags",
+ "tattoos": "Tatuagens",
+ "title": "Título",
+ "toast": {
+ "added_entity": "{entity} adicionado(a)",
+ "added_generation_job_to_queue": "Trabalho de geração adicionado para fila",
+ "create_entity": "Criar {entity}",
+ "default_filter_set": "Filtragem padrão definada",
+ "delete_entity": "Excluir {count, plural, one {{singularEntity}} other {{pluralEntity}}}",
+ "delete_past_tense": "Excluída {count, plural, one {{singularEntity}} other {{pluralEntity}}}",
+ "generating_screenshot": "Gerando captura de tela…",
+ "merged_tags": "Tags mescladas",
+ "rescanning_entity": "Reescaneando {count, plural, one {{singularEntity}} other {{pluralEntity}}}…",
+ "started_auto_tagging": "Auto tagging iniciado",
+ "saved_entity": "{entity} salvo(a)",
+ "updated_entity": "{entity} atualizado(a)"
+ },
+ "total": "Total",
+ "twitter": "Twitter",
+ "up-dir": "Subir um diretório",
+ "updated_at": "Atualizado em",
+ "url": "URL",
+ "weight": "Peso",
+ "years_old": "anos"
+}