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;