2022-07-20 11:21:48 -04:00
|
|
|
import {build} from '../../../packages/i18n/src/prebuild.mjs'
|
2022-07-23 23:16:25 -05:00
|
|
|
import {denyList} from '../../../packages/i18n/scripts/prebuilder.mjs'
|
|
|
|
import fs from 'fs'
|
|
|
|
import path from 'path'
|
2022-02-06 15:44:00 +01:00
|
|
|
|
2022-07-20 11:21:48 -04:00
|
|
|
export const prebuildI18n = async(site, only=false) => {
|
2022-07-23 23:16:25 -05:00
|
|
|
const writeJson = async (locale, namespace, content) => fs.writeFileSync(
|
|
|
|
path.resolve(
|
|
|
|
'..',
|
|
|
|
site,
|
|
|
|
'public',
|
|
|
|
'locales',
|
|
|
|
locale,
|
|
|
|
`${namespace}.json`
|
|
|
|
),
|
|
|
|
JSON.stringify(content)
|
|
|
|
)
|
|
|
|
|
2022-08-04 20:20:53 +02:00
|
|
|
const filter = site === 'dev' ? (loc => loc === 'en') : (loc => denyList.indexOf(loc) === -1)
|
2022-07-23 23:16:25 -05:00
|
|
|
const locales = await build(filter, only)
|
|
|
|
|
|
|
|
console.log (`copying them to ${site}`, Object.keys(locales))
|
|
|
|
|
|
|
|
const languages = {}
|
|
|
|
Object.keys(locales).forEach(l => languages[l] = locales[l].i18n[l])
|
|
|
|
for (const locale in locales) {
|
|
|
|
// Only English for dev site
|
|
|
|
const loc = locales[locale]
|
|
|
|
// Fan out into namespaces
|
|
|
|
for (const namespace in loc) {
|
|
|
|
writeJson(
|
|
|
|
locale, namespace,
|
|
|
|
loc[namespace]
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
writeJson(locale, 'locales', languages)
|
|
|
|
}
|
2022-02-06 15:44:00 +01:00
|
|
|
}
|