diff --git a/web/package.json b/web/package.json index 18278b2..de538b1 100644 --- a/web/package.json +++ b/web/package.json @@ -12,7 +12,9 @@ "dependencies": { "fetch-suspense": "^1.2.0", "i18next": "^17.0.9", - "i18next-browser-languagedetector": "^3.0.2", + "i18next-browser-languagedetector": "^3.0.3", + "i18next-chained-backend": "^2.0.0", + "i18next-localstorage-backend": "^3.0.0", "i18next-xhr-backend": "^3.1.1", "isomorphic-unfetch": "^3.0.0", "prop-types": "^15.7.2", @@ -31,7 +33,8 @@ "devDependencies": { "@testing-library/jest-dom": "^4.0.0", "@testing-library/react": "^8.0.8", - "@types/node": "^12.7.0" + "@types/node": "^12.7.1", + "typescript": "^3.5.3" }, "browserslist": { "production": [ diff --git a/web/src/i18n.js b/web/src/i18n.js index 88d5510..305287a 100644 --- a/web/src/i18n.js +++ b/web/src/i18n.js @@ -1,20 +1,19 @@ import i18n from 'i18next' -import Backend from 'i18next-xhr-backend' +import Backend from 'i18next-chained-backend' +import LocalStorageBackend from 'i18next-localstorage-backend' +import XHR from 'i18next-xhr-backend' import LanguageDetector from 'i18next-browser-languagedetector' import { initReactI18next } from 'react-i18next' i18n - // load translation using xhr -> see /public/locales - // learn more: https://github.com/i18next/i18next-xhr-backend .use(Backend) - // detect user language - // learn more: https://github.com/i18next/i18next-browser-languageDetector .use(LanguageDetector) - // pass the i18n instance to react-i18next. .use(initReactI18next) - // init i18next - // for all options read: https://www.i18next.com/overview/configuration-options .init({ + backend: { + backends: [LocalStorageBackend, XHR], + backendOptions: [], + }, fallbackLng: 'en', debug: false, interpolation: { diff --git a/web/yarn.lock b/web/yarn.lock index 55c79bc..8128ae0 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -881,7 +881,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.3", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.3", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== @@ -1414,10 +1414,10 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/node@^12.7.0": - version "12.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.0.tgz#545dde2a1a5c27d281cfb8308d6736e0708f5d6c" - integrity sha512-vqcj1MVm2Sla4PpMfYKh1MyDN4D2f/mPIZD7RdAGqEsbE+JxfeqQHHVbRDQ0Nqn8i73gJa1HQ1Pu3+nH4Q0Yiw== +"@types/node@^12.7.1": + version "12.7.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.1.tgz#3b5c3a26393c19b400844ac422bd0f631a94d69d" + integrity sha512-aK9jxMypeSrhiYofWWBf/T7O+KwaiAHzM4sveCdWPn71lzUSMimRnKzhXDKfKwV1kWoBo2P1aGgaIYGLf9/ljw== "@types/q@^1.5.1": version "1.5.2" @@ -4880,10 +4880,24 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -i18next-browser-languagedetector@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-3.0.2.tgz#dddfdfae8702d79aeae13682063b3d05c3614a03" - integrity sha512-0gQK7FAHDPsJGHvPlfIgXZlZUHlgQy0I6WFFotvreK8m0fG33lkq7jvBvef/8cFeJYBtjYR9GbQF6/DxGCaneA== +i18next-browser-languagedetector@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-3.0.3.tgz#879ebe421685c70cc5cfa96191364a35ea7da742" + integrity sha512-1YuAogyQap0J6N4kM+6gAjZ6T7QWrp3xZCmSs0QedkNmgAKhj7FiQlCviHKl3IwbM6zJNgft4D7UDPWb1dTCMQ== + +i18next-chained-backend@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/i18next-chained-backend/-/i18next-chained-backend-2.0.0.tgz#faf2e8b5f081a01e74fbec1fe580c184bc64e25b" + integrity sha512-NAwfxzNUojtYc3nTCFIyNUYsxT+RFpfWc75dHbv7BsYxfbpKV1NISiFGU77D4u0wtq5IqM87YSINX/2miH9qvg== + dependencies: + "@babel/runtime" "^7.4.5" + +i18next-localstorage-backend@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/i18next-localstorage-backend/-/i18next-localstorage-backend-3.0.0.tgz#19b4e836e9a79e564631b88b8ba1c738375e636f" + integrity sha512-jOvnvVYP7VlA87aO0wgNeXRoj/vQHqO56UB/R6DlglWn/Ipz4rNGZUyzejJVLFaypZTZ6rpqNsB/pjSVtZm4YQ== + dependencies: + "@babel/runtime" "^7.4.5" i18next-xhr-backend@^3.1.1: version "3.1.1" @@ -9834,6 +9848,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" + integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== + ua-parser-js@^0.7.18: version "0.7.20" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098"