Skip to content

useRedirectToPage

Redirige al usuario a una página localizada según el idioma actual de la app.

// Importa la configuración de rutas por idioma desde el archivo de traducciones
import 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++;
}
}
}
<script setup lang="ts">
//logica de la página
redirectToPage("gracias", "forgotPassword");
</script>