diff --git a/src/common/constants.js b/src/common/constants.js index 005a84b2d..8fe00cb37 100644 --- a/src/common/constants.js +++ b/src/common/constants.js @@ -2,7 +2,8 @@ import packageJson from '../../package.json'; export const LANGUAGES = [ {locale: 'en', name: 'English'}, - {locale: 'es', name: "Español"} + {locale: 'es', name: "Español"}, + {locale: 'pt-BR', name: "Português (Brasil)"} ] diff --git a/src/components/common/Events.jsx b/src/components/common/Events.jsx index 547d3dc83..06fd09452 100644 --- a/src/components/common/Events.jsx +++ b/src/components/common/Events.jsx @@ -18,6 +18,7 @@ import Link from '../common/Link' import UserIcon from '../users/UserIcon' const EventDescription = ({ event, isFirst, isLast, isJoined }) => { + const { t } = useTranslation() const { event_type, description, referenced_object} = event; const getDescription = () => { let eventDescription = description @@ -25,7 +26,9 @@ const EventDescription = ({ event, isFirst, isLast, isJoined }) => { eventDescription += ' ' + getSiteTitle() let rel; if(event_type && !isEmpty(referenced_object)) { - eventDescription = `${event_type} ${referenced_object.type} ` + const translatedEventType = t(`common.event_types.${event_type.toLowerCase()}`, { defaultValue: event_type }); + const translatedObjectType = referenced_object.type ? t(`common.event_object_types.${referenced_object.type}`, { defaultValue: referenced_object.type }) : ''; + eventDescription = `${translatedEventType} ${translatedObjectType} ` if(['Source Version', 'Collection Version'].includes(referenced_object.type)) { rel = `${referenced_object.short_code}/${referenced_object.id}` } else @@ -105,7 +108,7 @@ const Events = ({ user, events, onLoadMore, showAvatar, maxHeight, dashboard }) showAvatar && } - {`${isSelf ? t('user.your') : (user.name + "'s")} ${t('user.recent_activity')}`} + {isSelf ? t('user.own_recent_activity') : t('user.recent_activity_of', {name: user.name})} { const { t } = useTranslation() const getTitle = (event, object, includeSubtitle) => { let title = object?.id || object?.username || object?.name - let subTitle = event?.event_type?.toLowerCase() - if(event?.referenced_object?.type === 'Organization') - subTitle += ` ${t('common.an')} ${event.referenced_object?.type?.toLowerCase()}` - else if(event?.referenced_object?.type) - subTitle += ` ${t('common.a')} ${event.referenced_object?.type?.toLowerCase()}` + const eventType = event?.event_type?.toLowerCase() + const translatedEventType = t(`common.event_types.${eventType}`, { defaultValue: eventType }); + let subTitle + if(event?.referenced_object?.type) + subTitle = t(`common.event_object_types.${event.referenced_object.type}`, { defaultValue: event.referenced_object.type.toLowerCase() }) else - subTitle += ` ${getSiteTitle()}` + subTitle = getSiteTitle() return ( @@ -40,7 +40,7 @@ const EventCard = ({ event, highlight }) => { { includeSubtitle && - {subTitle} + {translatedEventType} {subTitle} } diff --git a/src/components/dashboard/EventsButtonGroup.jsx b/src/components/dashboard/EventsButtonGroup.jsx index 78dc98905..3c46222b1 100644 --- a/src/components/dashboard/EventsButtonGroup.jsx +++ b/src/components/dashboard/EventsButtonGroup.jsx @@ -1,6 +1,5 @@ import React from 'react' import { useTranslation } from 'react-i18next'; -import startCase from 'lodash/startCase' import DoneIcon from '@mui/icons-material/Done'; import ButtonGroup from '@mui/material/ButtonGroup' import Button from '@mui/material/Button' @@ -29,7 +28,7 @@ const EventsButtonGroup = ({ onClick, selected }) => { onClick('all')} /> onClick('following')} /> - onClick('orgs')} /> + onClick('orgs')} /> ) } diff --git a/src/i18n/config.js b/src/i18n/config.js index d84ca3348..6fc2b425c 100644 --- a/src/i18n/config.js +++ b/src/i18n/config.js @@ -3,10 +3,34 @@ import { initReactI18next } from 'react-i18next'; import en from './locales/en/translations.json' import es from './locales/es/translations.json' import zh from './locales/zh/translations.json' +import ptBR from './locales/pt-BR/translations.json' + +const LANGUAGE_STORAGE_KEY = 'ocl.language' +const SUPPORTED_LANGUAGES = ['en', 'es', 'zh', 'pt-BR'] + +const getInitialLanguage = () => { + if(typeof window === 'undefined') + return 'en' + + try { + const storedLanguage = window.localStorage.getItem(LANGUAGE_STORAGE_KEY) + return SUPPORTED_LANGUAGES.includes(storedLanguage) ? storedLanguage : 'en' + } catch(_) { + return 'en' + } +} + +const persistLanguage = language => { + try { + window.localStorage.setItem(LANGUAGE_STORAGE_KEY, language) + } catch(_) { + // Keep i18n usable when browser storage is unavailable. + } +} i18n.use(initReactI18next).init({ fallbackLng: 'en', - lng: 'en', + lng: getInitialLanguage(), resources: { en: { translations: en @@ -16,12 +40,16 @@ i18n.use(initReactI18next).init({ }, zh: { translations: zh + }, + 'pt-BR': { + translations: ptBR } }, ns: ['translations'], defaultNS: 'translations' }); -i18n.languages = ['en', 'es', 'zh']; +i18n.languages = SUPPORTED_LANGUAGES; +i18n.on('languageChanged', persistLanguage) export default i18n; diff --git a/src/i18n/locales/en/translations.json b/src/i18n/locales/en/translations.json index ec08b2d7e..039177b61 100644 --- a/src/i18n/locales/en/translations.json +++ b/src/i18n/locales/en/translations.json @@ -48,6 +48,36 @@ "create_from_ocl_url": "Create from OCL URL", "created_on": "Created On", "created_by": "Created By", + "event_types": { + "created": "Created", + "updated": "Updated", + "released": "Released", + "deleted": "Deleted", + "followed": "Followed", + "unfollowed": "Unfollowed", + "joined": "Joined", + "source": "Source" + }, + "object_types": { + "Source": "Source", + "Collection": "Collection", + "Source Version": "Source Version", + "Collection Version": "Collection Version", + "Organization": "Organization", + "Concept": "Concept", + "Mapping": "Mapping", + "Repository": "Repository" + }, + "event_object_types": { + "Source": "a Source", + "Collection": "a Collection", + "Source Version": "a Source Version", + "Collection Version": "a Collection Version", + "Organization": "an Organization", + "Concept": "a Concept", + "Mapping": "a Mapping", + "Repository": "a Repository" + }, "version": "Version", "versions": "Versions", "summary": "Summary", @@ -891,7 +921,9 @@ "about_me": "About me", "about_me_description": "Create an introduction for visiting your profile (200 characters).", "user_has_not_created_public_repos_suffix": "has not created any public repositories", - "recent_activity": "recent activity" + "recent_activity": "recent activity", + "own_recent_activity": "Your recent activity", + "recent_activity_of": "{{name}}'s recent activity" }, "search": { "filters": "Filters", diff --git a/src/i18n/locales/es/translations.json b/src/i18n/locales/es/translations.json index 4a0eef83a..d15152bba 100644 --- a/src/i18n/locales/es/translations.json +++ b/src/i18n/locales/es/translations.json @@ -467,7 +467,9 @@ "location": "Ubicación", "website": "Sitio web", "last_login": "Último inicio de sesión", - "name_and_description": "Nombre y descripción" + "name_and_description": "Nombre y descripción", + "own_recent_activity": "Tu actividad reciente", + "recent_activity_of": "Actividad reciente de {{name}}" }, "search": { "filters": "Filtros", diff --git a/src/i18n/locales/pt-BR/translations.json b/src/i18n/locales/pt-BR/translations.json new file mode 100644 index 000000000..434570a71 --- /dev/null +++ b/src/i18n/locales/pt-BR/translations.json @@ -0,0 +1,1173 @@ +{ + "common": { + "error_details": "Detalhes do erro", + "or": "ou", + "of": "de", + "language": "Idioma", + "languages": "Idiomas", + "preferred_language": "Idioma preferido", + "help_and_documentation": "Ajuda e documentação", + "community_website": "Site da comunidade OCL", + "chat": "Chat do OCL", + "clear": "Limpar", + "apply": "Aplicar", + "exclude": "Excluir", + "include": "Incluir", + "excluded": "excluído", + "updated_on": "Última atualização", + "last_updated_on": "Última atualização em", + "last_updated": "Última atualização", + "updated_by": "Atualizado por", + "owner": "Proprietário", + "show": "Mostrar", + "hide": "Ocultar", + "more": "Mais", + "less": "Menos", + "read_more": "Ler mais", + "read_less": "Ler menos", + "refresh": "atualizar", + "reset": "Redefinir", + "go_to": "ir para", + "go_to_your": "ir para seu ", + "go_back_or_to_your_dashboard": "Ir <0/> ou para seu <1/>.", + "for_a_new_account": "para uma nova conta", + "back": "voltar", + "retired": "Aposentado", + "retire": "Aposentar", + "unretire": "Reativar", + "id": "ID", + "uid": "UID", + "name": "Nome", + "full_name": "Nome completo", + "description": "Descrição", + "true": "Verdadeiro", + "false": "Falso", + "update": "Atualizar", + "create": "Criar", + "created": "Criado", + "create_from_ocl_url": "Criar a partir de URL do OCL", + "created_on": "Criado em", + "created_by": "Criado por", + "event_types": { + "created": "Criou", + "updated": "Atualizou", + "released": "Publicou", + "deleted": "Excluiu", + "followed": "Passou a seguir", + "unfollowed": "Deixou de seguir", + "joined": "Entrou", + "source": "Source" + }, + "object_types": { + "Source": "Source", + "Collection": "Coleção", + "Source Version": "Versão do Source", + "Collection Version": "Versão da Coleção", + "Organization": "Organização", + "Concept": "Conceito", + "Mapping": "Mapeamento", + "Repository": "Repositório" + }, + "event_object_types": { + "Source": "um Source", + "Collection": "uma Coleção", + "Source Version": "uma Versão do Source", + "Collection Version": "uma Versão da Coleção", + "Organization": "uma Organização", + "Concept": "um Conceito", + "Mapping": "um Mapeamento", + "Repository": "um Repositório" + }, + "version": "Versão", + "versions": "Versões", + "summary": "Resumo", + "about": "Sobre", + "about_page": "Página Sobre", + "view_all_attributes": "Ver todos os atributos", + "view_attributes": "Ver atributos", + "all": "Todos", + "actions": "Ações", + "selected": "selecionados", + "eligible": "elegíveis", + "skipped": "ignorados", + "status": "Status", + "metadata": "Metadados", + "details": "Detalhes", + "copied_to_clipboard": "Copiado para a área de transferência", + "navigate": "Navegar", + "select": "Selecionar", + "search": "Buscar", + "match": "Correspondência", + "content_summary": "Resumo do conteúdo", + "for": "para", + "please": "Por favor", + "save": "Salvar", + "manage": "Gerenciar", + "overview": "Visão geral", + "quick_links": "Links rápidos", + "resolve": "Resolver", + "result": "Resultado", + "settings": "Configurações", + "add": "Adicionar", + "remove": "Remover", + "cancel": "Cancelar", + "upload": "Carregar", + "logo": "Logotipo", + "custom_attributes": "Atributos personalizados", + "public": "Público", + "private": "Privado", + "close": "Fechar", + "compare": "Comparar", + "something_went_wrong": "Algo deu errado", + "no_results": "Nenhum resultado", + "json_helper_text": "Formato JSON ex.: {\"chave\": \"valor\"}", + "format_json": "Formatar JSON", + "content": "Conteúdo", + "short_code": "Código curto", + "attribute": "Atributo", + "attributes": "Atributos", + "value": "Valor", + "by": "por", + "statistics": "Estatísticas", + "subscribed": "Inscrito", + "following": "Seguindo", + "follow": "Seguir", + "unfollow": "Deixar de seguir", + "a": "um", + "an": "um", + "with": "com", + "to_concepts_in": "para conceitos em", + "json": "JSON", + "draft": "Rascunho", + "released": "Publicado", + "highlights": "Destaques", + "click_to_copy": "Clique para copiar", + "submit": "Enviar", + "external_id": "ID externo", + "access_level": "Nível de acesso", + "history": "Histórico", + "from": "De", + "target": "Destino", + "properties": "Propriedades", + "view_raw": "Ver bruto", + "custom": "Personalizado", + "delete_label": "Excluir", + "edit": "Editar", + "visibility": "Visibilidade", + "website": "Site", + "your_url_will_be": "Sua URL será", + "proceed": "Prosseguir", + "loading": "Carregando...", + "none": "Nenhum", + "default": "Padrão", + "processing": "Processando", + "processed": "Processado", + "load_more": "Carregar mais", + "generate_with_ai": "Gerar com IA", + "release": "Publicar", + "unrelease": "Despublicar", + "reason": "Motivo", + "success_update": "Atualizado com sucesso", + "generic_error": "Algo deu errado.", + "company": "Empresa", + "location": "Localização", + "hierarchy": "Hierarquia", + "change": "Alteração", + "type_of_change": "Tipo de alteração", + "toggle_attributes": "Alternar atributos", + "delete": { + "warning": "Coisas ruins inesperadas acontecerão se você não ler isto!", + "title": "Excluir {{resourceType}}: {{resourceId}}", + "message": "Esta ação <0>não pode ser desfeita! Isso excluirá o {{resourceType}} inteiro e todos os seus {{relationship}} {{associationsLabel}} (se houver).", + "confirmation_title": "Tem certeza de que deseja excluir permanentemente este {{resourceType}}?", + "confirmation_message": "Digite <0>{{resourceId}} para confirmar.", + "confirmation_button_label": "Entendo as consequências, excluir este {{resourceType}}" + }, + "checking_auth": "Verificando autenticação...", + "using_ocl_semantic_search": "usando Busca Semântica do OCL", + "run_match": "Executar $match usando Busca Semântica do OCL", + "view_resource_version": "Ver versão do recurso", + "copy_api_url": "Copiar URL da API", + "api_url": "URL da API", + "copy_standard_checksum": "Copiar checksum padrão", + "copy_smart_checksum": "Copiar checksum inteligente", + "committed": "confirmado", + "results": "Resultados", + "suggested": "Sugeridos", + "rest": "Restante", + "click_here": "clique aqui", + "classic_termbrowser": "Ver no TBv2", + "back_to_classic_termbrowser": "Voltar para o TermBrowser clássico", + "already_exists": "Já existe", + "comment": "Comentário", + "update_comment": "Comentário de atualização", + "undo": "Desfazer", + "advanced": "Avançado", + "type_to_search": "Digite para buscar" + }, + "errors": { + "404": "Desculpe, sua página não pôde ser encontrada.", + "401": "Login é necessário", + "403": "Acesso a esta página não é autorizado", + "mandatory_field": "Este campo não pode ficar em branco", + "already_queued": "Já na fila", + "invalid_json": "Por favor, insira JSON válido", + "generic": "Algo falhou, por favor tente novamente mais tarde.", + "network_error": "Erro de rede", + "concept_404": "Desculpe, este conceito não pôde ser encontrado.", + "mapping_404": "Desculpe, este mapeamento não pôde ser encontrado.", + "reference_404": "Desculpe, esta referência não pôde ser encontrada." + }, + "success": { + "queued": "Enfileirado com sucesso" + }, + "dashboard": { + "name": "Painel", + "my": "Meu Painel", + "welcome_line": "Bem-vindo ao OCL.", + "take_a_tour": "Ver notas de versão e fazer um tour", + "hello": "Olá", + "create_repository": "Criar Repositório", + "anonymous_heading": "O que há de novo?", + "community_blog": "Blog da Comunidade", + "events_scope_sign_in": "Você precisa estar conectado para ver conteúdo de publicadores que segue", + "no_events": "Não há atualizações para mostrar ainda." + }, + "bookmarks": { + "name": "Favoritos", + "pinned": "Fixados", + "pinned_repos": "Repositórios fixados", + "pin": "Fixar", + "unpin": "Remover fixação", + "max_pins_reached": "Máximo de 4 itens podem ser fixados" + }, + "auth": { + "sign_in": "Entrar", + "sign_out": "Sair", + "register": "Cadastrar", + "signing_in": "Entrando...", + "sign_in_success": "Entrada realizada com sucesso.", + "sign_in_error": "Não foi possível entrar no momento.", + "email_verified_sign_in": "Seu e-mail foi verificado. Entre para continuar.", + "sign_in_to_continue": "Entre para continuar.", + "update_password": "Atualizar senha", + "session_expired": "Sua sessão expirou. Faça login para continuar." + }, + "custom_attributes": { + "label": "Atributos personalizados", + "key": "Nome do atributo", + "value": "Valor do atributo", + "add": "Adicionar um Atributo Personalizado" + }, + "concept": { + "concept": "Conceito", + "concepts": "Conceitos", + "retired_concepts": "Conceitos Aposentados", + "display_name": "Nome de exibição", + "concept_class": "Classe do Conceito", + "datatype": "Tipo de Dado", + "datatypes": "Tipos de Dado", + "name_and_synonyms": "Nome e sinônimos", + "descriptions": "Descrições", + "copied_name": "Nome do conceito e URL copiados para a área de transferência", + "copied_description": "Descrição do conceito e URL copiados para a área de transferência", + "associations": "Associações", + "namespace": "Namespace", + "namespace_associations": "Associações de Namespace", + "concept_classes": "Classes de Conceito", + "name_type": "Tipo de Nome", + "name_types": "Tipos de Nome", + "form": { + "id": "ID do Conceito", + "external_id": "ID Externo", + "concept_class": "Classe do Conceito", + "datatype": "Tipo de dado", + "datatype_metadata": { + "numeric_header": "Detalhes numéricos", + "text_header": "Detalhes de texto", + "units": "Unidades de medida", + "allow_decimal": "Permitir decimais", + "low_absolute": "Mínimo absoluto", + "hi_absolute": "Máximo absoluto", + "low_critical": "Crítico baixo", + "hi_critical": "Crítico alto", + "low_normal": "Normal baixo", + "hi_normal": "Normal alto", + "text_format": "Formato de texto", + "plain": "Texto simples", + "structured": "Estruturado (ex.: JSON)" + }, + "locale": "Localidade", + "name": "Nome", + "description": "Descrição", + "type": "Tipo", + "locale_preferred": "Preferido", + "id_auto_assign": "ID do conceito será atribuído automaticamente", + "id_auto_assign_override": "para substituir com entrada manual", + "concept_details": { + "header": "Detalhes do conceito" + }, + "names": { + "header": "Nome e sinônimos" + }, + "descriptions": { + "header": "Descrições" + }, + "parent_concepts_header": "Conceitos pai", + "parent_concepts": "Conceitos Pai", + "parent_concepts_placeholder": "Buscar conceitos neste Source", + "parent_concepts_help": "Conceitos sob os quais este conceito se situa na hierarquia. Uma URL completa de conceito também pode ser colada." + }, + "edit_concept": "Editar Conceito", + "ai_assistant_not_configured": "Assistente de IA não está configurado para este ambiente.", + "try_again_in_a_moment": "Tente novamente em um momento.", + "make_change_before_generating": "Faça uma alteração no conceito antes de gerar um comentário.", + "generate_comment_aria": "Gerar comentário com IA", + "select_two_versions_to_compare": "Selecione 2 versões para comparar", + "success_create": "Conceito criado com sucesso", + "success_update": "Conceito atualizado com sucesso", + "error_create": "Não foi possível criar o conceito", + "error_update": "Não foi possível atualizar o conceito", + "view_in_source": "Ver conceito em seu Source" + }, + "mapping": { + "mapping": "Mapeamento", + "mappings": "Mapeamentos", + "same_as_mappings": "Mapeamentos (SAME-AS)", + "retired_mappings": "Mapeamentos Aposentados", + "fromConcept": "Conceito de origem", + "toConcept": "Conceito de destino", + "fromConceptName": "Nome do conceito de origem", + "toConceptName": "Nome do conceito de destino", + "target_source": "Source de destino", + "type": "Tipo", + "map_types": "Tipos de Mapeamento", + "map_type": "Tipo de mapeamento", + "from_concept_sources": "Sources do Conceito de Origem", + "to_concept_sources": "Sources do Conceito de Destino", + "relationship": "Relacionamento", + "code": "Código", + "inverse_mappings": "Mapeamentos Inversos", + "self_mappings": "Mapeamentos Próprios", + "direct_mappings": "Mapeamentos Diretos", + "from_concept_not_defined": "Conceito de origem não está definido no OCL", + "from_concept_defined": "Conceito de origem está definido no OCL", + "to_concept_not_defined": "Conceito de destino não está definido no OCL", + "to_concept_defined": "Conceito de destino está definido no OCL", + "sort_weight": "Peso de Ordenação", + "fromAndTargetSource": "Origem e Source de destino", + "edit_mapping": "Editar Mapeamento", + "from_source_url": "URL do Source de Origem", + "from_source_version": "Versão do Source de Origem", + "from_concept_url": "URL do Conceito de Origem", + "from_concept_name": "Nome do Conceito de Origem", + "from_concept_code": "Código do Conceito de Origem", + "to_source_url": "URL do Source de Destino", + "to_source_version": "Versão do Source de Destino", + "from_source": "Source de Origem", + "to_source": "Source de Destino", + "from_concept": "Conceito de Origem", + "to_concept": "Conceito de Destino", + "to_concept_url": "URL do Conceito de Destino", + "to_concept_name": "Nome do Conceito de Destino", + "to_concept_code": "Código do Conceito de Destino", + "concept_ref_required": "Forneça uma URL de Conceito, ou tanto o Código do Conceito quanto o Nome do Conceito.", + "concept_required": "Por favor, selecione um conceito.", + "source_required": "Por favor, selecione um Source.", + "success_create": "Mapeamento criado com sucesso", + "success_update": "Mapeamento atualizado com sucesso", + "error_create": "Não foi possível criar o mapeamento", + "error_update": "Não foi possível atualizar o mapeamento", + "include_retired": "Incluir Aposentados", + "associations_info": "A seção Associações lista associações de hierarquia e mapeamento para este conceito.", + "has_child": "Tem filho", + "has_parent": "Tem pai", + "open_mapping_details": "Abrir Detalhes do Mapeamento", + "open_from_concept": "Abrir Conceito de Origem", + "open_to_concept": "Abrir Conceito de Destino", + "compare_concepts": "Comparar Conceitos", + "retire_mapping": "Aposentar mapeamento", + "reactivate_mapping": "Reativar mapeamento", + "success_retired": "Mapeamento aposentado", + "success_unretired": "Mapeamento reativado", + "add_new_mapping": "Adicionar Novo Mapeamento", + "add_a_mapping": "Adicionar um mapeamento", + "add_new_map_type_mapping": "Adicionar novo mapeamento {{mapType}}", + "relationship_type": "Tipo de Relacionamento", + "assign_sort_weight": "Atribuir Peso de Ordenação", + "clear_sort_weight": "Limpar Peso de Ordenação", + "custom_sorting_applied": "Ordenação personalizada foi aplicada", + "custom_sorting_applied_partial": "Ordenação personalizada foi aplicada a {{total}} mapeamentos.", + "no_sort_weight": "Mapeamento não tem peso de ordenação aplicado", + "sort_changes_warning": "{{total}} alteração(ões) feita(s). Salvar criará uma nova Versão de Mapeamento.", + "sort_success": "Mapeamentos atualizados com sucesso.", + "form": { + "id": "ID do Mapeamento", + "mapping_details": { + "header": "Detalhes do Mapeamento" + }, + "from_concept": { + "header": "Conceito de Origem" + }, + "to_concept": { + "header": "Conceito de Destino" + } + }, + "create_mapping": "Criar Mapeamento", + "view_in_source": "Ver mapeamento em seu Source" + }, + "reference": { + "expression": "Expressão", + "references": "Referências", + "reference": "Referência", + "source": "Source", + "sources": "Sources", + "type": "Tipo de Referência", + "last_resolved_at": "Última resolução em", + "details": "Detalhes da Referência", + "expansion_results": "Resultados da Expansão", + "concepts_and_mappings": "Conceitos e Mapeamentos resolvidos por esta referência", + "copy_expression": "Copiar Expressão da Referência", + "copy_url": "Copiar URL da Referência", + "reference_type": "Tipo de Ref", + "exclude": "Excluir", + "intensional": "Intensional", + "extensional": "Extensional", + "cascade": "Cascata", + "source_mappings": "Mapeamentos do Source", + "all_source_concepts_and_mappings": "Todos os Conceitos e Mapeamentos do Source", + "versioned_repo": "Versionado (Repo)", + "versioned_resource": "Versionado (Recurso)", + "resolved_repo": "Repo Resolvido", + "group_by_source": "Agrupar por Source", + "ungrouped": "Não agrupados", + "mixed": "Misto", + "source_to_concepts": "Source para Conceitos", + "source_to_mappings": "Source para Mapeamentos", + "raw": "Bruto", + "translation": "Tradução", + "transform": "Transformar", + "remove_selected": "Remover Selecionados", + "remove_confirm_title": "Remover {{count}} {{reference}}?", + "remove_confirm_body": "Isso removerá {{summary}} da expansão da coleção.", + "remove_confirm_body_selected": "Isso removerá a(s) referência(s) selecionada(s) da expansão da coleção.", + "not_available_in_version": "Não disponível em versões salvas. Mude para HEAD para editar.", + "remove_success": "Referências removidas com sucesso.", + "actions": "Ações", + "transform_to_non_versioned": "Transformar em referência não versionada", + "transform_confirm_title": "Transformar {{count}} referência(s)?", + "transform_confirm_body": "Isso adicionará primeiro referências de substituição não versionadas, então removerá as referências fixadas antigas após a adição ter sucesso.", + "transform_references": "Transformar referências", + "transform_success": "{{count}} referência(s) transformada(s) com sucesso.", + "transform_partial_success": "{{transformed}} referência(s) transformada(s). {{failed}} referência(s) não puderam ser transformadas e foram deixadas inalteradas.", + "transform_no_eligible": "Nenhuma das referências selecionadas pode ser transformada em referências não versionadas.", + "transform_no_references_changed": "Nenhuma referência foi transformada.", + "transform_delete_failed": "{{count}} referência(s) não versionada(s) foram adicionadas, mas as referências fixadas antigas não puderam ser removidas. Atualize e revise a lista de referências para duplicatas.", + "already_non_versioned": "Já não versionado", + "unsupported_transform": "Não suportado", + "new_expression": "Nova Expressão", + "brought_in_by": "Trazido por", + "brought_in_by_tooltip": "Este {{resource}} aparece nesta expansão de coleção como resultado destas referências.", + "no_references_found": "Nenhuma referência encontrada.", + "remove_from_collection": "Remover da coleção", + "remove_concept_confirm_title": "Remover conceito da coleção?", + "remove_concept_confirm_body": "Este conceito é trazido pela(s) seguinte(s) referência(s). Removê-lo excluirá essas referências da coleção.", + "remove_mapping_confirm_title": "Remover mapeamento da coleção?", + "remove_mapping_confirm_body": "Este mapeamento é trazido pela(s) seguinte(s) referência(s). Removê-lo excluirá essas referências da coleção.", + "advanced": "Avançado", + "hide_advanced": "Ocultar avançado", + "transform_tooltip": "Converte a referência em referência(s) extensional(is). Referências para conceitos ou mapeamentos resolvidos serão armazenadas como referências extensional(is) individuais em vez de referência(s) intensional(is).", + "add_references": "Adicionar Referências", + "add_reference": "Adicionar Referência", + "source_or_collection": "Source / Coleção", + "search_sources_collections": "Buscar sources e coleções...", + "group_collections": "Coleções", + "group_sources": "Sources", + "type_to_search": "Digite pelo menos 2 caracteres para buscar", + "open_repo": "Abrir {{name}}", + "resolves_to": "Resolve para {{version}}.", + "latest_released": "última versão publicada", + "pin_to_version": "Fixar em uma versão específica", + "include_exclude": "Incluir / Excluir", + "include": "Incluir", + "add_by_ids": "Adicionar por ID(s)", + "concept_ids": "IDs de Conceitos", + "mapping_ids": "IDs de Mapeamentos", + "select_source_first": "Selecione um Source ou coleção acima para usar Adicionar por ID(s)", + "id_helper": "Cada ID se torna {{path}}{id}/", + "expression_hint": "Expressão completa da referência. Preenchida a partir do seletor de Source/coleção acima; edite conforme necessário.", + "adding_references": "Adicionando referências…", + "request_failed": "Requisição falhou — verifique sua conexão de rede e tente novamente." + }, + "checksums": { + "standard": "Checksum Padrão", + "smart": "Checksum Inteligente" + }, + "repo": { + "repos": "Repositórios", + "repo": "Repositório", + "new_repo": "Novo Repositório", + "repo_type": "Tipo de Repositório", + "source_type": "Tipo de Source", + "collection_type": "Tipo de Coleção", + "edit_version": "Editar Versão", + "repo_id": "ID do Repositório", + "repo_version": "Versão do Repo", + "latest_version": "Última versão", + "add_concept": "Adicionar Conceito", + "add_mapping": "Adicionar Mapeamento", + "source": "Source", + "collection": "Coleção", + "release_status": "Status de Publicação", + "release_version": "Publicar Versão", + "unrelease_version": "Despublicar Versão", + "compare_versions": "Comparar versões", + "compare_versions_and_expansions": "Comparar versões + expansões", + "compare_expansions_of_version": "Comparar expansões desta versão", + "compare": "Comparar", + "visibility": "Visibilidade", + "locales": "Localidades", + "locale": "Localidade", + "identifier": "Identificador", + "contact": "Contato", + "jurisdiction": "Jurisdição", + "publisher": "Publicador", + "purpose": "Finalidade", + "copyright": "Direitos autorais", + "content_type": "Tipo de Conteúdo", + "revision_date": "Data de Revisão", + "experimental": "Experimental", + "case_sensitive": "Diferencia maiúsculas/minúsculas", + "hierarchy_meaning": "Significado da Hierarquia", + "hierarchy": "Hierarquia", + "hierarchy_description": "Opcionalmente declare o conceito que é a raiz da hierarquia deste Source e o que o relacionamento pai/filho significa.", + "hierarchy_root": "Raiz da Hierarquia", + "hierarchy_root_help": "Deve ser um conceito neste Source", + "hierarchy_root_after_create_help": "Pode ser definido depois que este Source tiver conceitos", + "hierarchy_meaning_help": "Como o relacionamento pai/filho dos conceitos deste Source deve ser interpretado", + "compositional": "Composicional", + "version_needed": "Versão Necessária", + "meta": "Meta", + "short_code": "Código Curto", + "full_name": "Nome Completo", + "short_name": "Nome Curto", + "default_locale": "Localidade Padrão", + "supported_locales": "Localidades Suportadas", + "additional_meta_data": "Metadados Adicionais", + "publisher_information": "Informações do Publicador", + "autoid_concept_mnemonic": "Atribuição Automática de ID de Conceito", + "autoid_concept_external_id": "Atribuição Automática de ID Externo de Conceito", + "autoid_concept_name_external_id": "Atribuição Automática de ID Externo de Nome de Conceito", + "autoid_concept_description_external_id": "Atribuição Automática de ID Externo de Descrição de Conceito", + "autoid_mapping_mnemonic": "Atribuição Automática de ID de Mapeamento", + "autoid_mapping_external_id": "Atribuição Automática de ID Externo de Mapeamento", + "custom_validation_schema": "Schema de Validação Personalizado", + "compare_origin_version_disabled_tooltip": "Você deve selecionar uma versão mais antiga para comparar", + "compare_destination_version_disabled_tooltip": "Você deve selecionar uma versão mais nova para comparar", + "summary_active_concepts_from_total": "{{active}} conceitos ativos ({{retired}} aposentados)", + "summary_active_mappings_from_total": "{{active}} mapeamentos ativos ({{retired}} aposentados)", + "summary_released_versions_from_total": "{{released}} versões publicadas ({{unreleased}} não publicadas)", + "summary_concepts_references": "{{count}} referências de conceitos", + "summary_mappings_references": "{{count}} referências de mapeamentos", + "refresh_summary": "Atualizar resumo", + "repo_version_summary": "Resumo da Versão do Repositório", + "repo_summary_is_calculando": "Resumo do repositório está sendo calculado, por favor verifique novamente após algum tempo.", + "no_overview": "O proprietário não criou uma página de Visão Geral para este repositório", + "create_a_repo": "Criar um repositório", + "create_a_repo_description": "Repositórios são contêineres ou pastas para seu conteúdo. <0>Saiba mais.", + "create_source_description": "Um Source é usado para criar e editar conceitos e mapeamentos.", + "create_source_subtext": "Criar e editar conceitos e mapeamentos", + "create_collection_description": "Uma Coleção é um conjunto curado de conceitos e mapeamentos de um ou mais Sources.", + "create_collection_subtext": "Curar conjuntos de conceitos de um ou mais Sources", + "create_code_system_description": "Um Code System é uma representação compatível com FHIR de um Source.", + "create_code_system_subtext": "Code system compatível com FHIR", + "create_value_set_description": "Um Value Set é uma representação compatível com FHIR de uma coleção.", + "create_valueset_subtext": "Value set compatível com FHIR", + "create_concept_map_description": "Um Concept Map é um conjunto compatível com FHIR de mapeamentos de conceitos.", + "create_concept_map_subtext": "Concept map compatível com FHIR", + "code_system": "Code System", + "valueset": "Value Set", + "concept_map": "Concept Map", + "locked_date": "Data Travada", + "edit_repo": "Editar Repositório", + "error_update": "Não foi possível atualizar o repo", + "error_create": "Não foi possível criar o repo", + "success_update": "Repo atualizado com sucesso", + "success_create": "Repo criado com sucesso", + "success_delete": "Repo excluído com sucesso", + "success_delete_version": "Versão do repo excluída com sucesso", + "success_version_create": "Versão criada com sucesso", + "success_version_update": "Versão atualizada com sucesso", + "error_version_create": "Não foi possível criar a versão", + "error_version_update": "Não foi possível atualizar a versão", + "versions_expansions": "Versões + Expansões", + "versions": "Versões", + "unreleased": "Não Publicado", + "explore_version": "Explorar Versão", + "export_version": "Exportar Versão", + "external_exports": "Exportações Externas", + "changelog": "Changelog", + "compare_with_previous": "Comparar com Anterior", + "recompute_summary": "Recalcular Resumo", + "summary_request_queued": "Solicitação de resumo enfileirada.", + "summary_request_submitted": "Solicitação de resumo enviada.", + "reindex_concepts": "Reindexar Conceitos", + "reindex_mappings": "Reindexar Mapeamentos", + "reindex_dialog_title": "{{label}}: {{repoId}}", + "reindex_confirm_message": "Tem certeza de que deseja reindexar {{contentType}} para {{repoId}}?", + "reindex_scheduled": "Tarefa {{id}} foi agendada.", + "reindex_scheduled_no_id": "Solicitação de reindexação enviada.", + "reindex_already_in_progress": "Uma reindexação já está em andamento para esta versão. Por favor, aguarde.", + "reindex_in_progress_tooltip_with_id": "Reindexação em andamento (ID da Tarefa: {{id}})", + "reindex_in_progress_tooltip": "Reindexação já em andamento. Por favor, aguarde.", + "no_versions_found": "Nenhuma versão encontrada.", + "source_version_count": "{{count}} versão de Source", + "source_versions_count": "{{count}} versões de Source", + "mapper": "Mapper", + "export_source_version_title": "Exportar Versão do Source: {{repo}} / {{version}}", + "export_collection_version_title": "Exportar Versão da Coleção: {{repo}} / {{version}}", + "could_not_check_export": "Não foi possível verificar a exportação.", + "could_not_queue_export": "Não foi possível enfileirar a exportação.", + "export_already_exists": "Uma exportação já existe para esta versão.", + "export_request_queued": "Solicitação de exportação enfileirada.", + "checking_export_status": "Verificando status da exportação...", + "downloaded_cached_export": "Exportação em cache baixada.", + "cached_export_generating": "Uma exportação em cache está sendo gerada. Verifique novamente mais tarde.", + "export_request_queued_check_later": "Solicitação de exportação enfileirada. Verifique novamente mais tarde.", + "export_already_exists_try_again": "Uma exportação já existe. Tente baixar novamente.", + "no_cached_export": "Não há exportação em cache para esta versão de Source.", + "queue_export": "Enfileirar Exportação", + "could_not_download_external_export": "Não foi possível baixar a exportação externa.", + "external_export_required": "Nome e arquivo da exportação externa são obrigatórios.", + "external_export_uploaded": "Exportação externa carregada.", + "could_not_upload_external_export": "Não foi possível carregar a exportação externa.", + "external_export_deleted": "Exportação externa excluída.", + "could_not_delete_external_export": "Não foi possível excluir a exportação externa.", + "confirm_delete_external_export_title": "Excluir Exportação Externa", + "confirm_delete_external_export_message": "Tem certeza de que deseja excluir \"{{key}}\"? Isso não pode ser desfeito.", + "existing_external_export": "Exportação Externa Existente", + "external_exports_title": "Exportações Externas: {{repo}} / {{version}}", + "no_external_exports": "Nenhuma exportação externa foi carregada para esta versão.", + "upload_external_export": "Carregar Exportação Externa", + "choose_file": "Escolher Arquivo", + "external_export_file_types": "sql, zip, pdf, csv", + "uploading": "Carregando...", + "could_not_load_changelog": "Não foi possível carregar o changelog.", + "large_sources_take_a_while": "Sources grandes podem levar um tempo para processar.", + "copied_version_url": "URL da versão copiada.", + "expansion": "Expansão", + "expansions": "Expansões", + "versions_expansions_subtitle": "HEAD, versões publicadas e suas expansões", + "autoexpand": "Auto-expandir", + "expansion_url": "URL da Expansão", + "version_url": "URL da Versão", + "previous_version_url": "URL da Versão Anterior", + "canonical_url": "URL Canônica", + "autoexpand_head": "AutoExpandir HEAD", + "immutable": "Imutável", + "ocl_repo_url": "URL do Repo OCL", + "ocl_repo_url_help": "Uma URL de repo de qualquer servidor OCL (ex.: https://app.openconceptlab.org/#{{example}}) ou uma URL relativa deste servidor (ex.: {{example}})", + "invalid_repo_url": "Insira uma URL de repo OCL válida", + "create_version": "Criar Versão", + "new_version": "Nova Versão", + "new_expansion": "Nova Expansão", + "show_expansions": "Mostrar expansões ({{count}})", + "expansions_processing": "Expansões processando ({{count}})", + "hide_expansions": "Ocultar expansões", + "default_expansion_label": "Padrão: {{expansion}}", + "expansion_dropdown_label": "Expansão: {{mnemonic}}", + "expansion_already_selected_other_side": "Já selecionado no outro lado", + "edit_description": "Editar descrição", + "stale": "Desatualizado", + "stale_count": "{{count}} desatualizado(s)", + "expansions_for_version": "Para a versão {{version}}", + "no_description": "Sem descrição", + "no_expansions_yet": "Nenhuma expansão ainda", + "no_expansions_message": "Esta versão de coleção não tem expansões ainda.", + "create_first_expansion": "Criar Primeira Expansão", + "set_as_default": "Definir como padrão", + "update_metadata": "Atualizar metadados", + "create_similar": "Criar similar", + "create_similar_disclaimer": "Apenas os metadados do repositório são copiados. Conceitos, mapeamentos e versões não são copiados.", + "id_auto_assignment": "Atribuição Automática de ID", + "id_auto_assignment_description": "Configure a atribuição de ID para Conceitos e Mapeamentos", + "id_auto_assignment_openmrs_hint": "OpenMRS recomenda selecionar 'Sequencial' para IDs e 'UUID' para IDs Externos", + "ids": "IDs", + "external_ids": "IDs Externos", + "auto_id_manual": "Inserir Manualmente", + "auto_id_manual_description": "O ID deve ser inserido manualmente cada vez que você criar um novo recurso.", + "auto_id_uuid": "UUID", + "auto_id_uuid_description": "O ID é atribuído automaticamente no formato UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "auto_id_sequential": "Sequencial", + "auto_id_sequential_description": "O ID é atribuído automaticamente em formato numérico, aumentando em 1 para cada novo recurso. Você pode escolher com qual número começar.", + "auto_id_start_from": "Começar De", + "autoid_concept_mnemonic_help": "Isto determina se um ID é atribuído automaticamente a novos conceitos.", + "autoid_mapping_mnemonic_help": "Isto determina se um ID é atribuído automaticamente a novos mapeamentos.", + "autoid_concept_external_id_help": "Isto determina se um ID externo é atribuído automaticamente a novos conceitos. IDs Externos são opcionais mas podem ser úteis para IDs de outros sistemas.", + "autoid_mapping_external_id_help": "Isto determina se um ID externo é atribuído automaticamente a novos mapeamentos. IDs Externos são opcionais mas podem ser úteis para IDs de outros sistemas.", + "autoid_concept_name_external_id_help": "Isto determina se um ID externo é atribuído automaticamente a novos nomes de conceito. IDs Externos são opcionais mas podem ser úteis para IDs de outros sistemas.", + "autoid_concept_description_external_id_help": "Isto determina se um ID externo é atribuído automaticamente a novas descrições de conceito. IDs Externos são opcionais mas podem ser úteis para IDs de outros sistemas.", + "rebuild": "Reconstruir", + "rebuild_expansion": "Reconstruir Expansão", + "rebuild_expansion_message": "Isso reavaliará todas as referências nesta versão da coleção. Isso não pode ser desfeito.", + "rebuild_expansion_compare_message": "Você também pode criar uma expansão similar primeiro se quiser comparar resultados lado a lado.", + "collection_version_updated": "Versão da coleção atualizada.", + "unable_update_version_metadata": "Não foi possível atualizar metadados da versão.", + "default_expansion_updated": "Expansão padrão atualizada.", + "unable_set_default_expansion": "Não foi possível definir expansão padrão.", + "expansion_deleted": "Expansão excluída.", + "unable_delete_expansion": "Não foi possível excluir a expansão.", + "expansion_rebuild_accepted": "Reconstrução de expansão aceita.", + "unable_rebuild_expansion": "Não foi possível reconstruir a expansão.", + "opened_dependency_expansion": "Aberto a partir de uma notificação de dependência. Mostrando {{expansion}} na versão {{version}}.", + "opened_dependency_version": "Aberto a partir de uma notificação de dependência. Mostrando versão {{version}}.", + "created_by_at": "Criado", + "updated_by_at": "Atualizado", + "last_built_by": "Última construção por", + "collection_expansion": "Expansão de Coleção", + "concepts_and_mappings": "conceitos e mapeamentos", + "expansion_details_title": "Expansão: {{mnemonic}}", + "explicit_repo_versions": "Versões de Repo Explícitas", + "evaluated_repo_versions": "Versões de Repo Avaliadas", + "unresolved_repo_versions": "Versões de Repo Não Resolvidas", + "resolved_repo_versions": "Versões de Repo Resolvidas", + "resolved_repo_updates_available": "Novas versões estão disponíveis para algumas versões de repo resolvidas nesta expansão:", + "version": { + "vectorized_for_mapper": "Vetorização de conceitos está habilitada para esta versão do repositório", + "form": { + "id": { + "label": "ID", + "helper_text": "Caracteres alfanuméricos, @, hífens, pontos e sublinhados são permitidos." + }, + "new_title": "Nova Versão de {{resourceType}}: {{version}}", + "edit_title": "Editar Versão de {{resourceType}}: {{version}}" + }, + "update_dialog": { + "title": "Atualizar {{resourceType}}: {{resourceId}}", + "message": "Tem certeza de que deseja {{action}} este {{resourceType}} {{repoId}}?" + }, + "expansion_form": { + "new_title": "Nova Expansão: {{version}}", + "edit_title": "Editar Expansão: {{mnemonic}}", + "select_version": "Selecionar versão", + "collection_version": "Versão da Coleção", + "parameters": "Parâmetros", + "id_required": "ID é obrigatório", + "version_required": "Por favor, selecione uma versão de coleção.", + "created": "Expansão criada.", + "updated": "Expansão atualizada.", + "cleaned_values": "Valores limpos: {{values}}", + "format_hint": "Formato: {{format}}", + "parameters_fields": { + "filter": { + "label": "filtro", + "tooltip": "Adicionar critérios de busca" + }, + "activeOnly": { + "label": "activeOnly", + "tooltip": "Selecione isto para incluir apenas conceitos e mapeamentos não aposentados" + }, + "date": { + "label": "data", + "tooltip": "O filtro de data de revisão. Formato: AAAA, AAAA-MM, AAAA-MM-DD, ou timestamp completo" + }, + "count": { + "label": "contagem", + "tooltip": "Este parâmetro ainda não é suportado." + }, + "offset": { + "label": "deslocamento", + "tooltip": "Este parâmetro ainda não é suportado." + }, + "includeDesignations": { + "label": "includeDesignations", + "tooltip": "Este parâmetro ainda não é suportado." + }, + "includeDefinition": { + "label": "includeDefinition", + "tooltip": "Este parâmetro ainda não é suportado." + }, + "excludeNested": { + "label": "excludeNested", + "tooltip": "Este parâmetro ainda não é suportado." + }, + "excludeNotForUI": { + "label": "excludeNotForUI", + "tooltip": "Este parâmetro ainda não é suportado." + }, + "excludePostCoordinated": { + "label": "excludePostCoordinated", + "tooltip": "Este parâmetro ainda não é suportado." + }, + "exclude-system": { + "label": "exclude-system", + "tooltip": "URL canônica com versão opcional para excluir da expansão" + }, + "system-version": { + "label": "system-version", + "tooltip": "URL canônica com versão opcional para forçar ao resolver um sistema" + }, + "check-system-version": { + "label": "check-system-version", + "tooltip": "Este parâmetro ainda não é suportado." + }, + "force-system-version": { + "label": "force-system-version", + "tooltip": "Este parâmetro ainda não é suportado." + } + } + } + }, + "delete_repo": "Excluir Repo", + "delete_accepted": "Exclusão de Repo Aceita. Isso pode levar alguns minutos.", + "delete_repo_version": "Excluir Versão do Repo", + "delete_accepted_version": "Exclusão de Versão do Repo Aceita. Isso pode levar alguns minutos.", + "properties": "Propriedades", + "property": "Propriedade", + "filters": "Filtros", + "version_changelog_request_accepted": "Solicitação de comparação de versões aceita, por favor volte em alguns minutos.", + "select_expansions_to_compare": "Selecione uma expansão para ambas as versões para comparar conteúdo.", + "select_different_version_or_expansion": "Esta versão e expansão são idênticas em ambos os lados. Escolha uma expansão ou versão diferente para ver uma comparação.", + "select_different_version": "Esta versão é idêntica em ambos os lados. Escolha uma versão diferente para ver uma comparação.", + "no_content_differences": "Nenhuma diferença foi encontrada entre estas duas versões.", + "properties_filters_subheader": "Propriedades do Repositório", + "additional_metadata_filters_subheader": "Metadados Adicionais", + "stage_seeded_concepts": "Conceitos semeados", + "stage_seeded_mappings": "Mapeamentos semeados", + "stage_indexed_concepts": "Conceitos indexados", + "stage_indexed_mappings": "Mapeamentos indexados", + "stage_exported": "Exportado", + "stage_changelog": "Changelog", + "export_time": "Tempo de exportação", + "copy_task_id": "Copiar ID da tarefa", + "copied_task_id": "ID da tarefa copiado para a área de transferência", + "processing_summary": "Processando — {{completed}} de {{total}} concluído", + "processing_failed_summary": "Processamento falhou — {{completed}} de {{total}} concluído", + "processing_progress_short": "Processando {{completed}}/{{total}}", + "processing_stage_caption": "{{stage}} · {{completed}}/{{total}}", + "processing_flag_tooltip": "Clique para ver estágios de processamento e IDs de tarefas", + "processing_listing_warning": "Esta versão ainda está processando. {{resource}} mostrado aqui pode estar incompleto.", + "processing_listing_failed": "Processamento falhou para esta versão. {{resource}} mostrado aqui pode estar incompleto.", + "view_processing_details": "Ver detalhes", + "action_disabled_while_processing": "Indisponível enquanto esta versão está processando", + "action_disabled_until_seeded": "Disponível quando conceitos e mapeamentos terminarem de semear", + "action_disabled_until_changelog_ready": "Disponível quando o changelog terminar de calcular", + "clear_processing": "Limpar Processamento", + "clear_processing_title": "{{resourceType}}: {{resourceId}}", + "clear_processing_confirmation": "Tem certeza de que deseja limpar o estado de processamento para esta versão?", + "clear_processing_message": "Isso apenas limpa os IDs de tarefas em segundo plano que a versão está rastreando. Não para nenhuma tarefa que esteja genuinamente ainda em execução, e não muda o conteúdo da versão.", + "clear_processing_not_processing": "Esta versão não está atualmente marcada como processando.", + "clear_processing_confirm_button": "Limpar estado de processamento", + "processing_cleared": "Estado de processamento limpo", + "could_not_clear_processing": "Não foi possível limpar o estado de processamento", + "export_not_ready_tooltip": "Exportação ainda está sendo gerada para esta versão", + "expansion_processing_tooltip": "Esta expansão ainda está sendo construída", + "suggested_sources": "Sources Sugeridos" + }, + "org": { + "my": "Minhas Organizações", + "orgs": "Organizações", + "org": "Organização", + "about_the_org": "Sobre a Organização", + "members": "Membros", + "member": "Membro", + "edit_members": "Editar Membros", + "updated_members": "Membros Atualizados", + "member_add_failed": "Não foi possível adicionar {{user}}: {{detail}}", + "member_remove_failed": "Não foi possível remover {{user}}: {{detail}}", + "org_have_not_created_public_repos_suffix": "não criaram nenhum repositório público", + "browse_members": "Navegar membros", + "member_of": "Membro de", + "create_an_org": "Criar uma Organização", + "create_an_org_description": "Organize seu conteúdo e colaboradores. <0> Saiba mais sobre Organizações no OCL.", + "edit_org": "Editar Organização", + "error_update": "Não foi possível atualizar a organização", + "error_create": "Não foi possível criar a organização", + "success_update": "Organização atualizada com sucesso", + "success_create": "Organização criada com sucesso", + "delete_org": "Excluir Organização", + "delete_accepted": "Exclusão de Organização Aceita. Isso pode levar alguns minutos." + }, + "user": { + "users": "Usuários", + "user": "Usuário", + "my_profile": "Meu Perfil", + "my_repositories": "Meus Repositórios", + "my_organizations": "Minhas Organizações", + "my_bookmarks": "Meus Favoritos", + "my_mapping_projects": "Meus Projetos de Mapeamento", + "username": "Nome de usuário", + "password": "Senha", + "joined_on": "Entrou em", + "email": "E-mail", + "company_name": "Nome da Empresa", + "location": "Localização", + "last_login": "Último Login", + "edit_my_profile": "Editar meu perfil", + "name_and_description": "Nome e descrição", + "login_and_security": "Login e segurança", + "first_name": "Primeiro Nome", + "last_name": "Último Nome", + "company": "Empresa", + "email_address": "Endereço de E-mail", + "profile_update_success": "Perfil atualizado com sucesso", + "profile_update_failure": "Ocorreu um erro ao atualizar o perfil.", + "copy_api_token": "Copiar token da API", + "copy_token_success": "Token copiado para sua área de transferência", + "your": "Seu", + "avatar": "Avatar", + "update_avatar": "Atualizar seu avatar", + "bio": "Bio curta", + "about_me": "Sobre mim", + "about_me_description": "Crie uma introdução para quem visita seu perfil (200 caracteres).", + "user_has_not_created_public_repos_suffix": "não criou nenhum repositório público", + "recent_activity": "atividade recente", + "own_recent_activity": "Sua atividade recente", + "recent_activity_of": "Atividade recente de {{name}}" + }, + "search": { + "filters": "Filtros", + "concepts": "Conceitos", + "mappings": "Mapeamentos", + "references": "Referências", + "repos": "Repositórios", + "orgs": "Organizações", + "users": "Usuários", + "sort_by": "Ordenar por", + "display": "Exibir", + "loading": "Refinando seus resultados de busca...", + "no_results": "Não encontramos correspondências para ", + "input_placeholder_drawer": "Digite um termo de busca ou toque / para opções", + "input_placeholder": "Buscar no OCL...", + "select_a_filter": "Selecione um filtro com as teclas /", + "filter": "Filtrar", + "filtered_by": "filtrado por", + "class": "Classe", + "map_type": "Tipo de Mapeamento", + "bookmarked_organizations": "Organizações favoritas", + "following_organizations": "Organizações que segue", + "no_organizations_found": "Nenhuma organização encontrada", + "bookmarked_repositories": "Repositórios favoritos", + "following_repositories": "Repositórios que segue", + "no_repositories_found": "Nenhum repositório encontrado", + "bookmarked_users": "Usuários favoritos", + "following_users": "Usuários que segue", + "no_users_found": "Nenhum usuário encontrado", + "table": "Tabela", + "card": "Cartão", + "hierarchy": "Hierarquia", + "search_all_site": "Buscar em todo o OCL para ", + "search_this_repository": "Buscar neste repositório", + "search_this_url_registry": "Buscar neste registro de URL para ", + "search_all_concepts": "Buscar todos os conceitos", + "url_registry": "entradas", + "confidence": "Confiança", + "score": "Pontuação", + "search_highlight": "Destaque da Busca", + "save_default_filters": "Salvar como Filtros Padrão", + "reset_default_filters": "Redefinir para Filtros Padrão", + "reset_default_filters_tooltip": "Descartar filtros aplicados e voltar aos filtros padrão salvos", + "default_filters_menu_tooltip": "Opções de filtro padrão", + "clear_filters_tooltip": "Remover todos os filtros aplicados", + "clear_filters_with_defaults_tooltip": "Remover todos os filtros aplicados incluindo os filtros padrão", + "select_all": "Selecionar todos", + "select_all_concepts": "Selecionar todos os conceitos", + "select_all_mappings": "Selecionar todos os mapeamentos", + "select_all_references": "Selecionar todas as referências", + "select_all_repos": "Selecionar todos os repositórios", + "select_all_orgs": "Selecionar todas as organizações", + "select_all_users": "Selecionar todos os usuários" + }, + "url_registry": { + "url_registry": "Registro de URL Canônica", + "registry_owner": "Proprietário do Registro", + "global": "Global", + "global_registry": "Registro Global", + "test_canonical_url": "Testar uma URL Canônica", + "add_entry": "Adicionar URL Canônica", + "test_canonical_url_description": "Digite uma URL canônica para testar como o OCL a resolverá em um namespace específico, como seu espaço de trabalho de usuário ou uma organização da qual você é membro. Use isso para simular como o OCL avaliará referências e mapeamentos em seus repositórios. <0>Saiba mais no OCL Docs", + "canonical_url": "URL Canônica", + "resolve_success_with_entry": "{{url}} resolvido para <0/> em <1/> usando uma entrada no <2/> Registro", + "resolve_success_without_entry": "{{url}} resolvido para <0/> em <1/> por correspondência com um repositório no <2/>", + "resolve_failed_with_entry": "{{url}} correspondeu a uma entrada no <0/> Registro mas não resolveu para um repositório", + "resolve_failed_without_entry": "{{url}} não correspondeu a uma entrada no <0/> Registro ou no Registro Global e não resolveu para um repositório", + "resolve_failed_without_entry_global": "{{url}} não correspondeu a uma entrada no Registro Global", + "target_owner": "Proprietário de Destino", + "view_canonical_url_registry": "Ver Registro de URL Canônica" + }, + "addToCollection": { + "title": "Adicionar à Coleção", + "adding_single": "Adicionando: {{name}} de {{source}}", + "adding_multiple": "Adicionando {{count}} conceitos", + "target_collection": "Coleção de Destino", + "no_editable_collections": "Nenhuma coleção editável encontrada", + "adding_reference": "Adicionando referência…", + "request_accepted": "Sua solicitação foi aceita e referências serão adicionadas em breve.", + "add_button": "Adicionar Referência", + "reference_header": "Referência", + "error_header": "Erro", + "no_references_added": "Nenhuma referência adicionada", + "add_to_collection": "Adicionar à Coleção" + }, + "import": { + "upload_file_tooltip": "Carregar Arquivo JSON/CSV/ZIP", + "upload_file_no_zip_tooltip": "Carregar Arquivo JSON/CSV", + "json_data_tooltip": "Enviar Dados JSON", + "url_tooltip": "Colar URL de Arquivo JSON/CSV/ZIP", + "npm_tooltip": "Importar pacote NPM", + "queue_id_label": "ID da Fila", + "queue_id_placeholder": "ex.: minha-fila", + "queue_id_helper_text": "Imports que compartilham o mesmo ID da fila são processados em sequência", + "update_if_exists_label": "Atualizar se Existir", + "update_if_exists_helper_text": "Atualizar se conceito/mapeamento existente encontrado", + "hierarchy_helper_text": "Importante marcar isto se o conteúdo da importação tem hierarquia", + "file_url_label": "URL do Arquivo JSON/CSV/ZIP", + "owner_helper_text": "Determina o namespace onde os recursos importados devem ser criados", + "npm_package_name": "Nome do Pacote NPM", + "npm_package_version": "Versão do Pacote NPM", + "or_upload_package_file": "Ou carregar arquivo do pacote:", + "json_data_label": "Dados JSON", + "size_limit_helper": "Até {{limit}} por importação", + "file_too_large": "Este arquivo é maior que seu limite de importação de {{limit}}.", + "new_import_footer": "OCL processa importação em massa assincronamente. Uma importação em massa pode incluir criações, atualizações ou exclusões para múltiplos proprietários e repositórios. <0>Leia Mais...", + "provide_npm_name_and_version": "Forneça nome e versão do pacote NPM para ser buscado no <0>Registro de Pacotes FHIR:", + "existing_imports": "Importações Existentes", + "result_expiry_message": "Resultados expirarão após <0>72 horas a partir do horário de início da tarefa", + "filter_tooltip": "Filtrar por fila ou status", + "refresh_list_tooltip": "Atualizar Lista", + "search_placeholder": "Buscar por ID da tarefa, status ou nome da fila...", + "filter_by_date_tooltip": "Filtrar por data", + "statuses": "Status", + "queues": "Filas", + "result_expired": "Resultado Expirado", + "received": "Recebido", + "queue": "Fila", + "download_report": "Baixar Relatório", + "task_id": "ID da Tarefa", + "started": "Iniciado", + "runtime": "Tempo de Execução", + "failed": "Falhou", + "retries": "Tentativas", + "revoked": "Revogado", + "exception": "Exceção", + "result": "Resultado", + "args": "Args", + "sub_tasks": "Sub-tarefas" + }, + "cloneToSource": { + "title": "Clonar Conceito(s) para Source", + "clone_to_source": "Clonar para Source", + "description": "Esta operação clonará o(s) conceito(s) selecionado(s), mais quaisquer respostas ou membros de conjunto, seguindo recursivamente os mapeamentos especificados. Conceitos já presentes no Source de destino são ignorados.", + "target_source": "Source de Destino", + "no_sources": "Nenhum Source encontrado", + "advanced_settings": "Configurações avançadas", + "advanced_caution": "Cuidado: alterar estas configurações pode resultar em uma clonagem incompleta (ex.: respostas ou membros de conjunto faltando).", + "origination_sources": "Source(s) de Originação", + "destination_source": "Source de Destino", + "summary": "{{count}} conceito(s) selecionado(s) serão clonados em", + "cloning": "Clonando conceito(s)…", + "clone_button": "Clonar", + "clone_finished": "Clonagem finalizada. Veja a coluna de resultados para detalhes.", + "preview_api_call": "Visualizar chamada da API", + "hide_api_call": "Ocultar chamada da API", + "same_source_warning": "Mesmo Source do destino. Nada será clonado.", + "preview_header": "Visualização", + "results_header": "Resultados", + "preview_title": "Visualização", + "preview_tooltip": "Visualizar o que será clonado", + "preview_result_tooltip": "Visualizar conceito clonado", + "concepts_count": "Conceitos ({{count}})", + "mappings_count": "Mapeamentos ({{count}})", + "no_concepts": "Nenhum conceito", + "no_mappings": "Nenhum mapeamento", + "cloned_count": "{{count}} clonado(s)", + "nothing_cloned": "Nada clonado", + "failed": "Falhou", + "back": "Voltar", + "cascade_levels": "Níveis de Cascata", + "map_types": "Tipos de Mapeamento", + "exclude_map_types": "Excluir Tipos de Mapeamento", + "return_map_types": "Retornar Tipos de Mapeamento", + "equivalency_map_type": "Tipo de Mapeamento de Equivalência", + "map_types_placeholder": "ex.: Q-AND-A,CONCEPT-SET", + "equivalency_map_type_placeholder": "ex.: SAME-AS,CONCEPT-SET" + }, + "sort": { + "source": "Source", + "most_relevant": "Mais relevantes", + "newest_first": "Mais recentes primeiro", + "oldest_first": "Mais antigos primeiro", + "recently_joined": "Ingressaram recentemente", + "longest_member": "Membro mais antigo", + "a_z": "A-Z", + "z_a": "Z-A", + "num_asc": "0-9", + "num_desc": "9-0", + "tooltip_a_z": "Ordenar por {{field}}, A a Z", + "tooltip_z_a": "Ordenar por {{field}}, Z a A", + "tooltip_num_asc": "Ordenar por {{field}}, menor número primeiro", + "tooltip_num_desc": "Ordenar por {{field}}, maior número primeiro", + "clear": "Limpar Ordenação" + }, + "announcement": { + "title": "Bem-vindo à prévia pública do novo OCL TermBrowser v3!", + "text": "Seu conteúdo já está aqui, e você pode voltar para o TBv2 a qualquer momento.", + "link_label": "Saiba mais", + "dismiss": "Dispensar" + }, + "quota": { + "title_quota": "Você atingiu sua cota", + "title_cap": "Você atingiu seu limite", + "title_limit": "Isso está acima do seu limite", + "your_plan": "Seu plano", + "used_of": "{{used}} de {{limit}} usado(s)", + "requested_of": { + "generic": "{{requested}} solicitado(s), limite {{limit}}", + "import_file_size": "{{requested}} KB, limite {{limit}} KB", + "clone_resources": "Mais de {{limit}} conceitos e mapeamentos" + }, + "period_one_time": "Permissão de prévia única", + "request_more_access": "Solicitar mais acesso", + "view_pricing": "Ver preços", + "meter": { + "match_operations": "Operações de correspondência", + "ai_assistant_calls": "Chamadas do Assistente de IA do OCL", + "ai_assistant_change_comments": "Comentários de atualização do Assistente de IA do OCL", + "projects": "Projetos de Mapeamento", + "rows": "Linhas por projeto", + "import_file_size": "Tamanho da importação", + "clone_resources": "Conceitos e mapeamentos por clonagem", + "generic": "Uso" + }, + "consequence": { + "generic": "Alguns recursos estão pausados até que sua permissão seja aumentada.", + "ai_assistant_calls": { + "default": "Recursos que usam o Assistente de IA do OCL estão pausados.", + "auto_match": "Correspondência Automática continuará rodando sem recomendações do Assistente de IA do OCL." + }, + "ai_assistant_change_comments": { + "default": "Você ainda pode escrever o comentário de atualização sozinho, sem um rascunho do Assistente de IA do OCL.", + "tbv3_change_comment": "Você ainda pode escrever o comentário de atualização sozinho, sem um rascunho do Assistente de IA do OCL." + }, + "match_operations": { + "default": "Correspondência está pausada.", + "auto_match": "Você ainda pode revisar, editar e exportar seus projetos, mas a Correspondência Automática está pausada.", + "tbv3_match": "Busca continuará funcionando, mas $match com Busca Semântica do OCL está pausado." + }, + "projects": { + "default": "Seus projetos existentes permanecem abertos; delete um para liberar um espaço para um novo.", + "new_project": "Seus projetos existentes permanecem abertos; delete um para liberar um espaço para um novo." + }, + "rows": { + "default": "Linhas além do seu limite permanecem no projeto mas não são correspondidas.", + "import": "Linhas além do seu limite permanecem no projeto mas não são correspondidas." + }, + "import_file_size": { + "default": "Divida o arquivo em importações menores, ou solicite mais acesso." + }, + "clone_resources": { + "default": "Clone um conceito mais estreito ou menos níveis de cascata, ou solicite mais acesso." + } + } + } +} \ No newline at end of file diff --git a/src/i18n/locales/zh/translations.json b/src/i18n/locales/zh/translations.json index abe4d43b3..de5626299 100644 --- a/src/i18n/locales/zh/translations.json +++ b/src/i18n/locales/zh/translations.json @@ -544,7 +544,9 @@ "about_me": "关于我", "about_me_description": "创建用于他人访问您的个人资料时阅读的简介(200 个字符)。", "user_has_not_created_public_repos_suffix": "尚未创建任何公开的存储库", - "recent_activity": "最近的活动" + "recent_activity": "最近的活动", + "own_recent_activity": "您的近期活动", + "recent_activity_of": "{{name}} 的近期活动" }, "reference": { "actions": "操作",