Merge pull request #692 from eaglesemanation/fix/lazyload-locales

Fix/lazyload locales
This commit is contained in:
Dominik Żegleń 2020-09-04 16:07:26 +02:00 committed by GitHub
commit 8e0740372a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 87 deletions

1
locale/en.json Symbolic link
View file

@ -0,0 +1 @@
defaultMessages.json

1
locale/es-co.json Symbolic link
View file

@ -0,0 +1 @@
es_CO.json

1
locale/pt-br.json Symbolic link
View file

@ -0,0 +1 @@
pt_BR.json

1
locale/zh-hans.json Symbolic link
View file

@ -0,0 +1 @@
zh-Hans.json

1
locale/zh-hant.json Symbolic link
View file

@ -0,0 +1 @@
zh-Hant.json

View file

@ -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 useLocalStorage from "@saleor/hooks/useLocalStorage";
import React from "react"; import React from "react";
import { useEffect } from "react";
import { IntlProvider } from "react-intl"; import { IntlProvider } from "react-intl";
export enum Locale { export enum Locale {
@ -93,51 +53,6 @@ interface StructuredMessage {
string: string; string: string;
} }
type LocaleMessages = Record<string, StructuredMessage>; type LocaleMessages = Record<string, StructuredMessage>;
const localeData: Record<Locale, LocaleMessages> = {
[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, string> = { export const localeNames: Record<Locale, string> = {
[Locale.AR]: "العربيّة", [Locale.AR]: "العربيّة",
@ -229,12 +144,22 @@ const LocaleProvider: React.FC = ({ children }) => {
"locale", "locale",
getMatchingLocale(navigator.languages) || defaultLocale 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 ( return (
<IntlProvider <IntlProvider
defaultLocale={defaultLocale} defaultLocale={defaultLocale}
locale={locale} locale={locale}
messages={getKeyValueJson(localeData[locale])} messages={getKeyValueJson(messages)}
onError={err => { onError={err => {
if (!err.includes("[React Intl] Missing message: ")) { if (!err.includes("[React Intl] Missing message: ")) {
console.error(err); console.error(err);