From 21764214c257949844d87e445f1a9f2736a20561 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Fri, 10 Jun 2022 00:35:22 +0200 Subject: feat: Add translations to stopwatch.svelte This commit also demonstrates how to do i18n across apps. --- apps/web-shared/src/lib/i18n/i18n-util.async.ts | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 apps/web-shared/src/lib/i18n/i18n-util.async.ts (limited to 'apps/web-shared/src/lib/i18n/i18n-util.async.ts') diff --git a/apps/web-shared/src/lib/i18n/i18n-util.async.ts b/apps/web-shared/src/lib/i18n/i18n-util.async.ts new file mode 100644 index 0000000..90e55a7 --- /dev/null +++ b/apps/web-shared/src/lib/i18n/i18n-util.async.ts @@ -0,0 +1,27 @@ +// This file was auto-generated by 'typesafe-i18n'. Any manual changes will be overwritten. +/* eslint-disable */ + +import { initFormatters } from './formatters' +import type { Locales, Translations } from './i18n-types.js' +import { loadedFormatters, loadedLocales, locales } from './i18n-util' + +const localeTranslationLoaders = { + en: () => import('./en/index.js'), + nb: () => import('./nb/index.js'), +} + +const updateDictionary = (locale: Locales, dictionary: Partial) => + loadedLocales[locale] = { ...loadedLocales[locale], ...dictionary } + +export const loadLocaleAsync = async (locale: Locales): Promise => { + updateDictionary( + locale, + (await localeTranslationLoaders[locale]()).default as unknown as Translations + ) + loadFormatters(locale) +} + +export const loadAllLocalesAsync = (): Promise => Promise.all(locales.map(loadLocaleAsync)) + +export const loadFormatters = (locale: Locales): void => + void (loadedFormatters[locale] = initFormatters(locale)) -- cgit v1.3