gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 03/04: WIP fixing translation context


From: gnunet
Subject: [taler-wallet-core] 03/04: WIP fixing translation context
Date: Mon, 14 Mar 2022 19:21:35 +0100

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

commit 1d7c8f7083f2aa98295f1ad28399c8e19a9e7754
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Mon Mar 14 12:15:41 2022 -0300

    WIP fixing translation context
---
 packages/taler-wallet-webextension/src/NavigationBar.tsx   |  4 +++-
 .../src/components/BankDetailsByPaytoType.tsx              |  5 ++++-
 .../taler-wallet-webextension/src/context/translation.ts   | 14 +++++---------
 packages/taler-wallet-webextension/src/hooks/useLang.ts    | 12 +++++++-----
 packages/taler-wallet-webextension/src/popupEntryPoint.tsx |  8 ++++++--
 .../taler-wallet-webextension/src/walletEntryPoint.tsx     |  9 +++++++--
 6 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/packages/taler-wallet-webextension/src/NavigationBar.tsx 
b/packages/taler-wallet-webextension/src/NavigationBar.tsx
index 14619473..bebe9436 100644
--- a/packages/taler-wallet-webextension/src/NavigationBar.tsx
+++ b/packages/taler-wallet-webextension/src/NavigationBar.tsx
@@ -24,10 +24,10 @@
 /**
  * Imports.
  */
-import { i18n, Translate } from "@gnu-taler/taler-util";
 import { VNode, h } from "preact";
 import { JustInDevMode } from "./components/JustInDevMode";
 import { NavigationHeader, NavigationHeaderHolder } from "./components/styled";
+import { useTranslationContext } from "./context/translation.js";
 
 /**
  * List of pages used by the wallet
@@ -61,6 +61,7 @@ export enum Pages {
 }
 
 export function PopupNavBar({ path = "" }: { path?: string }): VNode {
+  const { i18n } = useTranslationContext();
   return (
     <NavigationHeader>
       <a href="/balance" class={path.startsWith("/balance") ? "active" : ""}>
@@ -78,6 +79,7 @@ export function PopupNavBar({ path = "" }: { path?: string 
}): VNode {
 }
 
 export function WalletNavBar({ path = "" }: { path?: string }): VNode {
+  const { i18n } = useTranslationContext();
   return (
     <NavigationHeaderHolder>
       <NavigationHeader>
diff --git 
a/packages/taler-wallet-webextension/src/components/BankDetailsByPaytoType.tsx 
b/packages/taler-wallet-webextension/src/components/BankDetailsByPaytoType.tsx
index e9a32ebf..48360f7c 100644
--- 
a/packages/taler-wallet-webextension/src/components/BankDetailsByPaytoType.tsx
+++ 
b/packages/taler-wallet-webextension/src/components/BankDetailsByPaytoType.tsx
@@ -14,9 +14,10 @@
  GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
 
-import { PaytoUri, i18n } from "@gnu-taler/taler-util";
+import { PaytoUri } from "@gnu-taler/taler-util";
 import { Fragment, h, VNode } from "preact";
 import { useEffect, useState } from "preact/hooks";
+import { useTranslationContext } from "../context/translation.js";
 import { CopiedIcon, CopyIcon } from "../svg";
 import { ButtonBox, TooltipRight } from "./styled";
 
@@ -33,6 +34,8 @@ export function BankDetailsByPaytoType({
   exchangeBaseUrl,
   amount,
 }: BankDetailsProps): VNode {
+  const { i18n } = useTranslationContext();
+
   const firstPart = !payto ? undefined : !payto.isKnown ? (
     <Row
       name={<i18n.Translate>Account</i18n.Translate>}
diff --git a/packages/taler-wallet-webextension/src/context/translation.ts 
b/packages/taler-wallet-webextension/src/context/translation.ts
index abbda548..2ded0707 100644
--- a/packages/taler-wallet-webextension/src/context/translation.ts
+++ b/packages/taler-wallet-webextension/src/context/translation.ts
@@ -25,12 +25,13 @@ import { useLang } from "../hooks/useLang";
 //@ts-ignore: type declaration
 import * as jedLib from "jed";
 import { strings } from "../i18n/strings";
-import { setupI18n } from "@gnu-taler/taler-util";
+import { setupI18n, i18n } from "@gnu-taler/taler-util";
 
 interface Type {
   lang: string;
   supportedLang: { [id in keyof typeof supportedLang]: string }
   changeLanguage: (l: string) => void;
+  i18n: typeof i18n
 }
 
 const supportedLang = {
@@ -53,6 +54,7 @@ const initial = {
   changeLanguage: () => {
     // do not change anything
   },
+  i18n
 };
 const Context = createContext<Type>(initial);
 
@@ -62,18 +64,12 @@ interface Props {
   forceLang?: string;
 }
 
-//we use forceLang when we don't want to use the saved state, but sone forced
-//runtime lang predefined lang
 export const TranslationProvider = ({
   initial,
   children,
   forceLang,
 }: Props): VNode => {
-  const [lang, changeLanguage2] = useLang(initial);
-  function changeLanguage(s: string) {
-    console.log("trying to change lang to ", s, "current lang", lang)
-    changeLanguage2(s)
-  }
+  const [lang, changeLanguage] = useLang(initial);
   useEffect(() => {
     if (forceLang) {
       changeLanguage(forceLang);
@@ -87,7 +83,7 @@ export const TranslationProvider = ({
   } else {
     setupI18n(lang, strings);
   }
-  return h(Context.Provider, { value: { lang, changeLanguage, supportedLang }, 
children });
+  return h(Context.Provider, { value: { lang, changeLanguage, supportedLang, 
i18n }, children });
 };
 
 export const useTranslationContext = (): Type => useContext(Context);
diff --git a/packages/taler-wallet-webextension/src/hooks/useLang.ts 
b/packages/taler-wallet-webextension/src/hooks/useLang.ts
index cc4ff3fc..7215f225 100644
--- a/packages/taler-wallet-webextension/src/hooks/useLang.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useLang.ts
@@ -16,11 +16,13 @@
 
 import { useNotNullLocalStorage } from "./useLocalStorage";
 
+function getBrowserLang(): string | undefined {
+  if (window.navigator.languages) return window.navigator.languages[0]
+  if (window.navigator.language) return window.navigator.language
+  return undefined;
+}
+
 export function useLang(initial?: string): [string, (s: string) => void] {
-  const browserLang: string | undefined =
-    typeof window !== "undefined"
-      ? navigator.language || (navigator as any).userLanguage
-      : undefined;
-  const defaultLang = (browserLang || initial || "en").substring(0, 2);
+  const defaultLang = (getBrowserLang() || initial || "en").substring(0, 2);
   return useNotNullLocalStorage("lang-preference", defaultLang);
 }
diff --git a/packages/taler-wallet-webextension/src/popupEntryPoint.tsx 
b/packages/taler-wallet-webextension/src/popupEntryPoint.tsx
index c076f667..6a58648b 100644
--- a/packages/taler-wallet-webextension/src/popupEntryPoint.tsx
+++ b/packages/taler-wallet-webextension/src/popupEntryPoint.tsx
@@ -20,7 +20,7 @@
  * @author sebasjm <dold@taler.net>
  */
 
-import { setupI18n, i18n } from "@gnu-taler/taler-util";
+import { setupI18n } from "@gnu-taler/taler-util";
 import { createHashHistory } from "history";
 import { Fragment, h, render, VNode } from "preact";
 import Router, { route, Route } from "preact-router";
@@ -30,7 +30,10 @@ import PendingTransactions from 
"./components/PendingTransactions";
 import { PopupBox } from "./components/styled";
 import { DevContextProvider } from "./context/devContext";
 import { IoCProviderForRuntime } from "./context/iocContext";
-import { TranslationProvider } from "./context/translation";
+import {
+  TranslationProvider,
+  useTranslationContext,
+} from "./context/translation";
 import { useTalerActionURL } from "./hooks/useTalerActionURL";
 import { strings } from "./i18n/strings";
 import { Pages, PopupNavBar } from "./NavigationBar";
@@ -193,6 +196,7 @@ function RedirectToWalletPage(): VNode {
       },
     );
   });
+  const { i18n } = useTranslationContext();
   return (
     <span>
       <i18n.Translate>
diff --git a/packages/taler-wallet-webextension/src/walletEntryPoint.tsx 
b/packages/taler-wallet-webextension/src/walletEntryPoint.tsx
index e37bf149..9f96a03e 100644
--- a/packages/taler-wallet-webextension/src/walletEntryPoint.tsx
+++ b/packages/taler-wallet-webextension/src/walletEntryPoint.tsx
@@ -20,7 +20,7 @@
  * @author sebasjm <dold@taler.net>
  */
 
-import { i18n, setupI18n } from "@gnu-taler/taler-util";
+import { setupI18n } from "@gnu-taler/taler-util";
 import { createHashHistory } from "history";
 import { Fragment, h, render, VNode } from "preact";
 import Router, { route, Route } from "preact-router";
@@ -36,7 +36,10 @@ import {
 } from "./components/styled";
 import { DevContextProvider } from "./context/devContext";
 import { IoCProviderForRuntime } from "./context/iocContext";
-import { TranslationProvider } from "./context/translation";
+import {
+  TranslationProvider,
+  useTranslationContext,
+} from "./context/translation";
 import { PayPage } from "./cta/Pay";
 import { RefundPage } from "./cta/Refund";
 import { TipPage } from "./cta/Tip";
@@ -94,6 +97,8 @@ function Application(): VNode {
       setGlobalNotification(undefined);
     }
   }
+  const { i18n } = useTranslationContext();
+
   return (
     <TranslationProvider>
       <DevContextProvider>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]