add es and fix translations

This commit is contained in:
dev.daminik00 2025-07-22 01:38:43 +03:00
parent 7e7a15c52b
commit 842bde481f
5 changed files with 241 additions and 15 deletions

View File

@ -54,7 +54,7 @@
"subscription_status": "Subscription Status",
"subscription_status_value": {
"ACTIVE": "Active",
"CANCELLED": "Cancels on <date>"
"CANCELLED": "Cancels on {date}"
},
"billing_period": "Billing Period",
"billing_period_value": {

View File

@ -55,7 +55,7 @@
"subscription_status": "Subscription Status",
"subscription_status_value": {
"ACTIVE": "Active",
"CANCELLED": "Cancels on <date>",
"CANCELLED": "Cancels on {date}",
"PAST_DUE": "Past due"
},
"billing_period": "Billing Period",

217
messages/es.json Normal file
View File

@ -0,0 +1,217 @@
{
"HomePage": {
"title": "¡Hola mundo!",
"about": "Ir a la página acerca de"
},
"Profile": {
"profile_information": {
"title": "Información del Perfil",
"description": "Para actualizar tu dirección de correo electrónico, por favor contacta al soporte.",
"email_placeholder": "Correo electrónico",
"name_placeholder": "Nombre"
},
"billing": {
"title": "Facturación",
"description": "Para acceder a la información de tu suscripción, por favor inicia sesión en tu cuenta de facturación.",
"subscription_type": "Tipo de Suscripción:",
"billing_button": "Facturación",
"credits": {
"title": "Te quedan {credits} créditos",
"description": "Puedes usarlos para chatear con cualquier Experto en la plataforma."
},
"any_questions": "¿Alguna pregunta? <link>{linkText}</link>",
"any_questions_link": "Contáctanos",
"subscription_update": "<bold>{subscriptionUpdateBold}</bold><br></br>Si acabas de comprar o cambiar de plan, el estado de tu suscripción cambiará en unas horas.",
"subscription_update_bold": "La información de la suscripción se actualiza cada pocas horas."
},
"log_out": {
"title": "Cerrar sesión",
"log_out_button": "Cerrar sesión",
"modal": {
"title": "¿Estás seguro de que quieres cerrar sesión?",
"description": "¿Estás seguro de que quieres cerrar sesión?",
"stay_button": "Quedarse",
"log_out_button": "Cerrar sesión"
}
}
},
"Subscriptions": {
"title": "Gestionar mis suscripciones",
"success_cancel_message": "Tu suscripción ha sido cancelada exitosamente",
"modal": {
"title": "¿Estás seguro de que quieres cancelar tu suscripción?",
"description": "¿Estás seguro de que quieres cancelar tu suscripción?",
"cancel_button": "Cancelar suscripción",
"stay_button": "Quedarse"
},
"table": {
"subscription_type": "Tipo de Suscripción",
"subscription_type_value": {
"DAY": "Suscripción Diaria",
"WEEK": "Suscripción Semanal",
"MONTH": "Suscripción Mensual",
"YEAR": "Suscripción Anual"
},
"subscription_status": "Estado de la Suscripción",
"subscription_status_value": {
"ACTIVE": "Activa",
"CANCELLED": "Se cancela el {date}",
"PAST_DUE": "Vencida"
},
"billing_period": "Período de Facturación",
"billing_period_value": {
"DAY": "Día",
"WEEK": "Semana",
"MONTH": "Mes",
"YEAR": "Año"
},
"last_payment_on": "Último Pago el",
"renewal_date": "Fecha de Renovación",
"renewal_amount": "Monto de Renovación",
"cancel_subscription": "Cancelar Suscripción"
},
"no_subscriptions": "No tienes ninguna suscripción",
"error": "Algo salió mal. Por favor, inténtalo de nuevo más tarde.",
"try_again": "Intentar de nuevo"
},
"CancelSubscription": {
"title": "Lamentamos que te vayas…",
"description": "Muchos se van justo en el momento en que el astrólogo comienza a ver el punto de inflexión en su historia.<br></br><br></br>Permítenos hacer un par de preguntas para mejorar nuestro servicio - y tal vez ofrecer una solución que se adapte mejor a ti.",
"stay_button": "Quedarse y reducir mi plan en 50%",
"cancel_button": "Cancelar",
"error_message": "Algo salió mal. Por favor, inténtalo de nuevo más tarde."
},
"Stay50Done": {
"title": "¡Valoramos tu elección!",
"descriptions": {
"1": "Plan cambiado exitosamente"
},
"button": "Listo"
},
"AppreciateChoice": {
"title": "¡Valoramos tu elección!",
"descriptions": {
"1": "Seleccionando la solución óptima...",
"2": "Creando encuesta personalizada...",
"3": "Formando oferta ventajosa..."
},
"button": "Siguiente"
},
"WhatReason": {
"title": "¿Cuál fue la razón?",
"answers": {
"no_promised_result": "No obtuve el resultado prometido",
"too_expensive": "Muy caro",
"no_time": "No tengo tiempo",
"technical_issues": "Problemas técnicos",
"dislike_app": "No me gustó la aplicación",
"hard_to_navigate": "Es difícil navegar en la aplicación",
"other": "Otro"
}
},
"Payment": {
"Success": {
"title": "Pago exitoso",
"button": "Listo"
},
"Error": {
"title": "Pago fallido",
"button": "Intentar de nuevo"
}
},
"SecondChance": {
"title": "Danos una segunda oportunidad y obtén el mejor plan GRATIS",
"offers": {
"1": {
"title": "Plan gratuito por<br></br>1 mes",
"description": "Usa todo el potencial de AURA y aún más.",
"old-price": "1900",
"new-price": "0"
},
"2": {
"title": "Plan premium gratuito",
"description": "Consulta gratuita de 30 min con un Asesor premium",
"old-price": "4900",
"new-price": "0"
}
},
"get_offer": "Obtener plan gratuito",
"cancel": "Cancelar",
"error_message": "Algo salió mal. Por favor, inténtalo de nuevo más tarde."
},
"ChangeMind": {
"title": "¿Qué podría cambiar tu opinión?",
"answers": {
"more_chat_time": "Más tiempo de chat",
"more_personal_reports": "Más reportes personalizados",
"individual_plan": "Plan individual",
"other": "Otro"
}
},
"StopFor30Days": {
"title": "Pausa la suscripción por treinta días. Sin cargos.",
"stop": "Pausar",
"cancel": "Cancelar",
"error_message": "Algo salió mal. Por favor, inténtalo de nuevo más tarde."
},
"CancellationOfSubscription": {
"title": "¡La suscripción será cancelada!",
"description": "Para cancelar la suscripción, presiona \"Confirmo mis acciones\"",
"offer": {
"title": "Plan gratuito de 2 meses",
"old-price": "9900",
"new-price": "0"
},
"offer_button": "Aplicar",
"cancel_button": "Confirmo mis acciones",
"error_message": "Algo salió mal. Por favor, inténtalo de nuevo más tarde.",
"toast_message": "¡Tu suscripción será cancelada!"
},
"PlanCancelled": {
"title": "¡Plan Estándar Cancelado!",
"icon": "🥳",
"description": "Transición completada al plan gratuito de treinta días",
"button": "Listo"
},
"SubscriptionStopped": {
"title": "¡Suscripción pausada exitosamente!",
"icon": "🎉"
},
"DatePicker": {
"year": "AAAA",
"month": "MM",
"day": "DD"
},
"TimePicker": {
"hour": "HH",
"minute": "MM",
"period": "AM/PM"
},
"Compatibility": {
"title": "Tu Tipo de Personalidad",
"description": "Por favor ingresa tus datos para crear el reporte.",
"button": "Continuar",
"error": "Algo salió mal. Por favor, inténtalo de nuevo más tarde."
},
"CompatibilityResult": {
"title": "Tu Tipo de Personalidad",
"error": "Algo salió mal. Por favor, inténtalo de nuevo más tarde."
},
"PalmistryResult": {
"title": "Tu Tipo de Personalidad",
"error": "Algo salió mal. Por favor, inténtalo de nuevo más tarde."
},
"Meditation": {
"title": "Para y respira para ayudarte a relajar y enfocarte en lo que realmente importa.",
"subtitle": "La práctica de respiración ayudará a mejorar tu aura. Inhala la energía positiva, exhala la negativa...",
"button": "COMENZAR"
},
"MeditationResult": {
"breath_relax": "Respira y Relájate",
"breath_in": "Inhalar",
"breath_out": "Exhalar"
},
"ActionFieldsForm": {
"required_field": "Este campo es obligatorio"
}
}

View File

@ -1,6 +1,6 @@
"use client";
import { ReactNode, useMemo } from "react";
import { ReactNode, useCallback, useMemo } from "react";
import { useTranslations } from "next-intl";
import { Button, Typography } from "@/components/ui";
@ -22,6 +22,24 @@ export default function SubscriptionTable({ subscription }: ITableProps) {
const t = useTranslations("Subscriptions");
const { open } = useCancelSubscriptionModal();
const getSubscriptionStatusText = useCallback(() => {
if (subscription.subscriptionStatus === "CANCELLED") {
if (subscription.cancellationDate) {
const formattedDate = formatDate(subscription.cancellationDate);
if (formattedDate) {
return t(
`table.subscription_status_value.${subscription.subscriptionStatus}`,
{
date: formattedDate,
}
);
}
}
return "Cancelled";
}
return t(`table.subscription_status_value.${subscription.subscriptionStatus}`);
}, [subscription.subscriptionStatus, subscription.cancellationDate, t]);
const tableData: ReactNode[][] = useMemo(() => {
const data: ReactNode[][] = [
[
@ -30,16 +48,7 @@ export default function SubscriptionTable({ subscription }: ITableProps) {
],
[
t("table.subscription_status"),
subscription.subscriptionStatus === "CANCELLED" && subscription.cancellationDate
? t(
`table.subscription_status_value.${subscription.subscriptionStatus}`,
{
date: formatDate(subscription.cancellationDate) as string,
}
)
: subscription.subscriptionStatus === "CANCELLED"
? "Cancelled"
: t(`table.subscription_status_value.${subscription.subscriptionStatus}`),
getSubscriptionStatusText(),
],
[
t("table.billing_period"),
@ -71,7 +80,7 @@ export default function SubscriptionTable({ subscription }: ITableProps) {
}
return data;
}, [subscription, t, open]);
}, [subscription, t, open, getSubscriptionStatusText]);
return <Table data={tableData} />;
}

View File

@ -2,7 +2,7 @@ import { defineRouting } from "next-intl/routing";
export const routing = defineRouting({
// A list of all locales that are supported
locales: ["en", "de"],
locales: ["en", "de", "es"],
// Used when no locale matches
defaultLocale: "en",