refactor right-to-left language support

This commit is contained in:
typer 2020-09-10 06:04:10 -07:00
parent 74036d5eb9
commit 6a3de3f8d8
2 changed files with 12 additions and 11 deletions

View file

@ -38,6 +38,7 @@ let manualRestart = false;
let bailout = false;
let notSignedInLastResult = null;
let caretAnimating = true;
let isLanguageLeftToRight = true;
let themeColors = {
bg: "#323437",
@ -554,12 +555,6 @@ function initWords() {
wordsList.push(w[i]);
}
}
//special case right-to-left languages (currently only Hebrew)
if (config.language === "hebrew") {
arrangeCharactersRightToLeft();
} else {
arrangeCharactersLeftToRight();
}
showWords();
}
@ -1412,9 +1407,7 @@ function updateCaretPosition() {
.querySelectorAll("letter")[currentLetterIndex];
if ($(currentLetter).length == 0) return;
//special case right to left languages (currently only Hebrew)
const isLeftToRight = config.language !== "hebrew";
let currentLetterPosLeft = isLeftToRight
let currentLetterPosLeft = isLanguageLeftToRight
? currentLetter.offsetLeft
: currentLetter.offsetLeft + $(currentLetter).width();
let currentLetterPosTop = currentLetter.offsetTop;
@ -1424,11 +1417,11 @@ function updateCaretPosition() {
newTop = currentLetterPosTop - letterHeight / 4;
if (inputLen == 0) {
newLeft = isLeftToRight
newLeft = isLanguageLeftToRight
? currentLetterPosLeft - caret.width() / 2
: currentLetterPosLeft + caret.width() / 2;
} else {
newLeft = isLeftToRight
newLeft = isLanguageLeftToRight
? currentLetterPosLeft + $(currentLetter).width() - caret.width() / 2
: currentLetterPosLeft - $(currentLetter).width() + caret.width() / 2;
}

View file

@ -874,6 +874,14 @@ function changeLanguage(language, nosave) {
language = "english";
}
config.language = language;
//right-to-left languages
if (["hebrew"].includes(language)) {
isLanguageLeftToRight = false;
arrangeCharactersRightToLeft();
} else {
isLanguageLeftToRight = true;
arrangeCharactersLeftToRight();
}
try {
firebase.analytics().logEvent("changedLanguage", {
language: language,