diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-10-13 16:30:31 -0400 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-10-13 16:30:31 -0400 |
commit | 4f8c84d524365a32e6f4478597905bc553ad20c2 (patch) | |
tree | 45455da961f4bc7634074d1ded9eae5280009350 | |
parent | f8e666b70c9d114f3469c7c21d41474faac00c13 (diff) |
Fix Japanese voice ordering on Firefox for Android
-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; } |