diff --git a/src/common/index.js b/src/common/index.js index 5110dd669..82fcd579e 100644 --- a/src/common/index.js +++ b/src/common/index.js @@ -30,6 +30,7 @@ const getVisibleChildrenRange = require('./getVisibleChildrenRange'); const interfaceLanguages = require('./interfaceLanguages'); const languageNames = require('./languageNames'); const routesRegexp = require('./routesRegexp'); +const translateOption = require('./translateOption'); const useAnimationFrame = require('./useAnimationFrame'); const useBinaryState = require('./useBinaryState'); const useFullscreen = require('./useFullscreen'); @@ -74,6 +75,7 @@ module.exports = { interfaceLanguages, languageNames, routesRegexp, + translateOption, useAnimationFrame, useBinaryState, useFullscreen, diff --git a/src/common/translateOption.js b/src/common/translateOption.js new file mode 100644 index 000000000..726885e17 --- /dev/null +++ b/src/common/translateOption.js @@ -0,0 +1,18 @@ +// Copyright (C) 2017-2022 Smart code 203358507 + +const { t } = require('i18next'); + +const translateOption = (option, translateKeyPrefix = '') => { + const translateKey = `${translateKeyPrefix}${option}`; + const translateKeyUppercase = translateKey.toUpperCase(); + const translateValue = t(translateKey); + const translateValueUppercase = t(translateKeyUppercase); + if (translateKey !== translateValue) { + return translateValue; + } else if (translateKeyUppercase !== translateValueUppercase) { + return translateValueUppercase; + } + return option.charAt(0).toUpperCase() + option.slice(1); +}; + +module.exports = translateOption; diff --git a/src/routes/Addons/useSelectableInputs.js b/src/routes/Addons/useSelectableInputs.js index e55d89950..c66f48b0b 100644 --- a/src/routes/Addons/useSelectableInputs.js +++ b/src/routes/Addons/useSelectableInputs.js @@ -2,19 +2,7 @@ const React = require('react'); const { t } = require('i18next'); - -const translateOption = (option, translateKeyPrefix = '') => { - const translateKey = `${translateKeyPrefix}${option}`; - const translateKeyUppercase = translateKey.toUpperCase(); - const translateValue = t(translateKey); - const translateValueUppercase = t(translateKeyUppercase); - if (translateKey !== translateValue) { - return translateValue; - } else if (translateKeyUppercase !== translateValueUppercase) { - return translateValueUppercase; - } - return option.charAt(0).toUpperCase() + option.slice(1); -}; +const { translateOption } = require('stremio/common'); const mapSelectableInputs = (installedAddons, remoteAddons) => { const catalogSelect = { diff --git a/src/routes/Discover/useSelectableInputs.js b/src/routes/Discover/useSelectableInputs.js index 5e466520c..7aad6b814 100644 --- a/src/routes/Discover/useSelectableInputs.js +++ b/src/routes/Discover/useSelectableInputs.js @@ -2,15 +2,7 @@ const React = require('react'); const { useTranslation } = require('react-i18next'); - -const translateOption = (t, option, translateKeyPrefix = '') => { - const translateKey = `${translateKeyPrefix}${option}`; - const translateValue = t(`${translateKeyPrefix}${option}`); - if (translateKey !== translateValue) { - return translateValue; - } - return option.charAt(0).toUpperCase() + option.slice(1); -}; +const { translateOption } = require('stremio/common'); const mapSelectableInputs = (discover, t) => { const typeSelect = { @@ -18,13 +10,13 @@ const mapSelectableInputs = (discover, t) => { options: discover.selectable.types .map(({ type, deepLinks }) => ({ value: deepLinks.discover, - label: translateOption(t, type, 'TYPE_') + label: translateOption(type, 'TYPE_') })), selected: discover.selectable.types .filter(({ selected }) => selected) .map(({ deepLinks }) => deepLinks.discover), renderLabelText: discover.selected !== null ? - () => translateOption(t, discover.selected.request.path.type, 'TYPE_') + () => translateOption(discover.selected.request.path.type, 'TYPE_') : null, onSelect: (event) => { @@ -58,7 +50,7 @@ const mapSelectableInputs = (discover, t) => { title: `Select ${name}`, isRequired: isRequired, options: options.map(({ value, deepLinks }) => ({ - label: typeof value === 'string' ? translateOption(t, value) : t('NONE'), + label: typeof value === 'string' ? translateOption(value) : t('NONE'), value: JSON.stringify({ href: deepLinks.discover, value diff --git a/src/routes/Library/useSelectableInputs.js b/src/routes/Library/useSelectableInputs.js index a566e3c40..bf229f3b3 100644 --- a/src/routes/Library/useSelectableInputs.js +++ b/src/routes/Library/useSelectableInputs.js @@ -2,15 +2,7 @@ const React = require('react'); const { useTranslation } = require('react-i18next'); - -const translateOption = (t, option, translateKeyPrefix = '') => { - const translateKey = `${translateKeyPrefix}${option}`; - const translateValue = t(translateKey); - if (translateKey !== translateValue) { - return translateValue; - } - return option.charAt(0).toUpperCase() + option.slice(1); -}; +const { translateOption } = require('stremio/common'); const mapSelectableInputs = (library, t) => { const typeSelect = { @@ -18,7 +10,7 @@ const mapSelectableInputs = (library, t) => { options: library.selectable.types .map(({ type, deepLinks }) => ({ value: deepLinks.library, - label: type === null ? t('TYPE_ALL') : translateOption(t, type, 'TYPE_') + label: type === null ? t('TYPE_ALL') : translateOption(type, 'TYPE_') })), selected: library.selectable.types .filter(({ selected }) => selected) @@ -32,7 +24,7 @@ const mapSelectableInputs = (library, t) => { options: library.selectable.sorts .map(({ sort, deepLinks }) => ({ value: deepLinks.library, - label: translateOption(t, sort) + label: translateOption(sort) })), selected: library.selectable.sorts .filter(({ selected }) => selected)