useRedirectToPage
Redirige al usuario a una página localizada según el idioma actual de la app.
Implementación del Composable:
Section titled “Implementación del Composable:”// Importa la configuración de rutas por idioma desde el archivo de traduccionesimport pages from "@/config/i18n";
/** * Redirige al usuario a una página localizada según el idioma actual de la app. * * @param page - Nombre de la página a la que se quiere redirigir. Corresponde con los nombres definidos en config/i18n/pages.ts. * Ejemplo: 'iniciar-sesion' o 'gracias'. * @param messageEndpoint - Parámetro opcional que se añade como query string. * Se usa por ejemplo al redirigir a la página de agradecimiento ('gracias') * para mostrar un mensaje específico como 'forgotPassword' o 'changePassword'. */export function redirectToPage(page: string, messageEndpoint?: string) { // Obtiene el idioma actual desde la store global de idiomas const { getLanguage } = useLanguageStore();
// Obtiene el enrutador de Vue (para redirección) const router = useRouter();
// Verifica que la estructura de páginas esté disponible if (pages.pages) { // Busca las rutas definidas para la página deseada const urls = pages.pages[page] ?? {};
let cnt = 0;
// Itera sobre cada idioma disponible para la página for (const [key, value] of Object.entries(urls)) { // Si el idioma coincide con el idioma actual de la app if (getLanguage === key) { // La primera entrada suele ser el idioma por defecto (sin prefijo de idioma) const baseRoute = cnt === 0 ? `${value}` : `/${key}${value}`;
// Si se proporciona un mensaje, se agrega como parámetro de consulta const messageParam = messageEndpoint ? `/?message=${messageEndpoint}` : "";
// Realiza la redirección router.push(baseRoute + messageParam); break; // Finaliza el bucle tras redirigir } cnt++; } }}Ejemplo de uso:
Section titled “Ejemplo de uso:”<script setup lang="ts">//logica de la páginaredirectToPage("gracias", "forgotPassword");</script>