summaryrefslogtreecommitdiff
path: root/packages/web-util/src/context/translation.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/web-util/src/context/translation.ts')
-rw-r--r--packages/web-util/src/context/translation.ts19
1 files changed, 17 insertions, 2 deletions
diff --git a/packages/web-util/src/context/translation.ts b/packages/web-util/src/context/translation.ts
index 53ca87f9d..fb6efc40a 100644
--- a/packages/web-util/src/context/translation.ts
+++ b/packages/web-util/src/context/translation.ts
@@ -18,6 +18,13 @@ import { i18n, setupI18n } from "@gnu-taler/taler-util";
import { ComponentChildren, createContext, h, VNode } from "preact";
import { useContext, useEffect } from "preact/hooks";
import { useLang } from "../hooks/index.js";
+import { Locale } from "date-fns";
+import {
+ es as esLocale,
+ enGB as enLocale,
+ fr as frLocale,
+ de as deLocale
+} from "date-fns/locale"
export type InternationalizationAPI = typeof i18n;
@@ -26,6 +33,7 @@ interface Type {
supportedLang: { [id in keyof typeof supportedLang]: string };
changeLanguage: (l: string) => void;
i18n: InternationalizationAPI;
+ dateLocale: Locale,
}
const supportedLang = {
@@ -38,13 +46,14 @@ const supportedLang = {
navigator: "Defined by navigator",
};
-const initial = {
+const initial: Type = {
lang: "en",
supportedLang,
changeLanguage: () => {
// do not change anything
},
i18n,
+ dateLocale: enLocale
};
const Context = createContext<Type>(initial);
@@ -63,6 +72,7 @@ export const TranslationProvider = ({
source,
}: Props): VNode => {
const { value: lang, update: changeLanguage } = useLang(initial);
+
useEffect(() => {
if (forceLang) {
changeLanguage(forceLang);
@@ -77,8 +87,13 @@ export const TranslationProvider = ({
setupI18n(lang, source);
}
+ const dateLocale = lang === "es" ? esLocale :
+ lang === "fr" ? frLocale :
+ lang === "de" ? deLocale :
+ enLocale;
+
return h(Context.Provider, {
- value: { lang, changeLanguage, supportedLang, i18n },
+ value: { lang, changeLanguage, supportedLang, i18n, dateLocale },
children,
});
};