helper.ts 669 B

123456789101112131415161718192021222324
  1. export function langMessageFactory(
  2. requireModules: Record<string, () => Promise<unknown>>,
  3. prefix = 'lang'
  4. ) {
  5. const lang: Recordable = {}
  6. const filenames = Object.keys(requireModules)
  7. for (let filename of filenames) {
  8. const langAtom = (requireModules[filename] as any).default
  9. filename = filename.replace(`./${prefix}/`, '').replace(/^\.\//, '')
  10. filename = filename.substring(0, filename.lastIndexOf('.'))
  11. const locals = filename.split('/')
  12. const langname = locals.pop()
  13. let current = lang
  14. for (const name of locals) {
  15. lang[name] = current = lang[name] || {}
  16. }
  17. current[langname] = langAtom
  18. }
  19. return lang
  20. }