30 lines
903 B
JavaScript
30 lines
903 B
JavaScript
import { languages, langCodeToJsonName } from '../src/i18n/languages.js'
|
|
import { readFile } from 'node:fs/promises'
|
|
import { dirname, resolve } from 'node:path'
|
|
import { fileURLToPath } from 'node:url'
|
|
|
|
const i18nDir = resolve(
|
|
dirname(dirname(fileURLToPath(import.meta.url))),
|
|
'src/i18n'
|
|
)
|
|
|
|
export const i18nFiles = languages.reduce((acc, lang) => {
|
|
const name = langCodeToJsonName(lang)
|
|
const file = resolve(i18nDir, name + '.json')
|
|
acc[lang] = file
|
|
return acc
|
|
}, {})
|
|
|
|
export const generateServiceWorkerMessages = async () => {
|
|
const msgArray = await Promise.all(Object.entries(i18nFiles).map(async ([lang, file]) => {
|
|
const fileContent = await readFile(file, 'utf-8')
|
|
const msg = {
|
|
notifications: JSON.parse(fileContent).notifications || {}
|
|
}
|
|
return [lang, msg]
|
|
}))
|
|
return msgArray.reduce((acc, [lang, msg]) => {
|
|
acc[lang] = msg
|
|
return acc
|
|
}, {})
|
|
}
|