|
|
|
@ -97,20 +97,29 @@ export class HtmlTemplateMiddleware implements NestMiddleware { |
|
|
|
private indexHtmlMap: { [languageCode: string]: string } = {}; |
|
|
|
|
|
|
|
public constructor(private readonly i18nService: I18nService) { |
|
|
|
try { |
|
|
|
this.indexHtmlMap = SUPPORTED_LANGUAGE_CODES.reduce( |
|
|
|
(map, languageCode) => ({ |
|
|
|
...map, |
|
|
|
[languageCode]: readFileSync( |
|
|
|
join(__dirname, '..', 'client', languageCode, 'index.html'), |
|
|
|
'utf8' |
|
|
|
) |
|
|
|
}), |
|
|
|
{} |
|
|
|
); |
|
|
|
} catch (error) { |
|
|
|
this.logger.error('Failed to initialize index HTML map', error); |
|
|
|
if (!environment.production) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
this.indexHtmlMap = SUPPORTED_LANGUAGE_CODES.reduce((map, languageCode) => { |
|
|
|
const indexHtmlPath = join( |
|
|
|
__dirname, |
|
|
|
'..', |
|
|
|
'client', |
|
|
|
languageCode, |
|
|
|
'index.html' |
|
|
|
); |
|
|
|
|
|
|
|
try { |
|
|
|
map[languageCode] = readFileSync(indexHtmlPath, 'utf8'); |
|
|
|
} catch { |
|
|
|
this.logger.warn( |
|
|
|
`Skipping language '${languageCode}': ${indexHtmlPath} not found` |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
return map; |
|
|
|
}, {}); |
|
|
|
} |
|
|
|
|
|
|
|
public use(request: Request, response: Response, next: NextFunction) { |
|
|
|
@ -118,7 +127,8 @@ export class HtmlTemplateMiddleware implements NestMiddleware { |
|
|
|
let languageCode = path.substr(1, 2); |
|
|
|
|
|
|
|
if ( |
|
|
|
!(SUPPORTED_LANGUAGE_CODES as readonly string[]).includes(languageCode) |
|
|
|
!(SUPPORTED_LANGUAGE_CODES as readonly string[]).includes(languageCode) || |
|
|
|
!this.indexHtmlMap[languageCode] |
|
|
|
) { |
|
|
|
languageCode = DEFAULT_LANGUAGE_CODE; |
|
|
|
} |
|
|
|
|