From 54577a1a304ab2dfcd30534146356ce57499a198 Mon Sep 17 00:00:00 2001 From: Vladimir Romashchenko Date: Thu, 3 Sep 2020 22:40:28 -0400 Subject: [PATCH 1/2] Made locales load lazily. --- src/components/Locale/Locale.tsx | 99 ++++---------------------------- 1 file changed, 12 insertions(+), 87 deletions(-) diff --git a/src/components/Locale/Locale.tsx b/src/components/Locale/Locale.tsx index e8f3dd6eb..20c0c4afe 100644 --- a/src/components/Locale/Locale.tsx +++ b/src/components/Locale/Locale.tsx @@ -1,46 +1,6 @@ -import locale_AR from "@locale/ar.json"; -import locale_AZ from "@locale/az.json"; -import locale_BG from "@locale/bg.json"; -import locale_BN from "@locale/bn.json"; -import locale_CA from "@locale/ca.json"; -import locale_CS from "@locale/cs.json"; -import locale_DA from "@locale/da.json"; -import locale_DE from "@locale/de.json"; -import locale_EL from "@locale/el.json"; -import locale_ES_CO from "@locale/es_CO.json"; -import locale_ES from "@locale/es.json"; -import locale_ET from "@locale/et.json"; -import locale_FA from "@locale/fa.json"; -import locale_FR from "@locale/fr.json"; -import locale_HI from "@locale/hi.json"; -import locale_HU from "@locale/hu.json"; -import locale_HY from "@locale/hy.json"; -import locale_ID from "@locale/id.json"; -import locale_IS from "@locale/is.json"; -import locale_IT from "@locale/it.json"; -import locale_JA from "@locale/ja.json"; -import locale_KO from "@locale/ko.json"; -import locale_MN from "@locale/mn.json"; -import locale_NB from "@locale/nb.json"; -import locale_NL from "@locale/nl.json"; -import locale_PL from "@locale/pl.json"; -import locale_PT_BR from "@locale/pt_BR.json"; -import locale_PT from "@locale/pt.json"; -import locale_RO from "@locale/ro.json"; -import locale_RU from "@locale/ru.json"; -import locale_SK from "@locale/sk.json"; -import locale_SL from "@locale/sl.json"; -import locale_SQ from "@locale/sq.json"; -import locale_SR from "@locale/sr.json"; -import locale_SV from "@locale/sv.json"; -import locale_TH from "@locale/th.json"; -import locale_TR from "@locale/tr.json"; -import locale_UK from "@locale/uk.json"; -import locale_VI from "@locale/vi.json"; -import locale_ZH_HANS from "@locale/zh-Hans.json"; -import locale_ZH_HANT from "@locale/zh-Hant.json"; import useLocalStorage from "@saleor/hooks/useLocalStorage"; import React from "react"; +import { useEffect } from "react"; import { IntlProvider } from "react-intl"; export enum Locale { @@ -93,51 +53,6 @@ interface StructuredMessage { string: string; } type LocaleMessages = Record; -const localeData: Record = { - [Locale.AR]: locale_AR, - [Locale.AZ]: locale_AZ, - [Locale.BG]: locale_BG, - [Locale.BN]: locale_BN, - [Locale.CA]: locale_CA, - [Locale.CS]: locale_CS, - [Locale.DA]: locale_DA, - [Locale.DE]: locale_DE, - [Locale.EL]: locale_EL, - // Default language - [Locale.EN]: undefined, - [Locale.ES]: locale_ES, - [Locale.ES_CO]: locale_ES_CO, - [Locale.ET]: locale_ET, - [Locale.FA]: locale_FA, - [Locale.FR]: locale_FR, - [Locale.HI]: locale_HI, - [Locale.HU]: locale_HU, - [Locale.HY]: locale_HY, - [Locale.ID]: locale_ID, - [Locale.IS]: locale_IS, - [Locale.IT]: locale_IT, - [Locale.JA]: locale_JA, - [Locale.KO]: locale_KO, - [Locale.MN]: locale_MN, - [Locale.NB]: locale_NB, - [Locale.NL]: locale_NL, - [Locale.PL]: locale_PL, - [Locale.PT]: locale_PT, - [Locale.PT_BR]: locale_PT_BR, - [Locale.RO]: locale_RO, - [Locale.RU]: locale_RU, - [Locale.SK]: locale_SK, - [Locale.SL]: locale_SL, - [Locale.SQ]: locale_SQ, - [Locale.SR]: locale_SR, - [Locale.SV]: locale_SV, - [Locale.TH]: locale_TH, - [Locale.TR]: locale_TR, - [Locale.UK]: locale_UK, - [Locale.VI]: locale_VI, - [Locale.ZH_HANS]: locale_ZH_HANS, - [Locale.ZH_HANT]: locale_ZH_HANT -}; export const localeNames: Record = { [Locale.AR]: "العربيّة", @@ -229,12 +144,22 @@ const LocaleProvider: React.FC = ({ children }) => { "locale", getMatchingLocale(navigator.languages) || defaultLocale ); + const [messages, setMessages] = useLocalStorage("messages", {}); + + useEffect(() => { + if (locale !== defaultLocale) { + // It seems like Webpack is unable to use aliases for lazy imports + import(`../../../locale/${locale}.json`).then(({ default: res }) => + setMessages(res) + ); + } + }); return ( { if (!err.includes("[React Intl] Missing message: ")) { console.error(err); From 2b39ae3a237f479c0b329ccf3eaa32fc94a13c9e Mon Sep 17 00:00:00 2001 From: Vladimir Romashchenko Date: Thu, 3 Sep 2020 22:51:22 -0400 Subject: [PATCH 2/2] Added links to locales with different naming. --- locale/en.json | 1 + locale/es-co.json | 1 + locale/pt-br.json | 1 + locale/zh-hans.json | 1 + locale/zh-hant.json | 1 + 5 files changed, 5 insertions(+) create mode 120000 locale/en.json create mode 120000 locale/es-co.json create mode 120000 locale/pt-br.json create mode 120000 locale/zh-hans.json create mode 120000 locale/zh-hant.json diff --git a/locale/en.json b/locale/en.json new file mode 120000 index 000000000..a4fa3c0db --- /dev/null +++ b/locale/en.json @@ -0,0 +1 @@ +defaultMessages.json \ No newline at end of file diff --git a/locale/es-co.json b/locale/es-co.json new file mode 120000 index 000000000..b31adb634 --- /dev/null +++ b/locale/es-co.json @@ -0,0 +1 @@ +es_CO.json \ No newline at end of file diff --git a/locale/pt-br.json b/locale/pt-br.json new file mode 120000 index 000000000..9f1a383df --- /dev/null +++ b/locale/pt-br.json @@ -0,0 +1 @@ +pt_BR.json \ No newline at end of file diff --git a/locale/zh-hans.json b/locale/zh-hans.json new file mode 120000 index 000000000..257f38b7b --- /dev/null +++ b/locale/zh-hans.json @@ -0,0 +1 @@ +zh-Hans.json \ No newline at end of file diff --git a/locale/zh-hant.json b/locale/zh-hant.json new file mode 120000 index 000000000..67238fdf7 --- /dev/null +++ b/locale/zh-hant.json @@ -0,0 +1 @@ +zh-Hant.json \ No newline at end of file