diff options
Diffstat (limited to 'ext/bg/js')
| -rw-r--r-- | ext/bg/js/settings.js | 32 | 
1 files changed, 18 insertions, 14 deletions
| diff --git a/ext/bg/js/settings.js b/ext/bg/js/settings.js index debf9f2f..acc47f69 100644 --- a/ext/bg/js/settings.js +++ b/ext/bg/js/settings.js @@ -358,24 +358,28 @@ function updateTextToSpeechVoices() {      select.val(select.attr('data-value'));  } -function compareLanguageTags(a, b) { -    if (a.substr(0, 3) === 'ja-') { -        return (b.substr(0, 3) === 'ja-') ? 0 : -1; -    } else { -        return (b.substr(0, 3) === 'ja-') ? 1 : 0; -    } +function languageTagIsJapanese(languageTag) { +    return ( +        languageTag.startsWith('ja-') || +        languageTag.startsWith('jpn-') +    );  }  function textToSpeechVoiceCompare(a, b) { -    const i = compareLanguageTags(a.voice.lang, b.voice.lang); -    if (i !== 0) { return i; } +    const aIsJapanese = languageTagIsJapanese(a.voice.lang); +    const bIsJapanese = languageTagIsJapanese(b.voice.lang); +    if (aIsJapanese) { +        if (!bIsJapanese) { return -1; } +    } else { +        if (bIsJapanese) { return 1; } +    } -    if (a.voice.default) { -        if (!b.voice.default) { -            return -1; -        } -    } else if (b.voice.default) { -        return 1; +    const aIsDefault = a.voice.default; +    const bIsDefault = b.voice.default; +    if (aIsDefault) { +        if (!bIsDefault) { return -1; } +    } else { +        if (bIsDefault) { return 1; }      }      if (a.index < b.index) { return -1; } |