From a9bcfa79c858e2f1e56133e57847a817a9aedaf3 Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 21 Feb 2024 16:01:49 -0500 Subject: [PATCH] remove outline-i18n --- client/package.json | 1 - client/src/www/ui_components/app-root.js | 46 ++++++++++++++++++++++-- package-lock.json | 18 ++-------- 3 files changed, 46 insertions(+), 19 deletions(-) diff --git a/client/package.json b/client/package.json index 0e4af7666da..20a3f7f3e4f 100644 --- a/client/package.json +++ b/client/package.json @@ -107,7 +107,6 @@ "minimist": "^1.2.6", "node-fetch": "^3.3.0", "node-gyp": "^10.0.1", - "outline-i18n": "Jigsaw-Code/outline-i18n#v0.0.7", "postcss": "^7.0.39", "postcss-rtl": "^1.7.3", "prettier": "^2.8.0", diff --git a/client/src/www/ui_components/app-root.js b/client/src/www/ui_components/app-root.js index f836ef8b411..8355dc6121c 100644 --- a/client/src/www/ui_components/app-root.js +++ b/client/src/www/ui_components/app-root.js @@ -36,7 +36,6 @@ import '@polymer/paper-item/paper-item.js'; import '@polymer/paper-item/paper-icon-item.js'; import '@polymer/paper-listbox/paper-listbox.js'; import '@polymer/paper-toast/paper-toast.js'; -import 'outline-i18n/index.js'; import './about-view.js'; import './add-server-view.js'; import './feedback-view.js'; @@ -55,6 +54,49 @@ import {mixinBehaviors} from '@polymer/polymer/lib/legacy/class.js'; import {html} from '@polymer/polymer/lib/utils/html-tag.js'; import {PolymerElement} from '@polymer/polymer/polymer-element.js'; +function makeLookUpLanguage(availableLanguages) { + return languageId => { + languageId = languageId.toLowerCase(); + for (const availableLanguage of availableLanguages) { + const parts = availableLanguage.toLowerCase().split('-'); + while (parts.length) { + const joined = parts.join('-'); + if (languageId === joined) { + return availableLanguage; + } + parts.pop(); + } + } + }; +} + +function getBrowserLanguages() { + // Ensure that navigator.languages is defined and not empty, as can be the case with some browsers + // (i.e. Chrome 59 on Electron). + const languages = navigator.languages; + if (languages && languages.length > 0) { + return languages; + } + return [navigator.language]; +} + +window.OutlineI18n = { + getBestMatchingLanguage(available) { + const lookUpAvailable = makeLookUpLanguage(available); + for (const candidate of getBrowserLanguages()) { + const parts = candidate.split('-'); + while (parts.length) { + const joined = parts.join('-'); + const closest = lookUpAvailable(joined); + if (closest) { + return closest; + } + parts.pop(); + } + } + }, +}; + // Workaround: // https://github.com/PolymerElements/paper-menu-button/issues/101#issuecomment-297856912 PaperMenuButton.prototype.properties.restoreFocusOnClose.value = false; @@ -765,7 +807,7 @@ export class AppRoot extends mixinBehaviors([AppLocalizeBehavior], PolymerElemen _computeLanguage(availableLanguages, defaultLanguage) { const overrideLanguage = window.localStorage.getItem('overrideLanguage'); - const bestMatchingLanguage = OutlineI18n.getBestMatchingLanguage(Object.keys(availableLanguages)); + const bestMatchingLanguage = window.OutlineI18n.getBestMatchingLanguage(Object.keys(availableLanguages)); return overrideLanguage || bestMatchingLanguage || defaultLanguage; } diff --git a/package-lock.json b/package-lock.json index 1f6425c9048..42269e560c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ } }, "client": { + "name": "outline-client", "version": "0.0.0", "dependencies": { "@material/mwc-button": "^0.25.3", @@ -118,7 +119,6 @@ "minimist": "^1.2.6", "node-fetch": "^3.3.0", "node-gyp": "^10.0.1", - "outline-i18n": "Jigsaw-Code/outline-i18n#v0.0.7", "postcss": "^7.0.39", "postcss-rtl": "^1.7.3", "prettier": "^2.8.0", @@ -138,14 +138,12 @@ "webpack-shell-plugin-next": "^2.1.1", "xmlbuilder2": "^3.1.1" }, - "engines": { - "node": "18.x.x" - }, "optionalDependencies": { "ios-deploy": "^1.11.4" } }, "client/src/cordova/plugin": { + "name": "cordova-plugin-outline", "version": "0.0.0", "dev": true }, @@ -23722,12 +23720,6 @@ "resolved": "client", "link": true }, - "node_modules/outline-i18n": { - "version": "0.0.7", - "resolved": "git+ssh://git@github.com/Jigsaw-Code/outline-i18n.git#4642c3657074246b8eca09486941434718f66608", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/outline-manager": { "resolved": "server_manager", "link": true @@ -50779,7 +50771,6 @@ "minimist": "^1.2.6", "node-fetch": "^3.3.0", "node-gyp": "^10.0.1", - "outline-i18n": "Jigsaw-Code/outline-i18n#v0.0.7", "postcss": "^7.0.39", "postcss-rtl": "^1.7.3", "prettier": "^2.8.0", @@ -50805,11 +50796,6 @@ "xmlbuilder2": "^3.1.1" } }, - "outline-i18n": { - "version": "git+ssh://git@github.com/Jigsaw-Code/outline-i18n.git#4642c3657074246b8eca09486941434718f66608", - "dev": true, - "from": "outline-i18n@Jigsaw-Code/outline-i18n#v0.0.7" - }, "outline-manager": { "version": "file:server_manager", "requires": {