Agregué internacionalización (i18n) a mi aplicación angular. Y quiero que funcione de esta manera:
Cuando el usuario visita el componente de inicio: localhost:4200/ . Detecto la configuración regional de localStorage y la agrego a la URL existente en la carga del componente. Para que la URL final sea algo así como localhost:4200/detectedLocale (por ejemplo: localhost:4200/en/ )
También quiero implementar el cambio entre idiomas. Entonces, cuando un usuario selecciona un nuevo idioma desde el selector de idioma, la URL se cambia, por ejemplo, de localhost:4200/fr/ a localhost:4200/en/
Para eso he usado window.location.pathname = '/' + selectedLocale . Para que todo el nombre de la ruta se sobrescriba.
Esto funcionó bien en el modo de desarrollo. Sin embargo, tuve algunos problemas con la implementación de la aplicación angular en otro servidor backend.
El enrutamiento del servidor backend es algo como lo siguiente:
/api : para el resto de llamadas (cosas de backend)/frontend : para la aplicación angular incrustada Creé mi aplicación angular usando ng build y especifiqué la frontend como base href .
Ahora, cuando ejecuto el servidor backend y presiono http://host/frontend/ , el componente de inicio se carga y luego se me redirige a http://host/language cosa que no quiero que suceda.
Supongo que es debido a la cosa window.location.pathname = '/' + selectedLocale . (Igual al cambiar de idioma).
Cómo puedo arreglar esto ? ¿Hay alguna alternativa a window.location.pathname ? Como una forma adecuada de agregar el idioma a la URL en angular teniendo en cuenta el prefijo (base href) y sin sobrescribir todo.
Tenga en cuenta también que estoy agregando esto en mi módulo de aplicación:
{ provide: APP_BASE_HREF, useValue: '/' + extractedLanguage },Algunas ideas ? Gracias por tu ayuda.