diff --git a/src/avatar-selector.js b/src/avatar-selector.js index 4879a47f6a3787ee132e90b4cb724fcde59637f5..45b0a7eed21aebe238e86237a540d97dbbdc63fe 100644 --- a/src/avatar-selector.js +++ b/src/avatar-selector.js @@ -4,6 +4,8 @@ import queryString from "query-string"; import { IntlProvider, addLocaleData } from "react-intl"; import en from "react-intl/locale-data/en"; +import { lang, messages } from "./utils/i18n"; + import { patchWebGLRenderingContext } from "./utils/webgl"; patchWebGLRenderingContext(); @@ -19,7 +21,8 @@ import { avatars } from "./assets/avatars/avatars"; import registerTelemetry from "./telemetry"; import { App } from "./App"; import AvatarSelector from "./react-components/avatar-selector"; -import localeData from "./assets/translations.data.json"; + +addLocaleData([...en]); registerTelemetry(); @@ -32,12 +35,6 @@ if (hash.quality) { window.APP.quality = isMobile ? "low" : "high"; } -const lang = ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage) - .toLowerCase() - .split(/[_-]+/)[0]; -addLocaleData([...en]); -const messages = localeData[lang] || localeData.en; - function postAvatarIdToParent(newAvatarId) { window.parent.postMessage({ avatarId: newAvatarId }, location.origin); } diff --git a/src/react-components/home-root.js b/src/react-components/home-root.js index 8422af8d4124e3049af8f6c4a7360c6c8c577f88..82805ed9fa2d83e75af1a4d4bc39318808768e02 100644 --- a/src/react-components/home-root.js +++ b/src/react-components/home-root.js @@ -2,6 +2,8 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import { IntlProvider, FormattedMessage, addLocaleData } from "react-intl"; import en from "react-intl/locale-data/en"; + +import { lang, messages } from "../utils/i18n"; import homeVideoWebM from "../assets/video/home.webm"; import homeVideoMp4 from "../assets/video/home.mp4"; import classNames from "classnames"; @@ -10,16 +12,8 @@ import { ENVIRONMENT_URLS } from "../assets/environments/environments"; import HubCreatePanel from "./hub-create-panel.js"; import InfoDialog from "./info-dialog.js"; -const navigatorLang = ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage) - .toLowerCase() - .split(/[_-]+/)[0]; - -import localeData from "../assets/translations.data.json"; addLocaleData([...en]); -const lang = (navigatorLang && localeData[navigatorLang]) || "en"; -const messages = localeData[lang] || localeData.en; - class HomeRoot extends Component { static propTypes = { intl: PropTypes.object, diff --git a/src/react-components/ui-root.js b/src/react-components/ui-root.js index b9eccdcf1cd7227e29f7b28325f1d58029e935dd..55f5ca69b359cab0b8d5463a5356789f4d9fdcd8 100644 --- a/src/react-components/ui-root.js +++ b/src/react-components/ui-root.js @@ -9,6 +9,7 @@ import en from "react-intl/locale-data/en"; import MovingAverage from "moving-average"; import screenfull from "screenfull"; +import { lang, messages } from "../utils/i18n"; import AutoExitWarning from "./auto-exit-warning"; import { TwoDEntryButton, GenericEntryButton, GearVREntryButton, DaydreamEntryButton } from "./entry-buttons.js"; import { ProfileInfoHeader } from "./profile-info-header.js"; @@ -22,15 +23,8 @@ import faQuestion from "@fortawesome/fontawesome-free-solid/faQuestion"; const mobiledetect = new MobileDetect(navigator.userAgent); -const lang = ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage) - .toLowerCase() - .split(/[_-]+/)[0]; - -import localeData from "../assets/translations.data.json"; addLocaleData([...en]); -const messages = localeData[lang] || localeData.en; - const ENTRY_STEPS = { start: "start", mic_grant: "mic_grant", diff --git a/src/utils/i18n.js b/src/utils/i18n.js new file mode 100644 index 0000000000000000000000000000000000000000..e112bbf33a712253e042576e584ff2c73b906d68 --- /dev/null +++ b/src/utils/i18n.js @@ -0,0 +1,6 @@ +import localeData from "../assets/translations.data.json"; +const navigatorLang = ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage) + .toLowerCase() + .split(/[_-]+/)[0]; +export const lang = (localeData[navigatorLang] && navigatorLang) || "en"; +export const messages = localeData[lang] || localeData.en;