diff options
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/background/backend.js | 4 | ||||
| -rw-r--r-- | ext/js/data/options-util.js | 15 | ||||
| -rw-r--r-- | ext/js/language/translator.js | 22 | 
3 files changed, 37 insertions, 4 deletions
| diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index ae78a97b..68d4e0c8 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -2417,7 +2417,8 @@ export class Backend {                  convertHiraganaToKatakana,                  convertKatakanaToHiragana,                  collapseEmphaticSequences, -                textReplacements: textReplacementsOptions +                textReplacements: textReplacementsOptions, +                searchResolution              }          } = options;          const textReplacements = this._getTranslatorTextReplacements(textReplacementsOptions); @@ -2444,6 +2445,7 @@ export class Backend {              convertHiraganaToKatakana,              convertKatakanaToHiragana,              collapseEmphaticSequences, +            searchResolution,              textReplacements,              enabledDictionaryMap,              excludeDictionaryDefinitions diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js index c219bed3..eb9af9b6 100644 --- a/ext/js/data/options-util.js +++ b/ext/js/data/options-util.js @@ -555,7 +555,8 @@ export class OptionsUtil {              {async: false, update: this._updateVersion18.bind(this)},              {async: false, update: this._updateVersion19.bind(this)},              {async: false, update: this._updateVersion20.bind(this)}, -            {async: true,  update: this._updateVersion21.bind(this)} +            {async: true,  update: this._updateVersion21.bind(this)}, +            {async: false, update: this._updateVersion22.bind(this)}          ];          /* eslint-enable no-multi-spaces */          if (typeof targetVersion === 'number' && targetVersion < result.length) { @@ -1174,6 +1175,18 @@ export class OptionsUtil {      }      /** +     * @type {import('options-util').ModernUpdateFunctionAsync} +     */ +    _updateVersion22(options) { +        //  Added translation.searchResolution +        for (const {options: profileOptions} of options.profiles) { +            profileOptions.translation.searchResolution = 'letter'; +        } + +        return options; +    } + +    /**       * @param {string} url       * @returns {Promise<chrome.tabs.Tab>}       */ diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index 733955c2..36ed8b43 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -329,8 +329,12 @@ export class Translator {                  text2 = jp.collapseEmphaticSequences(text2, collapseEmphaticFull, sourceMap);              } -            for (let i = text2.length; i > 0; --i) { -                const source = text2.substring(0, i); +            for ( +                let source = text2, i = text2.length; +                i > 0; +                i = this._getNextSubstringLength(options.searchResolution, i, source) +            ) { +                source = text2.substring(0, i);                  if (used.has(source)) { break; }                  used.add(source);                  const rawSource = sourceMap.source.substring(0, sourceMap.getSourceLength(i)); @@ -343,6 +347,20 @@ export class Translator {      }      /** +     * @param {string} searchResolution +     * @param {number} currentLength +     * @param {string} source +     * @returns {number} +     */ +    _getNextSubstringLength(searchResolution, currentLength, source) { +        if (searchResolution === 'word') { +            return source.search(/[^\p{Letter}][\p{Letter}\p{Number}]*$/u); +        } else { +            return currentLength - 1; +        } +    } + +    /**       * @param {string} text       * @param {TextSourceMap} sourceMap       * @param {import('translation').FindTermsTextReplacement[]} replacements |