diff --git a/authentication/templates/emails/activation_email.html b/authentication/templates/emails/activation_email.html index f8ee8e7c49..7f61fd8ef4 100644 --- a/authentication/templates/emails/activation_email.html +++ b/authentication/templates/emails/activation_email.html @@ -151,12 +151,12 @@ -
Hello {{ username }},
+
Hello {{ username }},
-
{% blocktrans %} Thanks for signing up! {% endblocktrans %}

{% blocktrans %} By completing your registration, you acknowledge and agree to Metaculus's terms of use and privacy policy. {% endblocktrans %}

+
{% blocktrans %} Thanks for signing up! {% endblocktrans %}

{% blocktrans %} By completing your registration, you acknowledge and agree to Metaculus's terms of use and privacy policy. {% endblocktrans %}

{% blocktrans %} Please click here to complete your registration and activate your account. {% endblocktrans %}

{% blocktrans %} Alternatively, you can copy and paste the following link into a browser: {% endblocktrans %}
{{ activation_link }} @@ -185,7 +185,7 @@ -

{% blocktrans %} Happy Predicting,
The Metaculus Team {% endblocktrans %}
+
{% blocktrans %} Happy Predicting,
The Metaculus Team {% endblocktrans %}
diff --git a/authentication/templates/emails/password_reset.html b/authentication/templates/emails/password_reset.html index c2689d72ec..a9b4065838 100644 --- a/authentication/templates/emails/password_reset.html +++ b/authentication/templates/emails/password_reset.html @@ -151,12 +151,12 @@ -
Hello {{ username }},
+
Hello {{ username }},
-
{% blocktrans %} We have received a request to reset the password associated with your account. To sign in and choose a new password, click here. If you did not make this request, you can safely ignore this email. {% endblocktrans %}

{% blocktrans %} Alternatively, copy and paste the following link into a browser to reset your password: {% endblocktrans %}
+

{% blocktrans %} We have received a request to reset the password associated with your account. To sign in and choose a new password, click here. If you did not make this request, you can safely ignore this email. {% endblocktrans %}

{% blocktrans %} Alternatively, copy and paste the following link into a browser to reset your password: {% endblocktrans %}
{{ reset_link }}

@@ -183,7 +183,7 @@ -
{% blocktrans %} Happy Predicting,
The Metaculus Team {% endblocktrans %}
+
{% blocktrans %} Happy Predicting,
The Metaculus Team {% endblocktrans %}
diff --git a/front_end/messages/es.json b/front_end/messages/es.json new file mode 100644 index 0000000000..8c0a18136b --- /dev/null +++ b/front_end/messages/es.json @@ -0,0 +1,754 @@ +{ + "newsletterFormHeading": "Únete a Nuestro Boletín", + "newsletterFormDescription": "Suscríbete para recibir noticias de Metaculus, informes especiales de pronósticos e invitaciones a eventos.", + "predict": "Predecir", + "saveChange": "Guardar Cambios", + "rescalePrediction": "Auto-sumar al 100%", + "signUpToPredict": "Regístrate para Predecir", + "logIn": "Iniciar sesión", + "logOut": "Cerrar sesión", + "tweetPrediction": "¡Tuitear Predicción!", + "postPredictionAsComment": "Publicar Predicción como Comentario", + "resolve": "Resolver", + "preview": "Vista previa", + "updatePreviewButton": "Actualizar Vista Previa", + "postButton": "Publicar", + "loadMoreButton": "Cargar Más", + "addComponentButton": "Añadir Componente", + "adminEditButton": "edición de admin", + "remove": "eliminar", + "removed": "eliminado", + "reply": "Responder", + "cancel": "Cancelar", + "edit": "Editar", + "report": "Reportar", + "delete": "Eliminar", + "copyLink": "Copiar Enlace", + "continueButton": "Continuar", + "submit": "Enviar", + "submitTagsFeedback": "Enviar Comentarios de Etiquetas", + "discardChangesButton": "Descartar Cambios", + "opens": "Abre", + "opened": "Abierto", + "closes": "Cierra", + "closed": "Cerrado", + "pending": "pendiente", + "resolves": "Resuelve", + "resolved": "Resuelto", + "scheduledResolution": "Resolución programada", + "forDiscussion": "para discusión", + "Submitted": "Enviado", + "inReview": "En Revisión", + "Deferred": "Aplazado", + "deleted": "Eliminado", + "Draft": "Borrador", + "Upcoming": "Próximo", + "Open": "Abierto", + "Closed": "Cerrado", + "Resolved": "Resuelto", + "image": "Imagen", + "resolutionAmbiguous": "Ambiguo", + "resolutionAnnulled": "Anulado", + "resolutionPending": "Resolución pendiente", + "resolution": "resolución", + "pendingResolution": "resolución pendiente", + "forecastTimelineHeading": "Cronología de Pronósticos", + "totalPredictionsLabel": "Total de Predicciones", + "totalForecastersLabel": "Total de Pronosticadores", + "communityPredictionLabel": "Predicción de la Comunidad", + "metaculusPredictionLabel": "Predicción de Metaculus", + "userPredictionLabel": "Predicción del Usuario", + "myPrediction": "Mi Predicción", + "myPredictionValue": "Mi Predicción: {forecastValue}", + "myCoverageLabel": "Mi Cobertura", + "predictionLabel": "Predicción", + "pdfLabel": "Densidad de Probabilidad", + "cdfLabel": "Probabilidad Acumulada", + "recencyWeighted": "Peso reciente", + "unweighted": "Sin peso", + "metaculus": "Metaculus", + "community": "comunidad", + "firstQuartile": "primer 25%", + "secondQuartile": "mediana", + "thirdQuartile": "tercer 75%", + "you": "tú", + "resolutionDescriptionBinary": "¿Esto realmente sucedió?", + "resolutionDescriptionMultipleChoice": "¿Cuál de estos realmente sucedió?", + "resolutionDescriptionContinuous": "¿Cuál fue el resultado final?", + "resolutionRelativeLogScore": "Mi puntaje logarítmico relativo:", + "resolutionAbsoluteLogScore": "Mi puntaje logarítmico absoluto:", + "communityAbsoluteLogScore": "Puntaje logarítmico absoluto de la Comunidad:", + "metaculusAbsoluteLogScore": "Puntaje logarítmico absoluto de Metaculus:", + "metaculusRelativeLogScore": "Puntaje logarítmico relativo de Metaculus:", + "questionWillOpenAt": "Esta pregunta abrirá {{date}}.", + "questionNotOpenYet": "Esta pregunta aún no está abierta para predicciones.", + "youMustLogInToComment": "debes iniciar sesión para comentar", + "commentsReadGuidelines": "Lee nuestras directrices", + "commentsLearnMarkdown": "Aprende sobre nuestro Markdown", + "commentDeleted": "Comentario eliminado", + "commentsReportCommentHeading": "Reportar este comentario", + "commentsReportCommentDescription": "¿Hay algo mal con este comentario? Ayúdanos a mantener nuestra comunidad en buen estado reportándolo.", + "commentsReportSpam": "Reportar como spam", + "commentsReportGuidelinesViolation": "Reportar por violar las directrices de la comunidad", + "commentsMyPrediction": "Mi predicción", + "commentsReportSubmittedMessage": "Reporte enviado, ¡gracias!", + "replied": "respondido", + "commented": "comentado", + "inReplyTo": "En respuesta a {author}", + "commentTooLateToUnvoteError": "No se pueden deshacer votos en comentarios de años anteriores", + "hide": "Ocultar", + "show": "Mostrar", + "showMore": "Mostrar más", + "showMoreTags": "Mostrar más etiquetas", + "showLess": "Mostrar menos", + "showMoreNews": "Mostrar más noticias", + "showMoreQuestions": "Mostrar más preguntas", + "showReplyWithCount": "mostrar {count} respuestas", + "hideReplyWithCount": "ocultar {count} respuestas", + "now": "ahora", + "weight": "peso", + "recent": "reciente", + "uniform": "uniforme", + "median": "mediana", + "mean": "media", + "scoreIfNo": "Puntaje si No", + "scoreIfYes": "Puntaje si Sí", + "ifNo": "si no", + "ifYes": "si sí", + "absoluteLogScore": "Puntaje Logarítmico Absoluto", + "brierScore": "Puntaje Brier", + "yes": "sí", + "no": "no", + "fanGraphFirstQuartileLabel": "Percentil 25", + "fanGraphSecondQuartileLabel": "Mediana", + "fanGraphThirdQuartileLabel": "Percentil 75", + "questionGroupTableFirstQuartileLabel": "25º", + "questionGroupTableSecondQuartileLabel": "mediana", + "questionGroupTableThirdQuartileLabel": "75º", + "finePrint": "Letra pequeña", + "hideSpoiler": "Ocultar spoiler", + "showSpoiler": "Mostrar spoiler", + "commentHidden": "Este comentario ha sido ocultado", + "notifyMe": "Notifícame", + "showCommunityPredictionByDefault": "Mostrar la Predicción de la Comunidad por defecto en preguntas abiertas", + "showCommunityPredictionIfPredicted": "Mostrar la Predicción de la Comunidad si has predicho", + "showCommunityPrediction": "Mostrar Predicción de la Comunidad", + "hideCommunityPrediction": "Ocultar Predicción de la Comunidad", + "viewMetaculusPrediction": "Ver Predicción de Metaculus", + "questionSearchPlaceholder": "buscar preguntas...", + "articlesSearchPlaceholder": "buscar artículos...", + "tagSearchPlaceholder": "buscar etiquetas...", + "searchFilterType": "Tipo", + "searchFilterForecastStatus": "Estado del Pronóstico", + "searchFilterParticipation": "Mi Participación", + "searchFilterOrderBy": "Ordenar Por", + "searchOptionAll": "Todo", + "searchOptionForecast": "Pronóstico", + "searchOptionDiscussion": "Discusión", + "searchOptionAllAccepted": "Todo Aceptado", + "searchOptionPending": "Pendiente", + "searchOptionDeferred": "Aplazado", + "searchOptionUnmoderated": "Sin moderar", + "searchOptionUpcoming": "Próximo", + "searchOptionOpen": "Abierto", + "searchOptionClosed": "Cerrado", + "searchOptionResolved": "Resuelto", + "searchOptionDraft": "Borrador", + "searchOptionAny": "Cualquiera", + "searchOptionPredicted": "Predicho", + "searchOptionNotPredicted": "No Predicho", + "searchOptionAuthored": "Autorizado", + "searchOptionUpvoted": "Votado positivamente", + "searchOptionPrivate": "Privado", + "searchOptionModerating": "Moderando", + "searchOptionActivity": "Actividad", + "searchOptionUpvotes": "Votos positivos", + "searchOptionNewest": "Más reciente", + "searchOptionRecentlyOpened": "Recientemente Abierto", + "searchOptionSoonestOpening": "Próximo a abrir", + "searchOptionSoonestClosing": "Próximo a cerrar", + "searchOptionRecentlyClosed": "Recientemente Cerrado", + "searchOptionSoonestResolving": "Próximo a resolverse", + "searchOptionRecentlyResolved": "Recientemente Resuelto", + "searchOptionOldestPrediction": "Predicción más antigua", + "searchOptionRelevance": "Relevancia", + "searchOptionFewestComments": "Menos comentarios", + "searchOptionDateSubmitted": "Fecha de envío", + "createdBy": "Creado por {{author}}", + "onDate": "el {{date}}", + "published": "Publicado", + "byAuthor": "Autor: {{author}}", + "estimatedReadingTime": "{minutes} min de lectura", + "predictions": "Predicciones", + "predictors": "Pronosticadores", + "relativeLog": "Log Relativo", + "unreadAll": "todo no leído", + "commentsWithCount": "{count, plural, =0 {sin comentarios} =1 {comentario} other {comentarios} }", + "or": "o", + "registrationHeadingPrediction": "Haz que tu predicción cuente", + "registrationHeadingSite": "Crea una Cuenta en Metaculus", + "registrationInfoParagraph1": "Regístrate como usuario de Metaculus y podrás:", + "registrationInfoParagraph2": "Puedes registrarte fácilmente por correo electrónico o redes sociales.", + "registrationInfoAbility1": "Llevar un registro de tus predicciones y construir un historial", + "registrationInfoAbility2": "Recibir notificaciones cuando cambien las predicciones que te importan", + "registrationInfoAbility3": "Unirte a la discusión con otros pronosticadores", + "registrationInfoAbility4": "Crear preguntas privadas para hacer un seguimiento de predicciones personales y, opcionalmente, compartirlas con tus amigos", + "registrationInfoAbility5": "Escribir nuevas preguntas públicas que quieras ver respondidas", + "registrationFacebook": "Continuar con Facebook", + "registrationGoogle": "Continuar con Google", + "registrationByEmail": "Registrarse", + "errorRequired": "campo requerido", + "errorMinLength": "{{field}} debe tener al menos {{minLength}} caracteres", + "errorMaxLength": "{{field}} debe tener como máximo {{maxLength}} caracteres", + "errorPasswordMatch": "las contraseñas deben coincidir", + "errorEmailInvalid": "correo electrónico no válido", + "errorGeneric": "Error, algo salió mal. Por favor, verifica tu conexión e inténtalo de nuevo o contáctanos en support@metaculus.com", + "registrationUsernamePlaceholder": "elige un nombre de usuario", + "passwordPlaceholder": "contraseña", + "registrationVerifyPasswordPlaceholder": "verificar contraseña", + "registrationEmailPlaceholder": "correo electrónico", + "registrationSignInHeading": "¿Ya tienes una cuenta?", + "loginSignUpHeading": "¿Aún no tienes una cuenta?", + "createAnAccount": "Regístrate", + "registrationSuccessHeading": "Correo de Activación Enviado", + "registrationSuccess1": "Gracias por crear una cuenta en Metaculus !", + "registrationSuccess2": "Se ha enviado un correo de activación a . Por favor, sigue el enlace dentro del correo para finalizar la creación de tu cuenta.", + "registrationTerms": "Al registrarte, reconoces y aceptas los Términos de Uso y la Política de Privacidad de Metaculus.", + "registrationTermsAgreement": "Estoy de acuerdo — continuar con el registro", + "loginFacebook": "Iniciar sesión con Facebook", + "loginGoogle": "Iniciar sesión con Google", + "loginUsernamePlaceholder": "nombre de usuario o correo electrónico", + "forgotPasswordLink": "¿Olvidaste tu contraseña?", + "passwordResetHeading": "Restablecer Contraseña", + "passwordResetDescription": "Ingresa tu nombre de usuario y te enviaremos un correo para restablecer tu contraseña.", + "resetPasswordButton": "Restablecer Contraseña", + "resetPasswordEmailSentHeading": "Correo de Restablecimiento de Contraseña Enviado", + "resetPasswordEmailSent1": "Tu solicitud de restablecimiento de contraseña ha sido procesada con éxito.", + "resetPasswordEmailSent2": "Se ha enviado un correo a la dirección registrada para esa cuenta. Por favor, sigue el enlace dentro del correo para restablecer tu contraseña.", + "newPasswordLabel": "nueva contraseña", + "verifyPasswordLabel": "verificar contraseña", + "metaculusSupporterHeading": "Soporte de Metaculus", + "supporterSinceHeading": "Soporte Desde", + "changeUsernameHeading": "Cambia tu nombre de usuario", + "changeUsernameDescription": "Puedes cambiar tu nombre de usuario una vez cada seis meses. Tu antiguo nombre de usuario se mostrará como un alias en tu perfil durante 30 días.", + "newUsernamePlaceholder": "nuevo nombre de usuario", + "confirmUsernamePlaceholder": "confirmar nombre de usuario", + "usernamesNotMatching": "los nombres de usuario no coinciden", + "projectContents": "Contenido del Proyecto", + "question": "Pregunta", + "created": "Creado", + "currentPasswordPlaceholder": "Ingresa la contraseña actual...", + "newPasswordPlaceholder": "Ingresa la nueva contraseña...", + "verifyPasswordPlaceholder": "Verificar nueva contraseña...", + "updatePasswordButton": "Actualizar Contraseña", + "passwordChangeSuccess": "contraseña cambiada con éxito", + "setReminderHeading": "Programar una notificación", + "remindWhen": "Activar", + "repeatingColumnTitle": "Repetición", + "repeatsNo": "No", + "repeatsYes": "Sí", + "remindOnDate": "El {{date}}", + "remindWhenOpens": "La pregunta se abre", + "remindWhenCPChanges": "La Predicción de la Comunidad cambia un 10%", + "remindWhenNeedsResolution": "La pregunta necesita resolución", + "remindWhenPrcLifetime": "{{percent}}% del tiempo de vida de la pregunta transcurrido", + "remindWhenTimeElapsed": "El {{date}}", + "noReminder": "(sin notificaciones programadas)", + "setReminderDescription": "Recibe notificaciones por correo electrónico cuando ocurran actualizaciones importantes.", + "selectTriggerLabel": "Seleccionar activador", + "reminderOptionDate": "En fecha", + "reminderOptionTimeElapsed": "Tiempo transcurrido", + "reminderOptionNewComments": "Nuevos comentarios", + "reminderOptionNeedsResolution": "La pregunta necesita resolución", + "reminderOptionCPChanges": "La predicción de la comunidad cambia", + "reminderOptionQuestionOpens": "La pregunta se abre", + "reminderOptionQuestionLifetime": "Porcentaje de tiempo de vida de la pregunta", + "loadingRemindersError": "No se pudo cargar la notificación", + "removingReminderError": "No se pudo eliminar la notificación", + "removeReminderConfirmation": "¿Realmente deseas eliminar esta notificación?", + "newReminderSuccess": "La notificación ha sido programada", + "newReminderError": "Error, la notificación no ha sido programada", + "reminderErrorTypeRequired": "Por favor selecciona un activador", + "reminderErrorDateRequired": "Por favor selecciona una fecha", + "reminderErrorNotifyInThePast": "No podemos notificarte en el pasado (todavía)", + "reminderErrorNumberOfCommentsRequired": "Para reducir el spam, no podemos notificarte por menos de 1 comentario", + "reminderErrorNumberOfCommentsTooBig": "El número de comentarios debe ser menor a 100", + "reminderErrorPercentLifetimeRequired": "Por favor, establece un porcentaje de tiempo de vida", + "reminderErrorPercentLifetimeCannotHappen": "Esto resultaría en ninguna notificación, por favor selecciona un valor más bajo", + "reminderErrorPercentLifetimeWouldNotRepeat": "Esto resultaría en ninguna repetición. Considera cambiar a \"No se repite\"", + "reminderNotePlaceholder": "Escríbete una nota...", + "reminderCPChangesDescription1": "Notifícame cuando el pronóstico cambie más del 10%", + "reminderCPChangesDescription2": "Para preguntas continuas, esto se mide mediante una prueba de Kolmogorov–Smirnov.", + "reminderDateDescription": "Notifícame el", + "reminderNewCommentsDescription1": "Notifícame después de ", + "reminderNewCommentsDescription2_one": "nuevo comentario", + "reminderNewCommentsDescription2_few": "nuevos comentarios", + "reminderNewCommentsDescription2_other": "nuevos comentarios", + "reminderNewCommentsDescription2": "nuevos comentarios", + "reminderQResolutionDescription": "Notifícame cuando esta pregunta necesite resolución", + "reminderPercentLifeDescription1": "Notifícame cuando", + "reminderPercentLifeDescription2": "% del tiempo de vida de la pregunta haya transcurrido", + "reminderPercentLifeCurrentValue": "Esta pregunta está actualmente en el {{percent}} % de su tiempo de vida", + "reminderTimeElapsedDescription": "Notifícame en", + "reminderTimeElapsedADay": "un día", + "reminderTimeElapsedAWeek": "una semana", + "reminderTimeElapsedAMonth": "un mes", + "reminderTimeElapsedAYear": "un año", + "reminderPercentLifetimeDescription": "Notifícame después de x porcentaje del tiempo de vida de la pregunta", + "submitReminderButton": "Programar", + "reminderLabelNoRepeat": "No se repite", + "reminderLabelRepeat": "Se repite", + "reminderLabelDaily": "Diario", + "reminderLabelWeekly": "Semanal", + "reminderLabelMonthly": "Mensual", + "reminderLabelAnnually": "Anual", + "yourScheduledNotifications": "Tus notificaciones programadas para esta pregunta", + "trackRecordNoUserPredictions": "¡Ninguna de tus predicciones se ha resuelto aún! Haz más predicciones para construir tu historial.", + "mpExplanation": "Tienes acceso especial para ver la Predicción de Metaculus antes.", + "cpVisibilitySettingOn": "Has ocultado la Predicción de la Comunidad en tus <2>ajustes", + "cpInHiddenPeriod": "La Predicción de la Comunidad será <2>revelada", + "duration": "duración", + "ending": "finalizando", + "forecasts": "Pronósticos", + "user": "Usuario", + "viewProfile": "Ver Perfil", + "total": "Total", + "average": "Promedio", + "score": "Puntaje", + "coverage": "Cobertura", + "totalScore": "Puntaje Total", + "totalTake": "Ganancia Total", + "weightedAverageScore": "Puntaje Promedio Ponderado", + "hIndex": "Índice H", + "upvotes": "Votos Positivos", + "forecasters": "Pronosticadores", + "forecaster": "Pronosticador", + "comment": "Comentario", + "questionType": "Tipo de Pregunta", + "questionStatus": "Estado de la Pregunta", + "similarQuestions": "Preguntas Similares", + "category": "Categoría", + "tags": "Etiquetas", + "tagFilter": "Etiqueta: {tag}", + "questionAuthor": "Autor de la Pregunta", + "questionAuthorFilter": "Autor: {author}", + "myParticipation": "Mi Participación", + "year": "año", + "years": "años", + "error": "Error", + "loading": "Cargando", + "leaderboards": "Clasificaciones", + "binary": "Binaria", + "conditionalGroup": "Condicional", + "group": "Grupo", + "multipleChoice": "Opción Múltiple", + "continuous": "Continua", + "baselineAccuracy": "Precisión Básica", + "peerAccuracy": "Precisión de Pares", + "insight": "Perspicacia", + "questionWriting": "Redacción de Preguntas", + "relativeAccuracy": "Precisión Relativa", + "absoluteAccuracy": "Precisión Absoluta", + "rank": "Rango", + "outOfRank": "de {total}", + "comments": "Comentarios", + "questions": "Preguntas", + "viewMore": "Ver más...", + "randomQuestion": "Pregunta Aleatoria", + "notebooks": "Cuadernos", + "otherWithCount": "{count, plural, =1 {# otro} other {# otros} }", + "feedHome": "Inicio del Feed", + "topics": "Temas", + "categories": "categorías", + "seeAllCategories": "Ver todas las categorías", + "toggleAllTopics": "Alternar todos los temas", + "Filter": "Filtrar", + "Done": "Hecho", + "Clear": "Limpiar", + "predicted": "Predicho", + "notPredicted": "No Predicho", + "author": "Autor", + "authored": "Autoría", + "upvoted": "Votado positivamente", + "moderating": "Moderando", + "visibility": "Visibilidad", + "public": "Público", + "private": "Privado", + "hot": "Popular", + "movers": "Movimientos", + "new": "Nuevo", + "oldest": "Más antiguo", + "newest": "Más reciente", + "stale": "Antiguo", + "newComments": "Nuevos Comentarios", + "divergence": "Divergencia", + "myPredictions": "Mis Predicciones", + "special": "Especial", + "personal": "Personal", + "myQuestionsAndPosts": "Mis Preguntas y Publicaciones", + "mostUpvotes": "Más Votos Positivos", + "mostComments": "Más Comentarios", + "totalComments": "Total de Comentarios", + "mostPredictions": "Más Predicciones", + "closingSoon": "Cerrando Pronto", + "closingTime": "Hora de Cierre", + "bestScores": "Mejores Puntuaciones", + "worstScores": "Peores Puntuaciones", + "resolvingSoon": "Resolviéndose Pronto", + "unreadComments": "Comentarios No Leídos", + "oldestPredictions": "Mis Predicciones Más Antiguas", + "newestPredictions": "Mis Predicciones Más Recientes", + "recentPredictions": "Predicciones recientes", + "myDivergence": "Mi Divergencia", + "profile": "Perfil", + "changeUsernameButton": "cambiar", + "memberSince": "Miembro Desde", + "bio": "Biografía", + "website": "Sitio web", + "profileBioPlaceholder": "Cuéntanos un poco sobre ti.", + "username": "nombre de usuario", + "noResults": "No se encontraron resultados", + "noTags": "No se encontraron etiquetas", + "homeTitle": "Pronósticos para un mundo complejo", + "homeDescription": "Metaculus ofrece infraestructura de pronósticos y modelado confiable para pronosticadores, tomadores de decisiones y el público.", + "forecastsSearchPlaceholder": "Buscar en Metaculus", + "focusAreasTitle": "Áreas de Enfoque", + "focusAreasDescription": "Creamos pronósticos y avanzamos en la investigación, la toma de decisiones y las políticas en cuatro áreas temáticas principales.", + "seeForecasts": "Ver Pronósticos", + "tournaments": "Torneos", + "joinTournaments": "Únete a nuestros torneos y predice eventos, cronogramas e impactos del mundo real, y gana premios por tu precisión.", + "tournamentsHero1": "Ayuda a la comunidad global a modelar, comprender y navegar los desafíos más importantes y complejos del mundo.", + "tournamentsHero2": "Demuestra tus habilidades de pronóstico, apoya la toma de decisiones efectivas y gana premios en efectivo.", + "tournamentsHero3": "Aprende cómo se puntúan los torneos.", + "tournamentsHero4": "Contáctanos para discutir el lanzamiento de un torneo sobre lo que te importa.", + "ActiveTournaments": "Torneos Activos", + "Tournament": "Torneo", + "QuestionSeries": "Serie de Preguntas", + "Archive": "Archivo", + "prizePool": "fondo de premios", + "prize": "Premio", + "percentPrize": "% Premio", + "questionCount": "{count, plural, =1 {# Pregunta} other {# Preguntas} }", + "closesOn": "Cierra ", + "closedOn": "Cerrado ", + "highestPrizePool": "Mayor Fondo de Premios", + "endingSoon": "Terminando Pronto", + "changePasswordButton": "Cambiar Contraseña", + "formerlyKnownAs": "Anteriormente Conocido Como", + "StartDate": "Fecha de Inicio", + "EndDate": "Fecha de Finalización", + "SeriesContents": "Contenido de la Serie", + "makePrediction": "Hacer una Predicción", + "Title": "Título", + "Access": "Acceso", + "save": "Guardar", + "Candidates": "Candidatos", + "sendBackToDrafts": "Enviar de vuelta a Borradores", + "approve": "aprobar", + "submitForReview": "Enviar para revisión", + "seeAllTournaments": "Ver Todos los Torneos", + "seeAllForecasts": "Ver Todos los Pronósticos", + "seeMorePosts": "Ver Más Publicaciones", + "documentation": "documentación", + "apiAcessText": "Puedes usar un token de API para acceder a la API de Metaculus, según nuestra", + "apiAccess": "Acceso a la API", + "yourAPITokenIs": "Tu token de API es:", + "about": "Acerca de", + "api": "API", + "otherInitiatives": "Otras Iniciativas", + "forecasting": "Pronósticos", + "forecastingResources": "recursos de pronósticos", + "forjournalists": "Metaculus para Periodistas", + "careers": "Carreras", + "engageWith": "Involúcrate con", + "guidelines": "Directrices", + "privacyPolicy": "Política de Privacidad", + "termsOfUse": "Términos de Uso", + "faq": "FAQ", + "contact": "Contacto", + "contactUs": "Contáctanos", + "thankYouForGettingInTouch": "Gracias por ponerte en contacto. ¡Te responderemos pronto!", + "yourEmail": "Tu Correo Electrónico", + "yourMessage": "Tu mensaje...", + "news": "Noticias", + "newsMatch": "News Match", + "create": "crear", + "login": "Iniciar sesión", + "logout": "Cerrar sesión", + "admin": "Admin", + "aboutMetaculus": "Acerca de Metaculus", + "more": "Más", + "forJournalists": "Para Periodistas", + "trackRecord": "Historial", + "medals": "Medallas", + "metaculusTrackRecord": "Historial de Metaculus", + "trackRecordOutdatedMessage": "Este historial aún no usa los nuevos puntajes Básicos y de Pares introducidos en noviembre de 2023. Actualizar esta página es una de nuestras próximas prioridades.", + "theJournal": "El Diario", + "account": "Cuenta", + "settings": "Ajustes", + "shortTitle": "Título Corto", + "boost": "Impulsar", + "bury": "Enterrar", + "duplicate": "Duplicar", + "partnersUseForecasts": "Nuestros socios utilizan los pronósticos de Metaculus para obtener información sobre desafíos y decisiones complejas.", + "learnHowYouCanPartner": "Aprende cómo puedes asociarte con Metaculus para organizar un torneo de pronósticos, colaborar en la investigación de pronósticos, contratar a nuestros Pronosticadores Profesionales para proyectos personalizados o establecer un espacio privado de pronósticos para tu organización.", + "workingWithNonProfits": "Nos encanta trabajar con organizaciones sin fines de lucro en nuestras áreas de enfoque principales. Si eres una organización sin fines de lucro que busca capacidad de pronósticos y modelado o estás interesado en colaborar en una subvención, ¡contáctanos!", + "reachOutToLearnMore": "Ponte en contacto para obtener más información sobre cómo trabajar con Metaculus o si tienes alguna pregunta, comentario o inquietud. Te responderemos pronto.", + "feelFreeToJustSayHello": "No dudes en saludar, también - ¡nos encanta escuchar a la comunidad de pronósticos!", + "contentBoosted": "¡Contenido impulsado! valor {score} actividad. Puntaje total de impulso para la semana: {score_total}", + "contentBuried": "¡Contenido enterrado! valor {score} actividad. Puntaje total de impulso para la semana: {score_total}", + "cpRevealTime": "Hora de Revelación de la Predicción de la Comunidad", + "openTime": "Hora de Apertura", + "Question": "Pregunta", + "editOpenAndCpRevealTimes": "Editar Hora de Apertura y Revelación de la Predicción de la Comunidad", + "noQuestionsResolved": "No se han resuelto preguntas en este período.", + "duration:": "Duración:", + "timePeriod": "Período de Tiempo:", + "inReviewBox1": "Te invitamos a participar en nuestro proceso de revisión votando y comentando sobre preguntas durante su desarrollo.", + "inReviewBox2": "Las preguntas que logren un balance positivo de votos serán priorizadas para la revisión y aprobación del Administrador.", + "inReviewBox3": "Las preguntas que reciban un número significativo de votos negativos serán rechazadas por defecto.", + "inReviewBox4": "Por favor, consulta nuestras Directrices para redactar preguntas para aprender qué hace a una pregunta buena.", + "learnMoreAboutNewsMatch": "Aprende más sobre Metaculus NewsMatch", + "inReviewBoxTitle": "Participa en el proceso de revisión", + "userProfile": "Perfil de {username}", + "unknownUserProfile": "Perfil del Usuario", + "userMedals": "Medallas de {username}", + "unknownUserMedals": "Medallas del Usuario", + "noMedals": "Aún no hay medallas", + "leaderboard": "Tabla de Clasificación", + "openLeaderboard": "Abrir Tabla de Clasificación", + "namesPrediction": "Predicción de {username}", + "includeMyForecast": "incluir tu última predicción en este comentario", + "privateComment": "comentario privado", + "groupVariable": "Variable de Grupo", + "showFullForecast": "...mostrar predicción completa", + "closeFullForecast": "cerrar predicción completa", + "noComments": "sin comentarios", + "overview": "Visión General", + "links": "enlaces", + "location": "ubicación", + "occupation": "ocupación", + "take": "Tomar", + "confirmPageLeaveMessage": "¿Estás seguro de que quieres salir de esta página?", + "deletedAuthor": "autor eliminado", + "myScore": "Mi Puntuación", + "peerScoreInfo": "Tu Puntuación de Pares en esa pregunta. Si no ves ninguna puntuación, entonces la pregunta aún no se ha resuelto o no la has predicho (¡o ambas!).", + "scoringTerminology": "Terminología de Puntuación", + "totalPeerScoreInfo": "La suma de tus Puntuaciones de Pares en todas las preguntas del torneo (pero solo aquellas que cierran antes del final del torneo).", + "peerTakeInfo": "Tu Ganancia es el cuadrado de la suma de tus puntuaciones de pares o 0 si tu puntuación total es negativa.", + "relativeScoreInfo": "Tu Puntuación Relativa en esa pregunta. Si no ves ninguna puntuación, entonces la pregunta aún no se ha resuelto o no la has predicho (¡o ambas!).", + "totalRelativeScoreInfo": "La suma de tus Puntuaciones Relativas en todas las preguntas del torneo (pero solo aquellas que cierran antes del final del torneo).", + "relativeCoverageInfo": "La cantidad de la pregunta o del torneo que cubriste.", + "relativeTakeInfo": "Tu Ganancia es tu cobertura multiplicada por e elevado a la potencia de tu puntuación total. (c*e^s)", + "backgroundInfo": "Información de Fondo", + "parentBackgroundInfo": "Información de Fondo de la Pregunta Principal", + "childBackgroundInfo": "Información de Fondo de la Pregunta Secundaria", + "histogram": "Histograma", + "frequency": "Frecuencia", + "brierScoreForPlayer": "Puntuaciones Brier para las predicciones de los jugadores", + "scoreHistogram": "Histograma de Puntuaciones", + "scoreScatterPlot": "Diagrama de Dispersión de Puntuaciones", + "expand": "Expandir", + "collapse": "Colapsar", + "resolutionCriteria": "Criterios de Resolución", + "parentResolutionCriteria": "Criterios de Resolución de la Pregunta Principal", + "childResolutionCriteria": "Criterios de Resolución de la Pregunta Secundaria", + "loadMoreComments": "Cargar más comentarios", + "followButton": "Seguir", + "followingButton": "Siguiendo", + "unfollowButton": "Dejar de seguir", + "customiseButton": "Personalizar", + "followModalCustomiseButton": "Personalizar", + "followModalUnfollowButton": "Dejar de seguir", + "followModalYouAreFollowingThisQuestion": "¡Ahora estás siguiendo esta pregunta!", + "followModalYouAreFollowingThisGroup": "¡Ahora estás siguiendo este grupo!", + "followModalSuccessMessageDefaultNotificationQuestion": "Se te notificará de nuevos comentarios, cambios en la Predicción de la Comunidad, cada vez que pase el 20% del tiempo de vida de la pregunta, y cuando la pregunta se abra, cierre o resuelva.", + "followModalSuccessMessageDefaultNotificationGroup": "Se te notificará de nuevos comentarios, cambios en la Predicción de la Comunidad, cada vez que pase el 20% del tiempo de vida del grupo, y cuando el grupo se abra, cierre o resuelva.", + "followModalNotifyMe": "Notifícame", + "followModalEveryComment": "cada comentario", + "followModalEveryNComments": "cada {n} comentarios", + "followModalSmallChanges": "cambios pequeños", + "followModalMediumChanges": "cambios medianos", + "followModalLargeChanges": "cambios grandes", + "followModalNotifyMeFor": "Notifícame por", + "followModalNotifyMeEvery": "Notifícame cada", + "followModalMilestoneLifetimeParagraphQuestion": "del tiempo de vida de la pregunta, y cuando se abra, cierre o resuelva.", + "followModalMilestoneLifetimeParagraphGroup": "del tiempo de vida del grupo, y cuando se abra, cierre o resuelva.", + "followModalReminderThisQuestionOpened": "Recordatorio: esta pregunta se abrió el {published_at} y cerró el {scheduled_close_time}", + "followModalCustomiseNotifications": "Personalizar notificaciones", + "followModalCustomiseNotificationsParagraph": "Configura notificaciones por correo electrónico cuando ocurran actualizaciones importantes.", + "followModalCommunityPredictionChanges": "Cambios en la Predicción de la Comunidad", + "followModalMilestones": "Hitos", + "followModalSpecificTime": "Hora específica", + "followModalStatusChanges": "Cambios de estado", + "best": "mejor", + "cmmButton": "Cambié de opinión", + "cmmUpdateButton": "Actualizar", + "cmmUpdatePredictionLink": "¿Actualizar tu predicción?", + "updateYourPrediction": "Actualiza tu predicción", + "democrat": "demócrata", + "republican": "republicano", + "numVotes": "{num} votos", + "stateByStateForecasts": "Pronósticos Estado por Estado", + "republicanElectoralVote": "Voto Electoral Republicano", + "democratElectoralVote": "Voto Electoral Demócrata", + "electionHubDisclaimer": "Actualmente, nuestro mapa se enfoca solo en los estados clave mencionados en esta pregunta. Marcamos algunos estados como “Seguro Demócrata” o “Seguro Republicano” basándonos en datos históricos de elecciones. Si crees que deberíamos incluir pronósticos para más estados, ¡háznoslo saber!", + "shareOnFacebook": "Compartir en Facebook", + "shareOnTwitter": "Compartir en Twitter", + "embed": "insertar", + "share": "compartir", + "270VotesToWin": "270 votos para ganar", + "expectedElectoralVotes": "Votos Electorales Esperados", + "electoralVotes": "Votos Electorales", + "0Votes": "0 Votos", + "538Votes": "538 Votos", + "electionHubDescription": "Explora los pronósticos de Metaculus para la elección presidencial de EE.UU. de 2024", + "2024USElectionHub": "Centro de Elecciones de EE.UU. 2024", + "safeParty": "Seguro {party}", + "partyWinProbability": "Probabilidad de Victoria de {party} ↗", + "settingsPreferences": "Preferencias", + "settingsSubscriptions": "Suscripciones", + "settingsEmailNotifications": "Notificaciones por Correo Electrónico", + "settingsMentionsInComments": "Menciones en comentarios", + "settingsQuestionResolution": "Preguntas Resueltas", + "settingsSignificantMovementOnPredictedQuestions": "Movimiento significativo en preguntas predichas", + "settingsSignificantMovementOnPredictedQuestionsTooltip": "Recibirás un correo de notificación cuando la Predicción de la Comunidad cambie más del 10% en cualquier pregunta que hayas predicho. Los correos electrónicos se agrupan cada hora.", + "newsLetter": "Boletín", + "research": "Investigación", + "updates": "Actualizaciones", + "posts": "publicaciones", + "notebook": "notebook", + "notebookExample": "contenido basado en texto que no es una pregunta", + "conditionalPair": "par condicional", + "conditionalPairExample": "Si llueve hoy, ¿lloverá mañana?", + "dateGroup": "grupo de fechas", + "dateGroupExample": "¿Cuándo lloverá en las siguientes ciudades?", + "numericGroup": "grupo numérico", + "numericGroupExample": "¿Cuánto lloverá en estas ciudades?", + "binaryGroup": "grupo binario", + "binaryGroupExample": "¿Lloverá hoy en estas ciudades?", + "binaryQuestion": "pregunta binaria", + "binaryQuestionExample": "¿Lloverá hoy?", + "numericQuestion": "pregunta numérica", + "numericRange": "rango numérico", + "numericRangeExample": "¿Cuánta lluvia el próximo mes?", + "dateRange": "rango de fechas", + "dateRangeExample": "¿Cuándo lloverá?", + "multipleChoiceExample": "¿Qué ciudad recibirá más lluvia?", + "questionGroup": "grupo de preguntas", + "singleQuestion": "pregunta única", + "createNewContent": "crear nuevo contenido", + "onlyRegisterUserCanCreate": "Solo los usuarios registrados pueden crear nuevas preguntas. Inicia sesión o registra una nueva cuenta ahora.", + "createQuestionDescription1": "Consulta nuestra guía de redacción de preguntas para obtener consejos. Las buenas preguntas se aprueban más rápido y obtienen más predicciones. Si solo tienes una idea o no quieres completar todo el formulario de envío, publica tu idea en nuestro hilo de sugerencias.", + "createQuestionDescription2": "Tenemos altos estándares de calidad para las preguntas. También favorecemos preguntas sobre nuestras áreas temáticas principales o que consideremos valiosas. Es posible que no publiquemos preguntas que no se ajusten bien.", + "binaryQuestionDescription": "Las preguntas binarias generalmente son de la forma \"¿Ocurrirá X?\" Se resuelven como Sí o No.", + "multipleChoiceDescription": "Las preguntas de opción múltiple generalmente son de la forma \"¿Cuál de las siguientes ocurrirá?\". Estas preguntas enumeran muchas opciones, solo una de las cuales puede resolverse como verdadera.", + "dateRangeDescription": "Una pregunta de fecha pregunta cuándo sucederá algo, dado un intervalo de tiempo específico.", + "numericRangeDescription": "Una pregunta numérica pregunta sobre una cantidad o número que se conocerá en una fecha futura.", + "viewInDjangoAdmin": "Ver en django admin", + "finePrintDescription": "Opcional: Usa la letra pequeña para cualquier tipo de detalles legales que no necesitan mostrarse de manera prominente.", + "createQuestion": "crear pregunta", + "editQuestion": "editar pregunta", + "longTitle": "título largo", + "longTitleExplanation": "Una oración que encapsula lo que estás tratando de predecir. Termina con un signo de interrogación.", + "shortTitleExplanation": "Debe ser una versión más corta del Título Largo, utilizada donde hay menos espacio para mostrar un título. Debe terminar con un signo de interrogación. Ejemplos: \"¿Ganador del contrato de trajes espaciales de la NASA 2022?\" o \"¿PIB de la UE de 2025 a 2035?\"", + "backgroundInformation": "Información de Fondo", + "backgroundInfoExplanation": "Proporciona información de fondo para tu pregunta en un tono objetivo y sin sesgos. Los enlaces deben agregarse a recursos relevantes y útiles utilizando la sintaxis markdown: [Título del Enlace](https://link-url.com).", + "resolutionCriteriaExplanation": "Una buena pregunta casi siempre se resolverá de manera inequívoca. Si tienes una fuente de datos con la que se resolverá la pregunta, enlázala aquí. Si es necesario realizar algunos cálculos simples para resolver esta pregunta, define la ecuación en markdown: \\[ y = ax^2+b \\].", + "closingDate": "fecha de cierre", + "resolvingDate": "fecha de resolución", + "choicesSeparatedBy": "Opciones (separadas por ,)", + "projects": "proyectos", + "FABPrizePool": "FONDO DE PREMIOS", + "FABPrizeValue": "$30,000", + "FABStartDate": "FECHA DE INICIO", + "FABStartDateJuly8": "8 de julio", + "FABdesc1": "Primer torneo de pronósticos de bots de su tipo con $30,000 en premios para creadores de bots en el tercer trimestre.", + "FABdesc2": "250-500 preguntas binarias, incluidas en la Copa Trimestral", + "FABdesc3": "Las preguntas estarán abiertas durante 24 horas mientras la predicción de la comunidad aún esté oculta para evitar copias.", + "FABRulesTitle": "Reglas básicas", + "FABRulesRule1": "No se permite intervención humana", + "FABRulesRule2": "Los bots deben dejar comentarios que muestren su razonamiento", + "FABRulesRule3": "1 bot por usuario / laboratorio de IA", + "FABRulesRule4": "Los creadores de bots deben proporcionar el código o una descripción de su bot", + "FABdesc4": "Compararemos el rendimiento de los bots con la comunidad de Metaculus y los Pronosticadores Profesionales.", + "FABHeroTitle": "Pronósticos de IA", + "FABHeroSubtitle": "Serie de Referencia", + "FABHeroDesc": "Comparando el estado del arte en pronósticos de IA con los mejores humanos en preguntas del mundo real.", + "FABGettingStarted": "Comenzar", + "FABRegisterBot": "Registra tu bot en el torneo", + "FABCreateBot": "Crear una Cuenta de Bot", + "FABSeparateBotAccount": "Tu bot necesita una cuenta separada de Metaculus. Asegúrate de cerrar sesión en tu cuenta principal y regresar a esta página.", + "FABBotRegistered": "Tu bot ha sido registrado con éxito en el torneo.", + "FABShowToken": "Mostrar Mi Token", + "FABTournamentPage": "Página del Torneo", + "FABHowItWorks": "Cómo funciona", + "FABCreateBotAccount": "Crear una Cuenta de Bot", + "FABBotAlreadyCreated": "Si ya creaste una cuenta de bot antes, cierra este modal e inicia sesión como lo harías en una cuenta regular de Metaculus.", + "FABTokenInfo": "Tu token es necesario para que tu bot interactúe con la API de Metaculus.", + "inReviewStatusBox1": "Esta pregunta ahora necesita ser aprobada por un Moderador de Metaculus. Las preguntas que cumplan con nuestras Directrices para la Redacción de Preguntas y que se refieran a uno de nuestros temas principales tienen más probabilidades de ser aprobadas, y más rápido.", + "inReviewStatusBox2": "Se anima a todos los usuarios de Metaculus a dar su opinión sobre las preguntas durante la Revisión y a votar a favor de las preguntas que les parezcan interesantes y/o bien redactadas. Las preguntas con un balance de votos positivo recibirán atención prioritaria de los Administradores. Las preguntas con un balance de votos significativamente negativo serán rechazadas por defecto.", + "inReviewStatusBox3": "El autor de una pregunta puede invitar a otros usuarios a ser coautores, para ayudar en el proceso de redacción o para reconocer sus contribuciones.", + "inReviewStatusBox4": "Ten en cuenta que esta pregunta no puede ser aprobada hasta que tanto su pregunta principal como secundaria hayan sido aprobadas.", + "draftStatusBox1": "Tu envío ahora es un Borrador.", + "draftStatusBox2": "Una vez que esté listo, por favor envía tu borrador para revisión por parte de nuestro equipo de Moderadores de la Comunidad. ¡Gracias!", + "newSubquestion": "nueva subpregunta", + "subquestions": "subpreguntas", + "binaryQuestionGroup": "grupo de preguntas binarias", + "binaryQuestionGroupDescription": "Los grupos de preguntas binarias contienen preguntas que generalmente tienen la forma \"¿Ocurrirá X?\" y se resuelven como Sí o No.", + "numericQuestionGroup": "grupo de preguntas numéricas", + "numericQuestionGroupDescription": "Los grupos de preguntas numéricas contienen preguntas que preguntan sobre el valor de una cantidad futura desconocida y se resuelven dentro de un rango específico.", + "dateQuestionGroup": "grupo de preguntas de fecha", + "dateQuestionGroupDescription": "Los grupos de preguntas de fecha contienen preguntas que preguntan cuándo sucederá algo y se resuelven dentro de un rango de fechas específico.", + "groupVariableDescription": "Lo que representan las etiquetas de subpreguntas (por ejemplo, año, país, etc.).", + "categoryPickerDescription": "Un nombre para el parámetro que varía entre subpreguntas, como \"Opción\", \"Año\" o \"País\"", + "subquestionLabel": "Etiqueta de subpregunta", + "subquestionLabelDescription": "La etiqueta o parámetro que identifica esta subpregunta, como \"Opción 1\", \"2033\" o \"Francia\"", + "conditionalPairDescription": "Un Par Condicional es un tipo especial de Grupo de Preguntas que solicita probabilidades condicionales. Cada Par Condicional se encuentra entre una Pregunta Principal y una Pregunta Secundaria. La Principal debe ser una pregunta binaria, mientras que la secundaria puede ser una pregunta binaria, numérica o de fecha.", + "parentId": "ID Principal", + "parentInputDescription": "Por favor ingresa el ID de una pregunta binaria.", + "childId": "ID Secundaria", + "childInputDescription": "Por favor ingresa el ID de una pregunta binaria, numérica o de fecha.", + "isDoneError": "No se pueden editar preguntas cerradas, resueltas o rechazadas", + "editNotebook": "editar notebook", + "createNotebook": "crear notebook", + "metaculusOnTwitter": "Metaculus en Twitter", + "metaculusOnDiscord": "Metaculus en Discord", + "signUpAsBot": "Regístrate como Bot", + "failedToCopyText": "fallo al copiar texto: ", + "resolutionLabel": "Resolución:", + "totalQuestions": "Total de preguntas:", + "averageScore": "Puntuación promedio:", + "confidenceInterval": "intervalo de confianza", + "perfectCalibration": "calibración perfecta", + "userCalibration": "calibración del usuario", + "scatterPlotHoverMessage": "Pasa el cursor sobre un círculo para ver cómo se resolvió esa pregunta.", + "calibrationCurve": "Curva de Calibración", + "calibrationCurveInfo": "Si los diamantes están cerca de las líneas grises, las predicciones están bien calibradas a ese nivel de confianza. Si los diamantes están más cerca del 50% que los diamantes, las predicciones eran poco confiables, y viceversa.", + "condition": "condición", + "facebook": "Facebook", + "xTwitter": "X / Twitter", + "copyFromBranch": "copiar de {branch}", + "parentResolvesAsYes": "Principal se resuelve como Sí", + "parentResolvesAsNo": "Principal se resuelve como No", + "othersCount": "{count} otros", + "selectAll": "seleccionar todo", + "deselectAll": "deseleccionar todo", + "forecastDataIsEmpty": "Los datos de pronóstico están vacíos", + "createdByUserOnDate": "Creado por {user} el {date}", + "tournamentShowPostsToMainFeed": "Mostrar publicaciones del torneo en el feed principal", + "tournamentHidePostsToMainFeed": "Ocultar publicaciones del torneo en el feed principal", + "me": "yo", + "forecastDisclaimer": "Basado en {predictionCount} predicciones de {forecasterCount} pronosticadores", + "embedCodeSnippet": "Puedes usar el siguiente fragmento de código para incrustar esta página en tu propia página web. Siéntete libre de cambiar la altura y el ancho para que se ajuste a tus necesidades.", + "embedThisPage": "incrustar esta página", + "selectATheme": "Seleccionar un tema", + "selectAGraphZoom": "Seleccionar un zoom de gráfico", + "light": "claro", + "dark": "oscuro", + "all": "todo", + "2m": "2m", + "1w": "1s", + "1d": "1d", + "errorDeletingComment": "error al eliminar comentario:" +} diff --git a/front_end/src/app/(main)/components/footer.tsx b/front_end/src/app/(main)/components/footer.tsx index 1ed53b36c0..b4d6cc9270 100644 --- a/front_end/src/app/(main)/components/footer.tsx +++ b/front_end/src/app/(main)/components/footer.tsx @@ -1,20 +1,14 @@ "use client"; -import { faTwitter } from "@fortawesome/free-brands-svg-icons"; -import { faDiscord } from "@fortawesome/free-brands-svg-icons"; +import { faTwitter, faDiscord } from "@fortawesome/free-brands-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import Image from "next/image"; -import { usePathname, useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { FC } from "react"; import { useModal } from "@/contexts/modal_context"; -import useSearchParams from "@/hooks/use_search_params"; const Footer: FC = () => { - const router = useRouter(); - const { params } = useSearchParams(); - const pathname = usePathname(); const t = useTranslations(); const { setCurrentModal } = useModal(); @@ -94,72 +88,25 @@ const Footer: FC = () => {
-
-
- - {t("guidelines")} - - - {t("privacyPolicy")} - - - {t("termsOfUse")} - -
- -
- - - -
+
+ + {t("guidelines")} + + + {t("privacyPolicy")} + + + {t("termsOfUse")} +
diff --git a/front_end/src/app/(main)/components/header.tsx b/front_end/src/app/(main)/components/header.tsx index 5740f49164..c2d6b02db3 100644 --- a/front_end/src/app/(main)/components/header.tsx +++ b/front_end/src/app/(main)/components/header.tsx @@ -10,6 +10,7 @@ import NavLink from "@/components/nav_link"; import ThemeToggle from "@/components/theme_toggle"; import MobileMenu from "./mobile_menu"; +import LanguageMenu from "@/components/language_menu"; const LinkMenuItem: FC<{ href: string; label: string }> = ({ href, label }) => { return ( @@ -38,12 +39,12 @@ const Header: FC = () => { ]; return ( -
+
-

+

{t("metaculus")} M

@@ -117,6 +118,9 @@ const Header: FC = () => {
  • +
  • + +
  • diff --git a/front_end/src/app/(main)/components/mobile_menu.tsx b/front_end/src/app/(main)/components/mobile_menu.tsx index 88eae798a8..645f799854 100644 --- a/front_end/src/app/(main)/components/mobile_menu.tsx +++ b/front_end/src/app/(main)/components/mobile_menu.tsx @@ -13,6 +13,7 @@ import { useTranslations } from "next-intl"; import { FC, PropsWithChildren } from "react"; import ThemeToggle from "@/components/theme_toggle"; +import LanguageMenu from "@/components/language_menu"; import { useAuth } from "@/contexts/auth_context"; import { useModal } from "@/contexts/modal_context"; import { Href } from "@/types/navigation"; @@ -98,7 +99,8 @@ const MobileMenu: FC = () => { )} -
    +
    +
    diff --git a/front_end/src/app/assets/fonts/ABCDiatype-Bold.ttf b/front_end/src/app/assets/fonts/ABCDiatype-Bold.ttf deleted file mode 100644 index 35ee80b7b7..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-Bold.ttf and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-Bold.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-Bold.woff2 deleted file mode 100644 index 4ef8fb257b..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-Bold.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-BoldItalic.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-BoldItalic.woff2 deleted file mode 100644 index 63e1c29ab5..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-BoldItalic.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-Light.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-Light.woff2 deleted file mode 100644 index 6eed7d7630..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-Light.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-LightItalic.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-LightItalic.woff2 deleted file mode 100644 index b77ad564a6..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-LightItalic.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-Medium.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-Medium.woff2 deleted file mode 100644 index bb61d3bd43..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-Medium.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-MediumItalic.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-MediumItalic.woff2 deleted file mode 100644 index 9a5734403b..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-MediumItalic.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-Regular.woff b/front_end/src/app/assets/fonts/ABCDiatype-Regular.woff deleted file mode 100644 index a6acf8e8cd..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-Regular.woff and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-Regular.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-Regular.woff2 deleted file mode 100644 index b5bb7f5e61..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-Regular.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-RegularItalic.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-RegularItalic.woff2 deleted file mode 100644 index b930f28abb..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-RegularItalic.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-Thin.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-Thin.woff2 deleted file mode 100644 index 5f7507ec11..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-Thin.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatype-ThinItalic.woff2 b/front_end/src/app/assets/fonts/ABCDiatype-ThinItalic.woff2 deleted file mode 100644 index b7886a1c1f..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatype-ThinItalic.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatypeVariable.woff b/front_end/src/app/assets/fonts/ABCDiatypeVariable.woff deleted file mode 100644 index d00736f1bd..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatypeVariable.woff and /dev/null differ diff --git a/front_end/src/app/assets/fonts/ABCDiatypeVariable.woff2 b/front_end/src/app/assets/fonts/ABCDiatypeVariable.woff2 deleted file mode 100644 index 8fe6244faf..0000000000 Binary files a/front_end/src/app/assets/fonts/ABCDiatypeVariable.woff2 and /dev/null differ diff --git a/front_end/src/app/assets/fonts/Montserrat-Bold.woff b/front_end/src/app/assets/fonts/Montserrat-Bold.woff deleted file mode 100644 index dd2269c7bf..0000000000 Binary files a/front_end/src/app/assets/fonts/Montserrat-Bold.woff and /dev/null differ diff --git a/front_end/src/app/assets/fonts/Montserrat-Light.woff b/front_end/src/app/assets/fonts/Montserrat-Light.woff deleted file mode 100644 index 109994a1fd..0000000000 Binary files a/front_end/src/app/assets/fonts/Montserrat-Light.woff and /dev/null differ diff --git a/front_end/src/app/assets/fonts/Montserrat-Regular.woff b/front_end/src/app/assets/fonts/Montserrat-Regular.woff deleted file mode 100644 index 2a990e5d84..0000000000 Binary files a/front_end/src/app/assets/fonts/Montserrat-Regular.woff and /dev/null differ diff --git a/front_end/src/app/assets/fonts/Montserrat-Thin.woff b/front_end/src/app/assets/fonts/Montserrat-Thin.woff deleted file mode 100644 index 2fe7932bba..0000000000 Binary files a/front_end/src/app/assets/fonts/Montserrat-Thin.woff and /dev/null differ diff --git a/front_end/src/app/assets/fonts/alternategothicno1.otf b/front_end/src/app/assets/fonts/alternategothicno1.otf deleted file mode 100755 index 08fb659d88..0000000000 Binary files a/front_end/src/app/assets/fonts/alternategothicno1.otf and /dev/null differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-black.ttf b/front_end/src/app/assets/fonts/inter_18pt-black.ttf new file mode 100644 index 0000000000..89673de1ca Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-black.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-blackitalic.ttf b/front_end/src/app/assets/fonts/inter_18pt-blackitalic.ttf new file mode 100644 index 0000000000..b33602f1e5 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-blackitalic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-bold.ttf b/front_end/src/app/assets/fonts/inter_18pt-bold.ttf new file mode 100644 index 0000000000..cd13f60ce1 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-bold.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-bolditalic.ttf b/front_end/src/app/assets/fonts/inter_18pt-bolditalic.ttf new file mode 100644 index 0000000000..0d19c1aab1 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-bolditalic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-extrabold.ttf b/front_end/src/app/assets/fonts/inter_18pt-extrabold.ttf new file mode 100644 index 0000000000..e71c601c03 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-extrabold.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-extrabolditalic.ttf b/front_end/src/app/assets/fonts/inter_18pt-extrabolditalic.ttf new file mode 100644 index 0000000000..df450629bd Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-extrabolditalic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-extralight.ttf b/front_end/src/app/assets/fonts/inter_18pt-extralight.ttf new file mode 100644 index 0000000000..f9c6cfc5bc Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-extralight.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-extralightitalic.ttf b/front_end/src/app/assets/fonts/inter_18pt-extralightitalic.ttf new file mode 100644 index 0000000000..275f305e27 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-extralightitalic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-italic.ttf b/front_end/src/app/assets/fonts/inter_18pt-italic.ttf new file mode 100644 index 0000000000..14d3595bc7 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-italic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-light.ttf b/front_end/src/app/assets/fonts/inter_18pt-light.ttf new file mode 100644 index 0000000000..acae361282 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-light.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-lightitalic.ttf b/front_end/src/app/assets/fonts/inter_18pt-lightitalic.ttf new file mode 100644 index 0000000000..f69e18b037 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-lightitalic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-medium.ttf b/front_end/src/app/assets/fonts/inter_18pt-medium.ttf new file mode 100644 index 0000000000..71d90172f1 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-medium.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-mediumitalic.ttf b/front_end/src/app/assets/fonts/inter_18pt-mediumitalic.ttf new file mode 100644 index 0000000000..5c8c8b145f Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-mediumitalic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-regular.ttf b/front_end/src/app/assets/fonts/inter_18pt-regular.ttf new file mode 100644 index 0000000000..ce097c8256 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-regular.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-semibold.ttf b/front_end/src/app/assets/fonts/inter_18pt-semibold.ttf new file mode 100644 index 0000000000..053185e5d2 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-semibold.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-semibolditalic.ttf b/front_end/src/app/assets/fonts/inter_18pt-semibolditalic.ttf new file mode 100644 index 0000000000..d9c9896d34 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-semibolditalic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-thin.ttf b/front_end/src/app/assets/fonts/inter_18pt-thin.ttf new file mode 100644 index 0000000000..e68ec47049 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-thin.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_18pt-thinitalic.ttf b/front_end/src/app/assets/fonts/inter_18pt-thinitalic.ttf new file mode 100644 index 0000000000..134e8372f4 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_18pt-thinitalic.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_italic_variable.ttf b/front_end/src/app/assets/fonts/inter_italic_variable.ttf new file mode 100644 index 0000000000..43ed4f5ee6 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_italic_variable.ttf differ diff --git a/front_end/src/app/assets/fonts/inter_ofl.txt b/front_end/src/app/assets/fonts/inter_ofl.txt new file mode 100644 index 0000000000..d05ec4b38c --- /dev/null +++ b/front_end/src/app/assets/fonts/inter_ofl.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/front_end/src/app/assets/fonts/inter_variable.ttf b/front_end/src/app/assets/fonts/inter_variable.ttf new file mode 100644 index 0000000000..e31b51e3e9 Binary files /dev/null and b/front_end/src/app/assets/fonts/inter_variable.ttf differ diff --git a/front_end/src/app/assets/fonts/league_gothic_ofl.txt b/front_end/src/app/assets/fonts/league_gothic_ofl.txt new file mode 100644 index 0000000000..7e635c13b2 --- /dev/null +++ b/front_end/src/app/assets/fonts/league_gothic_ofl.txt @@ -0,0 +1,93 @@ +Copyright 2010 The League Gothic Project Authors (https://github.com/theleagueof/league-gothic) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/front_end/src/app/assets/fonts/league_gothic_variable.ttf b/front_end/src/app/assets/fonts/league_gothic_variable.ttf new file mode 100644 index 0000000000..9495b0e403 Binary files /dev/null and b/front_end/src/app/assets/fonts/league_gothic_variable.ttf differ diff --git a/front_end/src/app/embed/elections/page.tsx b/front_end/src/app/embed/elections/page.tsx index 33d5270b43..513b18a703 100644 --- a/front_end/src/app/embed/elections/page.tsx +++ b/front_end/src/app/embed/elections/page.tsx @@ -24,10 +24,10 @@ export default function ElectionsEmbed() {
    -
    +
    Metaculus
    -
    +
    M
    diff --git a/front_end/src/app/embed/questions/[id]/page.tsx b/front_end/src/app/embed/questions/[id]/page.tsx index 2fcd99e7b5..3fc40a7fd1 100644 --- a/front_end/src/app/embed/questions/[id]/page.tsx +++ b/front_end/src/app/embed/questions/[id]/page.tsx @@ -65,7 +65,7 @@ export default async function GenerateQuestionPreview({ {t("metaculus")} diff --git a/front_end/src/app/layout.tsx b/front_end/src/app/layout.tsx index bfb2b7cb06..362c4b579f 100644 --- a/front_end/src/app/layout.tsx +++ b/front_end/src/app/layout.tsx @@ -3,8 +3,6 @@ import "@fortawesome/fontawesome-svg-core/styles.css"; import type { Metadata } from "next"; import "./globals.css"; import localFont from "next/font/local"; -import { headers } from "next/headers"; -import { NextRequest } from "next/server"; import { NextIntlClientProvider } from "next-intl"; import { getLocale, getMessages } from "next-intl/server"; import NextTopLoader from "nextjs-toploader"; @@ -65,41 +63,43 @@ const sourceSerifPro = localFont({ ], variable: "--font-source-serif-pro", }); -const diatype = localFont({ + +const inter = localFont({ src: [ { - path: "./assets/fonts/ABCDiatype-Regular.woff2", + path: "./assets/fonts/inter_18pt-medium.ttf", weight: "400", style: "normal", }, { - path: "./assets/fonts/ABCDiatype-RegularItalic.woff2", + path: "./assets/fonts/inter_18pt-mediumitalic.ttf", weight: "400", style: "italic", }, ], - variable: "--font-diatype", + variable: "--font-inter", }); -const diatypeVariable = localFont({ + +const interVariable = localFont({ src: [ { - path: "./assets/fonts/ABCDiatypeVariable.woff2", + path: "./assets/fonts/inter_variable.ttf", weight: "100 700", style: "normal", }, ], - variable: "--font-diatype-variable", + variable: "--font-inter-variable", }); -const alternateGothic = localFont({ - src: "./assets/fonts/alternategothicno1.otf", - variable: "--font-alternate-gothic-no-1-d", +const leagueGothic = localFont({ + src: "./assets/fonts/league_gothic_variable.ttf", + variable: "--font-league-gothic", }); export async function generateMetadata(): Promise { return { title: "Metaculus", - description: "Metaculus rewrite", + description: "Metaculus", metadataBase: new URL( process.env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000" ), @@ -121,7 +121,7 @@ export default async function RootLayout({ return ( = ({ className }) => { + const router = useRouter(); + const { params } = useSearchParams(); + const pathname = usePathname(); + + return ( + + + a/ + + + + + + + + + + + + + + + + + + ); +}; + +export default LanguageMenu; diff --git a/front_end/src/components/news_card.tsx b/front_end/src/components/news_card.tsx index d46def8b04..b5ef08b278 100644 --- a/front_end/src/components/news_card.tsx +++ b/front_end/src/components/news_card.tsx @@ -28,7 +28,7 @@ const NewsCard: FC = ({ post }) => { className="flex flex-col items-stretch no-underline sm:h-64 sm:flex-row-reverse" > {post.notebook.image_url && - post.notebook.image_url.startsWith("https:") ? ( + post.notebook.image_url.startsWith("https:") && ( = ({ post }) => { className="h-auto w-full object-cover max-sm:h-40 max-sm:rounded-t sm:h-full sm:w-60 sm:rounded-r" unoptimized /> - ) : ( - <> )}
    @@ -48,7 +46,7 @@ const NewsCard: FC = ({ post }) => {

    {post.title}

    -
    +
    {!!width && ( ( "border border-blue-500 bg-gray-0 text-blue-700 no-underline hover:border-blue-600 hover:bg-blue-100 active:border-blue-600 active:bg-blue-200 disabled:border-blue-500 disabled:bg-gray-0 dark:border-blue-500-dark dark:bg-gray-0-dark dark:text-blue-700-dark dark:hover:border-blue-600-dark dark:hover:bg-blue-100-dark dark:active:border-blue-600-dark dark:active:bg-blue-200-dark disabled:dark:border-blue-500-dark disabled:dark:bg-gray-0-dark", text: "border border-transparent text-blue-800 no-underline hover:text-blue-900 active:text-blue-700 disabled:text-blue-800 dark:text-blue-800-dark dark:hover:text-blue-900-dark dark:active:text-blue-700-dark disabled:dark:text-blue-800-dark", link: "text-blue-800 underline hover:text-blue-900 active:text-blue-700 disabled:text-blue-800 dark:text-blue-800-dark dark:hover:text-blue-900-dark dark:active:text-blue-700-dark disabled:dark:text-blue-800-dark", - bright: - "rounded-none border border-gray-900-dark bg-blue-100-dark font-alternate-gothic font-light uppercase tracking-[0.08em] text-gray-900-dark", }[variant], className )} diff --git a/front_end/src/constants/chart_theme.ts b/front_end/src/constants/chart_theme.ts index e9d4e960f8..643cdf3847 100644 --- a/front_end/src/constants/chart_theme.ts +++ b/front_end/src/constants/chart_theme.ts @@ -1,7 +1,7 @@ import { merge } from "lodash"; import { VictoryTheme, VictoryThemeDefinition } from "victory"; -const sansSerif = "var(--font-diatype-variable) var(--font-diatype)"; +const sansSerif = "var(--font-inter-variable) var(--font-inter)"; const baseChart: VictoryThemeDefinition = { chart: { diff --git a/front_end/tailwind.config.ts b/front_end/tailwind.config.ts index 7be069ca52..e408041426 100644 --- a/front_end/tailwind.config.ts +++ b/front_end/tailwind.config.ts @@ -30,8 +30,8 @@ const config: Config = { }, fontFamily: { sans: [ - "var(--font-diatype-variable)", - "var(--font-diatype)", + "var(--font-inter-variable)", + "var(--font-inter)", ...defaultTheme.fontFamily.sans, ], serif: [ @@ -39,7 +39,7 @@ const config: Config = { ...defaultTheme.fontFamily.serif, ], mono: ['"Ubuntu mono"', ...defaultTheme.fontFamily.mono], - "alternate-gothic": "var(--font-alternate-gothic-no-1-d)", + "league-gothic": "var(--font-league-gothic)", }, strokeWidth: { "3": "3px", diff --git a/notifications/templates/emails/comment_report.html b/notifications/templates/emails/comment_report.html index 3640d1f4de..635035b825 100644 --- a/notifications/templates/emails/comment_report.html +++ b/notifications/templates/emails/comment_report.html @@ -151,17 +151,17 @@ -
    Hello {{recipient.username}},
    +
    Hello {{recipient.username}},
    -
    {% blocktrans with count=params|length %} The following {{count}} comments were reported: {% endblocktrans %}
    +
    {% blocktrans with count=params|length %} The following {{count}} comments were reported: {% endblocktrans %}
    -
    +
      {% for comment in params %}
    • @{{ comment.author_username }}: “{{ comment.preview_text }}”. (link)
      @@ -191,7 +191,7 @@ -
      {% blocktrans %} Happy Predicting,
      The Metaculus Team {% endblocktrans %}
      +
      {% blocktrans %} Happy Predicting,
      The Metaculus Team {% endblocktrans %}
      @@ -215,7 +215,7 @@ -
      +

      {% blocktrans %} If you no longer wish to receive this type of email, you can unsubscribe here. You can also manage your notification settings on your Metaculus settings page. {% endblocktrans %}

      diff --git a/notifications/templates/emails/post_cp_change.html b/notifications/templates/emails/post_cp_change.html index 9e291cfcf2..f1e77c4a8f 100644 --- a/notifications/templates/emails/post_cp_change.html +++ b/notifications/templates/emails/post_cp_change.html @@ -151,16 +151,16 @@ -
      Hello {{recipient.username}},
      +
      Hello {{recipient.username}},
      -
      {% blocktrans with count=params|length %} There has been significant change in the Community prediction for these {{count}} questions: {% endblocktrans %}
      +
      {% blocktrans with count=params|length %} There has been significant change in the Community prediction for these {{count}} questions: {% endblocktrans %}
      {% for notification in params %} -
      +
      {{ notification.post.post_title }} @@ -204,12 +204,12 @@ -
      {% blocktrans %}

      Here are some other questions you may be interested in:

      {% endblocktrans %}
      +
      {% blocktrans %}

      Here are some other questions you may be interested in:

      {% endblocktrans %}
      -
      {% for post in similar_posts %}
      +
      {% for post in similar_posts %}
      {{ post.title }} @@ -240,7 +240,7 @@ -
      {% blocktrans %} Happy Predicting,
      The Metaculus Team {% endblocktrans %}
      +
      {% blocktrans %} Happy Predicting,
      The Metaculus Team {% endblocktrans %}
      @@ -264,7 +264,7 @@ -
      +

      {% blocktrans %} If you no longer wish to receive this type of email, you can unsubscribe here. You can also manage your notification settings on your Metaculus settings page. {% endblocktrans %}

      diff --git a/notifications/templates/emails/post_milestone.html b/notifications/templates/emails/post_milestone.html index 88fd53ed5f..93397348e3 100644 --- a/notifications/templates/emails/post_milestone.html +++ b/notifications/templates/emails/post_milestone.html @@ -151,16 +151,16 @@ -
      Hello {{recipient.username}},
      +
      Hello {{recipient.username}},
      -
      {% blocktrans with count=params|length %} These {{count}} questions have reached a milestone in their lifetime: {% endblocktrans %}
      +
      {% blocktrans with count=params|length %} These {{count}} questions have reached a milestone in their lifetime: {% endblocktrans %}
      {% for notification in params %} -
      +
      {{ notification.post.post_title }} @@ -190,12 +190,12 @@ -
      {% blocktrans %}

      Here are some other questions you may be interested in:

      {% endblocktrans %}
      +
      {% blocktrans %}

      Here are some other questions you may be interested in:

      {% endblocktrans %}
      -
      {% for post in similar_posts %}
      +
      {% for post in similar_posts %}
      {{ post.title }} @@ -226,7 +226,7 @@ -
      {% blocktrans %} Happy Predicting,
      The Metaculus Team {% endblocktrans %}
      +
      {% blocktrans %} Happy Predicting,
      The Metaculus Team {% endblocktrans %}
      @@ -250,7 +250,7 @@ -
      +

      {% blocktrans %} If you no longer wish to receive this type of email, you can unsubscribe here. You can also manage your notification settings on your Metaculus settings page. {% endblocktrans %}

      diff --git a/notifications/templates/emails/post_new_comments.html b/notifications/templates/emails/post_new_comments.html index 633bb23b9f..68702f2123 100644 --- a/notifications/templates/emails/post_new_comments.html +++ b/notifications/templates/emails/post_new_comments.html @@ -151,22 +151,22 @@ -
      Hello {{recipient.username}},
      +
      Hello {{recipient.username}},
      -
      {% blocktrans with count=notifications|length %} There are new comments on these {{ count }} questions: {% endblocktrans %}
      +
      {% blocktrans with count=notifications|length %} There are new comments on these {{ count }} questions: {% endblocktrans %}
      -
      {% for notification in notifications %}
      +
      {% for notification in notifications %}
      -
      +
      {{ notification.post.post_title }} - {{ notification.comments_count }}
        {% for comment in notification.comments %}
      • @@ -177,7 +177,7 @@ -
        {% endfor %}
        +
        {% endfor %}
        @@ -201,12 +201,12 @@ -
        {% blocktrans %}

        Here are some other questions you may be interested in:

        {% endblocktrans %}
        +
        {% blocktrans %}

        Here are some other questions you may be interested in:

        {% endblocktrans %}
        -
        {% for post in similar_posts %}
        +
        {% for post in similar_posts %}
        {{ post.title }} @@ -237,7 +237,7 @@ -
        {% blocktrans %} Happy Predicting,
        The Metaculus Team {% endblocktrans %}
        +
        {% blocktrans %} Happy Predicting,
        The Metaculus Team {% endblocktrans %}
        @@ -261,7 +261,7 @@ -
        +

        {% blocktrans %} If you no longer wish to receive this type of email, you can unsubscribe here. You can also manage your notification settings on your Metaculus settings page. {% endblocktrans %}

        diff --git a/notifications/templates/emails/post_specific_time.html b/notifications/templates/emails/post_specific_time.html index 10d6c509be..2d74067bbd 100644 --- a/notifications/templates/emails/post_specific_time.html +++ b/notifications/templates/emails/post_specific_time.html @@ -151,16 +151,16 @@ -
        Hello {{recipient.username}},
        +
        Hello {{recipient.username}},
        -
        {% blocktrans with count=params|length %}You asked to be reminded about these {{count}} questions today:{% endblocktrans %}
        +
        {% blocktrans with count=params|length %}You asked to be reminded about these {{count}} questions today:{% endblocktrans %}
        {% for notification in params %} -
        +
        {{ notification.post.post_title }} @@ -190,12 +190,12 @@ -
        {% blocktrans %}

        Here are some other questions you may be interested in:

        {% endblocktrans %}
        +
        {% blocktrans %}

        Here are some other questions you may be interested in:

        {% endblocktrans %}
        -
        {% for post in similar_posts %}
        +
        {% for post in similar_posts %}
        {{ post.title }} @@ -226,7 +226,7 @@ -
        {% blocktrans %} Happy Predicting,
        The Metaculus Team {% endblocktrans %}
        +
        {% blocktrans %} Happy Predicting,
        The Metaculus Team {% endblocktrans %}
        @@ -250,7 +250,7 @@ -
        +

        {% blocktrans %} If you no longer wish to receive this type of email, you can unsubscribe here. You can also manage your notification settings on your Metaculus settings page. {% endblocktrans %}

        diff --git a/notifications/templates/emails/post_status_change.html b/notifications/templates/emails/post_status_change.html index 962a36e185..77743353ed 100644 --- a/notifications/templates/emails/post_status_change.html +++ b/notifications/templates/emails/post_status_change.html @@ -151,12 +151,12 @@ -
        Hello {{recipient.username}},
        +
        Hello {{recipient.username}},
        -
        {% if params.from_projects %} {% for item in params.from_projects %}

        {% blocktrans with project_name=item.project.name %} In {{project_name}}: {% endblocktrans %}

        {% for notification in item.notifications %}
      • +
        {% if params.from_projects %} {% for item in params.from_projects %}

        {% blocktrans with project_name=item.project.name %} In {{project_name}}: {% endblocktrans %}

        {% for notification in item.notifications %}
      • {{ notification.post.post_title }} is now {{notification.event}} @@ -188,12 +188,12 @@ -
        {% blocktrans %}

        Here are some other questions you may be interested in:

        {% endblocktrans %}
        +
        {% blocktrans %}

        Here are some other questions you may be interested in:

        {% endblocktrans %}
        -
        {% for post in similar_posts %}
        +
        {% for post in similar_posts %}
        {{ post.title }} @@ -224,7 +224,7 @@ -
        {% blocktrans %} Happy Predicting,
        The Metaculus Team {% endblocktrans %}
        +
        {% blocktrans %} Happy Predicting,
        The Metaculus Team {% endblocktrans %}
        @@ -248,7 +248,7 @@ -
        +

        {% blocktrans %} If you no longer wish to receive this type of email, you can unsubscribe here. You can also manage your notification settings on your Metaculus settings page. {% endblocktrans %}

        diff --git a/notifications/templates/emails/predicted_question_resolved.html b/notifications/templates/emails/predicted_question_resolved.html index f77672fbb3..73da9827a5 100644 --- a/notifications/templates/emails/predicted_question_resolved.html +++ b/notifications/templates/emails/predicted_question_resolved.html @@ -151,16 +151,16 @@ -
        Hello {{recipient.username}},
        +
        Hello {{recipient.username}},
        -
        {% blocktrans with count=params|length %} These {{count}} questions you predicted just resolved: {% endblocktrans %}
        +
        {% blocktrans with count=params|length %} These {{count}} questions you predicted just resolved: {% endblocktrans %}
        {% for notification in params %} -
        +
        {{ notification.question.title }} @@ -190,12 +190,12 @@ -
        {% blocktrans %}

        Here are some other questions you may be interested in:

        {% endblocktrans %}
        +
        {% blocktrans %}

        Here are some other questions you may be interested in:

        {% endblocktrans %}
        -
        {% for post in similar_posts %}
        +
        {% for post in similar_posts %}
        {{ post.title }} @@ -226,7 +226,7 @@ -
        {% blocktrans %} Happy Predicting,
        The Metaculus Team {% endblocktrans %}
        +
        {% blocktrans %} Happy Predicting,
        The Metaculus Team {% endblocktrans %}
        @@ -250,7 +250,7 @@ -
        +

        {% blocktrans %} If you no longer wish to receive this type of email, you can unsubscribe here. You can also manage your notification settings on your Metaculus settings page. {% endblocktrans %}

        diff --git a/static/fonts/metac_fonts.css b/static/fonts/metac_fonts.css index 13ff9ad1e7..6ed6ee07eb 100644 --- a/static/fonts/metac_fonts.css +++ b/static/fonts/metac_fonts.css @@ -1,22 +1,20 @@ @font-face { - font-family: "Diatype Variable"; - src: url("ABCDiatypeVariable.woff2") format("woff2-variations"), - url("ABCDiatypeVariable.woff") format("woff-variations"); + font-family: "Inter Variable"; + src: url("inter_variable.ttf") format("truetype"); font-weight: 100 700; } /* Fallback static font */ @font-face { - font-family: "Diatype"; - src: url("ABCDiatype-Regular.woff2") format("woff2"), - url("ABCDiatype-Regular.woff") format("woff"); + font-family: "Inter"; + src: url("inter_18pt-medium.ttf") format("truetype"); font-weight: 400; font-style: normal; } @font-face { - font-family: "Diatype"; - src: url("ABCDiatype-RegularItalic.woff2") format("woff2"); + font-family: "Inter"; + src: url("inter_18pt-mediumitalic.ttf") format("truetype"); font-weight: 400; font-style: italic; } diff --git a/templates/emails/email_styles.mjml b/templates/emails/email_styles.mjml index 029e233e9d..b67f4db90f 100644 --- a/templates/emails/email_styles.mjml +++ b/templates/emails/email_styles.mjml @@ -9,7 +9,7 @@ - + @@ -63,11 +63,11 @@ - + - - + +