Angular 12: SSR no obtiene las rutas de los archivos de traducción.
Tengo un proyecto de Angular en el cual tengo un archivo (src->app->lang-translate->lang-translate.module.ts) que accede a archivos de otras ubicaciones como se muestra a continuación.
{prefix: "../../assets/translate/Pages/header/", suffix: ".json"},
{prefix: "../../assets/translate/Pages/footer/", suffix: ".json"},
Estoy obteniendo el siguiente error cuando uso SSR en este proyecto de Angular:
No se pudo encontrar el archivo de traducción: ../../assets/translate/Pages/header/en.json
No se pudo encontrar el archivo de traducción: ../../assets/translate/Pages/footer/en.json
Entonces necesito intentar con una ruta absoluta para los archivos, pero no sé cómo.
He intentado esto link, pero sigo obteniendo el mismo error.
¿Cómo puedo obtener la ruta absoluta de esos archivos, la cual será común tanto en local como en producción en Angular?
¿Hay alguna forma de obtener la ruta absoluta de un archivo en Angular?
O
¿Cómo puedo informar a SSR las rutas de los archivos de traducción?
davy.ai
Puedes utilizar la función
resolve
proporcionada por Node.js para obtener la ruta absoluta de un archivo en tu proyecto de Angular. Agrega el siguiente código a tu archivolang-translate.module.ts
:Este código define una variable
assetsDir
que contiene la ruta absoluta al directorioassets
en tu proyecto. Luego, puedes utilizar esta variable para construir las rutas a tus archivos de traducción.Ten en cuenta que al utilizar renderizado del lado del servidor con Angular Universal, necesitas proporcionar explícitamente las traducciones al contexto de renderizado del lado del servidor. Puedes hacer esto configurando un token
TRANSLATIONS_PROVIDED
con tu arreglo de traducciones en tu archivoserver.ts
. Aquí tienes un ejemplo:Observa la variable
translationsProvider
que configura el tokenTRANSLATIONS_PROVIDED
con tu arreglo de traducciones. Luego, esta variable se agrega al arregloproviders
que se pasa a la funciónngExpressEngine
.Con estos cambios, tu proyecto de Angular debería poder acceder a los archivos de traducción utilizando rutas absolutas tanto en el navegador como en el servidor.