added lazy mode

This commit is contained in:
Jack 2021-09-13 17:28:00 +01:00
parent 7ef1e91278
commit c063012e9e
86 changed files with 5496 additions and 5236 deletions

View file

@ -252,6 +252,7 @@ class ResultController {
if (result.bailedOut === false) delete result.bailedOut;
if (result.blindMode === false) delete result.blindMode;
if (result.lazyMode === false) delete result.lazyMode;
if (result.difficulty === "normal") delete result.difficulty;
if (result.funbox === "none") delete result.funbox;
if (result.language === "english") delete result.language;

View file

@ -180,6 +180,7 @@ class UsersDAO {
acc,
consistency,
difficulty,
lazyMode,
language,
punctuation,
rawWpm,
@ -206,6 +207,7 @@ class UsersDAO {
acc,
consistency,
difficulty,
lazyMode,
language,
punctuation,
rawWpm,
@ -241,6 +243,7 @@ class UsersDAO {
acc,
consistency,
difficulty,
lazyMode,
language,
punctuation,
rawWpm,
@ -277,6 +280,7 @@ class UsersDAO {
acc,
consistency,
difficulty,
lazyMode,
language,
punctuation,
rawWpm,

View file

@ -49,6 +49,7 @@ module.exports = {
acc,
consistency,
difficulty,
lazyMode = false,
language,
punctuation,
raw,
@ -65,6 +66,8 @@ module.exports = {
obj[mode][mode2].forEach((pb) => {
//check if we should compare first
if (
(pb.lazyMode === lazyMode ||
(pb.lazyMode === undefined && lazyMode === false)) &&
pb.difficulty === difficulty &&
pb.language === language &&
pb.punctuation === punctuation
@ -76,6 +79,10 @@ module.exports = {
isPb = true;
pb.acc = acc;
pb.consistency = consistency;
pb.difficulty = difficulty;
pb.language = language;
pb.punctuation = punctuation;
pb.lazyMode = lazyMode;
pb.raw = raw;
pb.wpm = wpm;
pb.timestamp = Date.now();
@ -89,6 +96,7 @@ module.exports = {
acc,
consistency,
difficulty,
lazyMode,
language,
punctuation,
raw,
@ -97,7 +105,12 @@ module.exports = {
});
}
if (lbObj && mode === "time" && (mode2 == "15" || mode2 == "60")) {
if (
lbObj &&
mode === "time" &&
(mode2 == "15" || mode2 == "60") &&
!lazyMode
) {
//updating lbpersonalbests object
//verify structure first
if (lbObj[mode] === undefined) lbObj[mode] = {};

View file

@ -150,6 +150,7 @@ const refactoredSrc = [
"./src/js/test/custom-text.js",
"./src/js/test/british-english.js",
"./src/js/test/lazy-mode.js",
"./src/js/test/shift-tracker.js",
"./src/js/test/out-of-focus.js",
"./src/js/test/caret.js",

View file

@ -268,6 +268,10 @@ function loadMoreLines(lineIndex) {
icons += `<span aria-label="blind mode" data-balloon-pos="up"><i class="fas fa-fw fa-eye-slash"></i></span>`;
}
if (result.lazyMode) {
icons += `<span aria-label="lazy mode" data-balloon-pos="up"><i class="fas fa-fw fa-couch"></i></span>`;
}
if (result.funbox !== "none" && result.funbox !== undefined) {
icons += `<span aria-label="${result.funbox.replace(
/_/g,

View file

@ -771,6 +771,31 @@ let commandsStartGraphsAtZero = {
],
};
let commandsLazyMode = {
title: "Lazy mode...",
configKey: "lazyMode",
list: [
{
id: "setLazyModeOff",
display: "off",
configValue: false,
exec: () => {
UpdateConfig.setLazyMode(false);
TestLogic.restart();
},
},
{
id: "setLazyModeOn",
display: "on",
configValue: true,
exec: () => {
UpdateConfig.setLazyMode(true);
TestLogic.restart();
},
},
],
};
let commandsSwapEscAndTab = {
title: "Swap esc and tab...",
configKey: "swapEscAndTab",
@ -2552,6 +2577,12 @@ export let defaultCommands = {
icon: "fa-exchange-alt",
subgroup: commandsSwapEscAndTab,
},
{
id: "changeLazyMode",
display: "Lazy mode...",
icon: "fa-couch",
subgroup: commandsLazyMode,
},
{
id: "changeShowAllLines",
display: "Show all lines...",

View file

@ -128,6 +128,7 @@ let defaultConfig = {
minBurstCustomSpeed: 100,
burstHeatmap: false,
britishEnglish: false,
lazyMode: false,
};
function isConfigKeyValid(name) {
@ -1299,6 +1300,14 @@ export function setBritishEnglish(val, nosave) {
if (!nosave) saveToLocalStorage();
}
export function setLazyMode(val, nosave) {
if (!val) {
val = false;
}
config.lazyMode = val;
if (!nosave) saveToLocalStorage();
}
export function toggleCustomTheme(nosave) {
if (config.customTheme) {
setCustomTheme(false);
@ -1681,6 +1690,7 @@ export function apply(configObj) {
setMonkeyPowerLevel(configObj.monkeyPowerLevel, true);
setBurstHeatmap(configObj.burstHeatmap, true);
setBritishEnglish(configObj.britishEnglish, true);
setLazyMode(configObj.lazyMode, true);
LanguagePicker.setActiveGroup();

View file

@ -124,6 +124,7 @@ export async function getUserResults() {
results.data.forEach((result) => {
if (result.bailedOut === undefined) result.bailedOut = false;
if (result.blindMode === undefined) result.blindMode = false;
if (result.lazyMode === undefined) result.lazyMode = false;
if (result.difficulty === undefined) result.difficulty = "normal";
if (result.funbox === undefined) result.funbox = "none";
if (result.language === undefined) result.language = "english";
@ -184,7 +185,8 @@ export async function getUserHighestWpm(
mode2,
punctuation,
language,
difficulty
difficulty,
lazyMode
) {
function cont() {
let topWpm = 0;
@ -194,7 +196,9 @@ export async function getUserHighestWpm(
result.mode2 == mode2 &&
result.punctuation == punctuation &&
result.language == language &&
result.difficulty == difficulty
result.difficulty == difficulty &&
(result.lazyMode === lazyMode ||
(result.lazyMode === undefined && lazyMode === false))
) {
if (result.wpm > topWpm) {
topWpm = result.wpm;
@ -218,7 +222,8 @@ export async function getUserAverageWpm10(
mode2,
punctuation,
language,
difficulty
difficulty,
lazyMode
) {
function cont() {
let wpmSum = 0;
@ -231,7 +236,9 @@ export async function getUserAverageWpm10(
result.mode == mode &&
result.punctuation == punctuation &&
result.language == language &&
result.difficulty == difficulty
result.difficulty == difficulty &&
(result.lazyMode === lazyMode ||
(result.lazyMode === undefined && lazyMode === false))
) {
// Continue if the mode2 doesn't match unless it's a quote.
if (result.mode2 != mode2 && mode != "quote") {
@ -283,6 +290,7 @@ export async function getLocalPB(
punctuation,
language,
difficulty,
lazyMode,
funbox
) {
if (funbox !== "none" && funbox !== "plus_one" && funbox !== "plus_two") {
@ -296,7 +304,9 @@ export async function getLocalPB(
if (
pb.punctuation == punctuation &&
pb.difficulty == difficulty &&
pb.language == language
pb.language == language &&
(pb.lazyMode === lazyMode ||
(pb.lazyMode === undefined && lazyMode === false))
) {
ret = pb.wpm;
}
@ -322,6 +332,7 @@ export async function saveLocalPB(
punctuation,
language,
difficulty,
lazyMode,
wpm,
acc,
raw,
@ -338,7 +349,9 @@ export async function saveLocalPB(
if (
pb.punctuation == punctuation &&
pb.difficulty == difficulty &&
pb.language == language
pb.language == language &&
(pb.lazyMode === lazyMode ||
(pb.lazyMode === undefined && lazyMode === false))
) {
found = true;
pb.wpm = wpm;
@ -346,6 +359,7 @@ export async function saveLocalPB(
pb.raw = raw;
pb.timestamp = Date.now();
pb.consistency = consistency;
pb.lazyMode = lazyMode;
}
});
if (!found) {
@ -353,6 +367,7 @@ export async function saveLocalPB(
dbSnapshot.personalBests[mode][mode2].push({
language: language,
difficulty: difficulty,
lazyMode: lazyMode,
punctuation: punctuation,
wpm: wpm,
acc: acc,
@ -369,6 +384,7 @@ export async function saveLocalPB(
{
language: language,
difficulty: difficulty,
lazyMode: lazyMode,
punctuation: punctuation,
wpm: wpm,
acc: acc,
@ -391,7 +407,8 @@ export async function getLocalTagPB(
mode2,
punctuation,
language,
difficulty
difficulty,
lazyMode
) {
function cont() {
let ret = 0;
@ -401,7 +418,9 @@ export async function getLocalTagPB(
if (
pb.punctuation == punctuation &&
pb.difficulty == difficulty &&
pb.language == language
pb.language == language &&
(pb.lazyMode === lazyMode ||
(pb.lazyMode === undefined && lazyMode === false))
) {
ret = pb.wpm;
}
@ -428,6 +447,7 @@ export async function saveLocalTagPB(
punctuation,
language,
difficulty,
lazyMode,
wpm,
acc,
raw,
@ -445,7 +465,9 @@ export async function saveLocalTagPB(
if (
pb.punctuation == punctuation &&
pb.difficulty == difficulty &&
pb.language == language
pb.language == language &&
(pb.lazyMode === lazyMode ||
(pb.lazyMode === undefined && lazyMode === false))
) {
found = true;
pb.wpm = wpm;
@ -453,6 +475,7 @@ export async function saveLocalTagPB(
pb.raw = raw;
pb.timestamp = Date.now();
pb.consistency = consistency;
pb.lazyMode = lazyMode;
}
});
if (!found) {
@ -460,6 +483,7 @@ export async function saveLocalTagPB(
filteredtag.personalBests[mode][mode2].push({
language: language,
difficulty: difficulty,
lazyMode: lazyMode,
punctuation: punctuation,
wpm: wpm,
acc: acc,
@ -476,6 +500,7 @@ export async function saveLocalTagPB(
{
language: language,
difficulty: difficulty,
lazyMode: lazyMode,
punctuation: punctuation,
wpm: wpm,
acc: acc,

View file

@ -203,6 +203,7 @@ async function initGroups() {
"capsLockBackspace",
UpdateConfig.setCapsLockBackspace
);
groups.lazyMode = new SettingsGroup("lazyMode", UpdateConfig.setLazyMode);
groups.layout = new SettingsGroup("layout", UpdateConfig.setLayout);
groups.language = new SettingsGroup("language", UpdateConfig.setLanguage);
groups.fontSize = new SettingsGroup("fontSize", UpdateConfig.setFontSize);

35
src/js/test/lazy-mode.js Normal file
View file

@ -0,0 +1,35 @@
let accents = [
["áàâäåãąą́āą̄", "a"],
["éèêëẽęę́ēę̄ė", "e"],
["íìîïĩįį́īį̄", "i"],
["óòôöøõóōǫǫ́ǭ", "o"],
["úùûüŭũúūů", "u"],
["ñń", "n"],
["çĉć", "c"],
["æ", "ae"],
["œ", "oe"],
["ẅ", "w"],
["ĝğg̃", "g"],
["ĥ", "h"],
["ĵ", "j"],
["ń", "n"],
["ŝś", "s"],
["żź", "z"],
["ÿỹ", "y"],
["ł", "l"],
];
export function replaceAccents(word) {
if (!accents) return newWord;
let newWord = word;
let regex;
for (let i = 0; i < accents.length; i++) {
regex = new RegExp(`[${accents[i][0]}]`, "gi");
newWord = newWord.replace(regex, accents[i][1]);
}
return newWord;
}

View file

@ -47,6 +47,7 @@ export async function init() {
Config.punctuation,
Config.language,
Config.difficulty,
Config.lazyMode,
Config.funbox
);
} else if (Config.paceCaret === "average") {
@ -65,7 +66,8 @@ export async function init() {
mode2,
Config.punctuation,
Config.language,
Config.difficulty
Config.difficulty,
Config.lazyMode
);
console.log("avg pace " + wpm);
} else if (Config.paceCaret === "custom") {

View file

@ -36,6 +36,7 @@ import * as Wordset from "./wordset";
import * as ChallengeContoller from "./challenge-controller";
import * as RateQuotePopup from "./rate-quote-popup";
import * as BritishEnglish from "./british-english";
import * as LazyMode from "./lazy-mode";
const objecthash = require("object-hash");
@ -469,6 +470,11 @@ export async function init() {
language = await Misc.getLanguage(Config.language);
}
if (Config.lazyMode === true && language.noLazyMode) {
Notifications.add("This language does not support lazy mode.", 0);
UpdateConfig.setLazyMode(false);
}
if (
Config.mode == "time" ||
Config.mode == "words" ||
@ -583,6 +589,10 @@ export async function init() {
if (britishWord) randomWord = britishWord;
}
if (Config.lazyMode === true && language.accents) {
randomWord = LazyMode.replaceAccents(randomWord);
}
if (Config.funbox === "rAnDoMcAsE") {
let randomcaseword = "";
for (let i = 0; i < randomWord.length; i++) {
@ -743,6 +753,11 @@ export async function init() {
let britishWord = await BritishEnglish.replace(w[i]);
if (britishWord) w[i] = britishWord;
}
if (Config.lazyMode === true && language.accents) {
w[i] = LazyMode.replaceAccents(w[i]);
}
words.push(w[i]);
}
}
@ -1581,6 +1596,7 @@ export async function finish(difficultyFailed = false) {
quoteLength: quoteLength,
punctuation: Config.punctuation,
numbers: Config.numbers,
lazyMode: Config.lazyMode,
timestamp: Date.now(),
language: lang,
restartCount: TestStats.restartCount,
@ -1662,6 +1678,7 @@ export async function finish(difficultyFailed = false) {
Config.punctuation,
Config.language,
Config.difficulty,
Config.lazyMode,
Config.funbox
).then((lpb) => {
DB.getUserHighestWpm(
@ -1669,7 +1686,8 @@ export async function finish(difficultyFailed = false) {
mode2,
Config.punctuation,
Config.language,
Config.difficulty
Config.difficulty,
Config.lazyMode
).then(async (highestwpm) => {
PbCrown.hide();
$("#result .stats .wpm .crown").attr("aria-label", "");
@ -1747,7 +1765,8 @@ export async function finish(difficultyFailed = false) {
mode2,
Config.punctuation,
Config.language,
Config.difficulty
Config.difficulty,
Config.lazyMode
);
$("#result .stats .tags .bottom").append(`
<div tagid="${tag._id}" aria-label="PB: ${tpb}" data-balloon-pos="up">${tag.name}<i class="fas fa-crown hidden"></i></div>
@ -1762,6 +1781,7 @@ export async function finish(difficultyFailed = false) {
Config.punctuation,
Config.language,
Config.difficulty,
Config.lazyMode,
stats.wpm,
stats.acc,
stats.wpmRaw,
@ -1986,6 +2006,9 @@ export async function finish(difficultyFailed = false) {
if (Config.blindMode) {
testType += "<br>blind";
}
if (Config.lazyMode) {
testType += "<br>lazy";
}
if (Config.funbox !== "none") {
testType += "<br>" + Config.funbox.replace(/_/g, " ");
}

View file

@ -528,6 +528,12 @@ export function updateModesNotice() {
);
}
if (Config.lazyMode) {
$(".pageTest #testModesNotice").append(
`<div class="text-button" commands="commandsLazyMode"><i class="fas fa-couch"></i>lazy</div>`
);
}
if (
Config.paceCaret !== "off" ||
(Config.repeatedPace && TestLogic.isPaceRepeat)

View file

@ -2395,6 +2395,20 @@
</div>
</div>
</div>
<div class="section lazyMode">
<h1>lazy mode</h1>
<div class="text">
Replaces accented letters with their normal equivalents.
</div>
<div class="buttons">
<div class="button off" tabindex="0" onclick="this.blur();">
off
</div>
<div class="button on" tabindex="0" onclick="this.blur();">
on
</div>
</div>
</div>
<div class="section layout fullWidth">
<h1>layout override</h1>
<div class="text">

View file

@ -0,0 +1,20 @@
[
["áàâäåãąą́āą̄", "a"],
["éèêëẽęę́ēę̄ė", "e"],
["íìîïĩįį́īį̄", "i"],
["óòôöøõóōǫǫ́ǭ", "o"],
["úùûüŭũúūů", "u"],
["ñń", "n"],
["çĉć", "c"],
["æ", "ae"],
["œ", "oe"],
["ẅ", "w"],
["ĝğg̃", "g"],
["ĥ", "h"],
["ĵ", "j"],
["ń", "n"],
["ŝś", "s"],
["żź", "z"],
["ÿỹ", "y"],
["ł", "l"]
]

View file

@ -2,6 +2,7 @@
"name": "arabic",
"leftToRight": false,
"ligatures": true,
"noLazyMode": true,
"words": [
"اتمنى",
"اثق",

View file

@ -2,6 +2,7 @@
"name": "arabic_10k",
"leftToRight": false,
"ligatures": true,
"noLazyMode": true,
"words": [
"اكتشف",
"فيجب",

View file

@ -2,6 +2,7 @@
"name": "bangla",
"leftToRight": true,
"ligatures": true,
"noLazyMode": true,
"words": [
"।",
"আমি",

View file

@ -2,6 +2,7 @@
"name": "bangla_10k",
"leftToRight": true,
"ligatures": true,
"noLazyMode": true,
"words": [
"।",
"আমি",

View file

@ -2,6 +2,7 @@
"name": "bangla_letters",
"leftToRight": true,
"ligatures": true,
"noLazyMode": true,
"words": [
"অ",
"আ",

View file

@ -1,6 +1,7 @@
{
"name": "bulgarian",
"leftToRight": true,
"noLazyMode": true,
"words": [
"а",
"аз",

View file

@ -1,6 +1,7 @@
{
"name": "code_c++",
"leftToRight": true,
"noLazyMode": true,
"words": [
"alignas",
"alignof",

View file

@ -1,6 +1,7 @@
{
"name": "code_c",
"leftToRight": true,
"noLazyMode": true,
"words": [
"int",
"char",

View file

@ -1,6 +1,7 @@
{
"name": "code_csharp",
"leftToRight": true,
"noLazyMode": true,
"words": [
"abstract",
"as",

View file

@ -1,6 +1,7 @@
{
"name": "code_dart",
"leftToRight": true,
"noLazyMode": true,
"words": [
"()",
"[]",

View file

@ -1,6 +1,7 @@
{
"name": "code_go",
"leftToRight": true,
"noLazyMode": true,
"words": [
"break",
"default",

View file

@ -1,6 +1,7 @@
{
"name": "code_html",
"leftToRight": true,
"noLazyMode": true,
"words": [
"action",
"alt",

View file

@ -1,70 +1,71 @@
{
"name":"code_java",
"leftToRight": true,
"words":[
"abstract",
"assert",
"boolean",
"break",
"byte",
"case",
"catch",
"char",
"class",
"continue",
"default",
"do",
"double",
"else",
"enum",
"extends",
"final",
"finally",
"float",
"for",
"if",
"implements",
"import",
"instanceof",
"interface",
"long",
"native",
"new",
"null",
"package",
"private",
"protected",
"public",
"return",
"short",
"static",
"strictfp",
"super",
"switch",
"synchronized",
"this",
"throw",
"throws",
"transient",
"try",
"void",
"volatile",
"while",
"valueOf",
"from",
"parse",
"get",
"contains",
"remove",
"clear",
"put",
"set",
"with",
"throwas",
"build",
"add",
"subtract",
"append",
"length"
]
"name": "code_java",
"leftToRight": true,
"noLazyMode": true,
"words": [
"abstract",
"assert",
"boolean",
"break",
"byte",
"case",
"catch",
"char",
"class",
"continue",
"default",
"do",
"double",
"else",
"enum",
"extends",
"final",
"finally",
"float",
"for",
"if",
"implements",
"import",
"instanceof",
"interface",
"long",
"native",
"new",
"null",
"package",
"private",
"protected",
"public",
"return",
"short",
"static",
"strictfp",
"super",
"switch",
"synchronized",
"this",
"throw",
"throws",
"transient",
"try",
"void",
"volatile",
"while",
"valueOf",
"from",
"parse",
"get",
"contains",
"remove",
"clear",
"put",
"set",
"with",
"throwas",
"build",
"add",
"subtract",
"append",
"length"
]
}

View file

@ -1,6 +1,7 @@
{
"name": "code_javascript",
"leftToRight": true,
"noLazyMode": true,
"words": [
"this",
"let",

View file

@ -1,6 +1,7 @@
{
"name": "code_javascript_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"var",
"if",

View file

@ -1,6 +1,7 @@
{
"name": "code_python",
"leftToRight": true,
"noLazyMode": true,
"words": [
"abs",
"all",

View file

@ -1,6 +1,7 @@
{
"name": "code_r",
"leftToRight": true,
"noLazyMode": true,
"words": [
"if",
"for",

View file

@ -1,6 +1,7 @@
{
"name": "code_ruby",
"leftToRight": true,
"noLazyMode": true,
"words": [
"BEGIN",
"class",

View file

@ -1,6 +1,7 @@
{
"name": "code_rust",
"leftToRight": true,
"noLazyMode": true,
"words": [
"as",
"async",

View file

@ -1,6 +1,7 @@
{
"name": "code_swift",
"leftToRight": true,
"noLazyMode": true,
"words": [
"Class",
"deinit",

View file

@ -1,6 +1,7 @@
{
"name": "dutch",
"leftToRight": true,
"noLazyMode": true,
"words": [
"als",
"zijn",

View file

@ -1,6 +1,7 @@
{
"name": "dutch_10k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"aambeeld",
"achtergrondstudie",

View file

@ -1,6 +1,7 @@
{
"name": "dutch_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"aan",
"aanbod",

View file

@ -1,6 +1,7 @@
{
"name": "english",
"leftToRight": true,
"noLazyMode": true,
"words": [
"the",
"be",

View file

@ -1,6 +1,7 @@
{
"name": "english_10k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"a",
"abandoned",

View file

@ -1,6 +1,7 @@
{
"name": "english_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"the",
"of",

View file

@ -1,6 +1,7 @@
{
"name": "english_25k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"plug",
"rounders",

View file

@ -1,6 +1,7 @@
{
"name": "english_450k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"a",
"AA",

View file

@ -1,6 +1,7 @@
{
"name": "english_5k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"the",
"of",

View file

@ -2,6 +2,7 @@
"name": "english_commonly_misspelled",
"leftToRight": true,
"_comment": "Sourced from: https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings",
"noLazyMode": true,
"words": [
"caused",
"ultimately",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_h_sistemo",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_h_sistemo_10k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_h_sistemo_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_h_sistemo_25k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_h_sistemo_36k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_x_sistemo",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_x_sistemo_10k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_x_sistemo_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_x_sistemo_25k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "esperanto_x_sistemo_36k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"la",
"mi",

View file

@ -1,6 +1,7 @@
{
"name": "filipino",
"leftToRight": true,
"noLazyMode": true,
"words": [
"sa",
"na",

View file

@ -1,6 +1,7 @@
{
"name": "filipino_1k",
"leftToRight": "true",
"noLazyMode": true,
"words": [
"salita",
"nagkaroon",
@ -206,7 +207,7 @@
"pamilya",
"miyembro",
"imungkahi",
"ahas",
"ahas",
"kanta",
"kanto",
"sukat",
@ -546,7 +547,7 @@
"ligtas",
"pusa",
"siglo",
"batas",
"batas",
"kopya",
"parirala",
"matangkad",

View file

@ -1,215 +1,216 @@
{
"name": "greek",
"leftToRight": true,
"noLazyMode": true,
"words": [
"άρθρο",
"στέψη",
"βασικό",
"εγώ",
"εβδομάδα",
"αστείο",
"διάφορα",
"πηγαίνω",
"άσχημος",
"εταιρεία",
"νύχτα",
"λουλούδι",
"εφεύρεση",
"κρεβάτι",
"γελάω",
"ζωή",
"νόστιμο",
"μπορώ",
"έχει",
"βουνό",
"διαγωνισμός",
"ειδικό",
"μηχανικός",
"τηλεόραση",
"κάθε",
"πλύση",
"μαύρο",
"όχι",
"υπάρχω",
"γιορτή",
"άγριο",
"εικόνα",
"μητέρα",
"πρόβατο",
"κόκκινο",
"στέγη",
"μυστήριο",
"ψάρι",
"μπορεί",
"ποδήλατο",
"έργο",
"ελπίδα",
"πρέπει",
"αδερφός",
"κακός",
"όμορφος",
"πατέρας",
"αρχαίο",
"τρία",
"λάμπα",
"ιστορία",
"χθες",
"θα",
"πτήση",
"ώρα",
"βλέπω",
"τον",
"ψηφιακός",
"φως",
"πρώτο",
"χειμώνας",
"πρωί",
"αυτή",
"κεφάλι",
"άρωμα",
"πιάτο",
"τραγούδι",
"κάνω",
"αστυνόμος",
"πριν",
"γρήγορα",
"κλήση",
"ύπαρξη",
"πράξη",
"άνοιξη",
"κόρη",
"ομιλία",
"ομάδα",
"ένα",
"δευτερόλεπτο",
"φθινόπωρο",
"εκείνη",
"υπάρχεις",
"την",
"χτίσιμο",
"η",
"λαιμός",
"καληνύχτα",
"καλός",
"ζυμαρικά",
"οργανισμός",
"φώκια",
"κύριο",
"στήθος",
"νερό",
"βαρετό",
"χοιρινό",
"χώρα",
"ταξίδι",
"έχω",
"πολυθρόνα",
"θάλασσα",
"φτιάχνω",
"σήμερα",
"κοτόπουλο",
"δίσκος",
"μακριά",
"εμπειρία",
"σώμα",
"επιτυχία",
"γεύση",
"σπουδές",
"θέλεις",
"υγεία",
"γιος",
"ήταν",
"στομάχι",
"όταν",
"καλημέρα",
"επιστήμη",
"δύο",
"τελευταίο",
"κοινότητα",
"χέρι",
"καπέλο",
"εκείνο",
"φρούτο",
"αγρότης",
"ναι",
"τυρί",
"εκείνος",
"βέλος",
"μήνας",
"πάγος",
"θέλω",
"δάκτυλο",
"κλειστό",
"αργά",
"αυτός",
"ορειβασία",
"γεια",
"αέρας",
"είσαι",
"φορητό",
"διεθνής",
"μάγειρας",
"φτάνω",
"αύριο",
"κάνει",
"καταγραφικό",
"όξινο",
"ψυχή",
"φιλικό",
"μονοπάτι",
"μαχαίρι",
"σκοτώνω",
"βράδυ",
"χρήσιμο",
"καρέκλα",
"άστρο",
"έτος",
"εποχή",
"έπιπλο",
"μεσημέρι",
"κινητό",
"διδάσκω",
"χημικό",
"πόλη",
"πέψη",
"του",
"αγάπη",
"ευχαριστώ",
"καλησπέρα",
"πωλητής",
"οδηγός",
"αρνί",
"πλοίο",
"ευτυχία",
"εγγραφή",
"ξενώνας",
"νησί",
"κωμωδία",
"βρίσκομαι",
"πλάτη",
"υπάλληλος",
"θάνατος",
"τραγωδία",
"αιώνια",
"αυτό",
"πρωταθλητής",
"χρησιμοποιώ",
"λίγο",
"διάστημα",
"κάνουμε",
"φόρεμα",
"ζωγραφιά",
"πίνω",
"ξεκούραση",
"ανακάλυψη",
"πόδι",
"παιδί",
"λεπτό",
"είμαι",
"ποιότητα",
"επιπλέον",
"καλοκαίρι",
"ποδόσφαιρο",
"φριχτό",
"ήλιος"
"άρθρο",
"στέψη",
"βασικό",
"εγώ",
"εβδομάδα",
"αστείο",
"διάφορα",
"πηγαίνω",
"άσχημος",
"εταιρεία",
"νύχτα",
"λουλούδι",
"εφεύρεση",
"κρεβάτι",
"γελάω",
"ζωή",
"νόστιμο",
"μπορώ",
"έχει",
"βουνό",
"διαγωνισμός",
"ειδικό",
"μηχανικός",
"τηλεόραση",
"κάθε",
"πλύση",
"μαύρο",
"όχι",
"υπάρχω",
"γιορτή",
"άγριο",
"εικόνα",
"μητέρα",
"πρόβατο",
"κόκκινο",
"στέγη",
"μυστήριο",
"ψάρι",
"μπορεί",
"ποδήλατο",
"έργο",
"ελπίδα",
"πρέπει",
"αδερφός",
"κακός",
"όμορφος",
"πατέρας",
"αρχαίο",
"τρία",
"λάμπα",
"ιστορία",
"χθες",
"θα",
"πτήση",
"ώρα",
"βλέπω",
"τον",
"ψηφιακός",
"φως",
"πρώτο",
"χειμώνας",
"πρωί",
"αυτή",
"κεφάλι",
"άρωμα",
"πιάτο",
"τραγούδι",
"κάνω",
"αστυνόμος",
"πριν",
"γρήγορα",
"κλήση",
"ύπαρξη",
"πράξη",
"άνοιξη",
"κόρη",
"ομιλία",
"ομάδα",
"ένα",
"δευτερόλεπτο",
"φθινόπωρο",
"εκείνη",
"υπάρχεις",
"την",
"χτίσιμο",
"η",
"λαιμός",
"καληνύχτα",
"καλός",
"ζυμαρικά",
"οργανισμός",
"φώκια",
"κύριο",
"στήθος",
"νερό",
"βαρετό",
"χοιρινό",
"χώρα",
"ταξίδι",
"έχω",
"πολυθρόνα",
"θάλασσα",
"φτιάχνω",
"σήμερα",
"κοτόπουλο",
"δίσκος",
"μακριά",
"εμπειρία",
"σώμα",
"επιτυχία",
"γεύση",
"σπουδές",
"θέλεις",
"υγεία",
"γιος",
"ήταν",
"στομάχι",
"όταν",
"καλημέρα",
"επιστήμη",
"δύο",
"τελευταίο",
"κοινότητα",
"χέρι",
"καπέλο",
"εκείνο",
"φρούτο",
"αγρότης",
"ναι",
"τυρί",
"εκείνος",
"βέλος",
"μήνας",
"πάγος",
"θέλω",
"δάκτυλο",
"κλειστό",
"αργά",
"αυτός",
"ορειβασία",
"γεια",
"αέρας",
"είσαι",
"φορητό",
"διεθνής",
"μάγειρας",
"φτάνω",
"αύριο",
"κάνει",
"καταγραφικό",
"όξινο",
"ψυχή",
"φιλικό",
"μονοπάτι",
"μαχαίρι",
"σκοτώνω",
"βράδυ",
"χρήσιμο",
"καρέκλα",
"άστρο",
"έτος",
"εποχή",
"έπιπλο",
"μεσημέρι",
"κινητό",
"διδάσκω",
"χημικό",
"πόλη",
"πέψη",
"του",
"αγάπη",
"ευχαριστώ",
"καλησπέρα",
"πωλητής",
"οδηγός",
"αρνί",
"πλοίο",
"ευτυχία",
"εγγραφή",
"ξενώνας",
"νησί",
"κωμωδία",
"βρίσκομαι",
"πλάτη",
"υπάλληλος",
"θάνατος",
"τραγωδία",
"αιώνια",
"αυτό",
"πρωταθλητής",
"χρησιμοποιώ",
"λίγο",
"διάστημα",
"κάνουμε",
"φόρεμα",
"ζωγραφιά",
"πίνω",
"ξεκούραση",
"ανακάλυψη",
"πόδι",
"παιδί",
"λεπτό",
"είμαι",
"ποιότητα",
"επιπλέον",
"καλοκαίρι",
"ποδόσφαιρο",
"φριχτό",
"ήλιος"
]
}

View file

@ -2,6 +2,7 @@
"name": "hebrew",
"leftToRight": false,
"ligatures": true,
"noLazyMode": true,
"words": [
"של",
"את",

View file

@ -1,6 +1,7 @@
{
"name": "indonesian",
"leftToRight": true,
"noLazyMode": true,
"words": [
"abu",
"ada",

View file

@ -1,6 +1,7 @@
{
"name": "indonesian_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"abad",
"abadi",

View file

@ -1,211 +1,212 @@
{
"name": "kazakh",
"leftToRight": true,
"words": [
"сен",
"қазақ",
"ел",
"арман",
"қанат",
"өмір",
"әлем",
"бақыт",
"ол",
"қайда",
"қара",
"ақ",
"сары",
"көк",
"дос",
"мақсат",
"жақын",
"қыз",
"ұл",
"бір",
"екі",
"үш",
"төрт",
"бес",
"алты",
"жеті",
"сегіз",
"тоғыз",
"он",
"от",
"ай",
"күн",
"алаш",
"жұрт",
"аспан",
"ұру",
"нұр",
"кету",
"қалу",
"бару",
"айту",
"жету",
"ұту",
"аға",
"адал",
"адам",
"ау",
"ажар",
"аз",
"көп",
"азат",
"айбар",
"кітап",
"аққу",
"қазы",
"қасқыр",
"ақыл",
"алма",
"амал",
"аман",
"ана",
"әке",
"шеше",
"апа",
"ата",
"ар",
"намыс",
"ара",
"ит",
"сан",
"орын",
"ашу",
"сабыр",
"аю",
"аяз",
"әдеп",
"әзіл",
"әйел",
"әлем",
"бет",
"би",
"болу",
"білім",
"өнер",
"мал",
"қан",
"бата",
"қайрат",
"жігер",
"жүрек",
"ой",
"оқу",
"қуаныш",
"қабыл",
"ниет",
"күш",
"қимыл",
"жүйрік",
"қыран",
"көз",
"жас",
"бала",
"ұш",
"көл",
"сөз",
"хан",
"батыр",
"қате",
"төзім",
"күз",
"көктем",
"қыс",
"жаз",
"ажал",
"жақсы",
"жаман",
"рух",
"тұлпар",
"жүз",
"сый",
"былай",
"балық",
"жер",
"зат",
"жылқы",
"тал",
"түс",
"шоқ",
"бірақ",
"алу",
"емес",
"күш",
"рет",
"жара",
"ғибрат",
"ғылым",
"дана",
"дала",
"болат",
"даңқ",
"дау",
"ерік",
"есеп",
"ет",
"ешкім",
"жазу",
"жай",
"ту",
"иман",
"кедей",
"бай",
"қап",
"қар",
"қарай",
"қарау",
"қарт",
"қатал",
"қатты",
"қиын",
"оңай",
"қағаз",
"қол",
"мақта",
"мансап",
"мысық",
"ми",
"нақыл",
"одақ",
"ойлау",
"ойын",
"опат",
"осы",
"оян",
"өзгеріс",
"өлім",
"өнеге",
"ұзақ",
"жел",
"пайда",
"парасат",
"риза",
"рақмет",
"сабақ",
"сақ",
"сала",
"салт",
"сана",
"сапар",
"сатқын",
"сауда",
"соғыс",
"су",
"ауа",
"таң",
"садақ",
"жер",
"марс",
"тез",
"жылдам",
"дем",
"тор",
"уақыт",
"еңбек",
"ұшу",
"ұшқын"
]
}
"name": "kazakh",
"leftToRight": true,
"noLazyMode": true,
"words": [
"сен",
"қазақ",
"ел",
"арман",
"қанат",
"өмір",
"әлем",
"бақыт",
"ол",
"қайда",
"қара",
"ақ",
"сары",
"көк",
"дос",
"мақсат",
"жақын",
"қыз",
"ұл",
"бір",
"екі",
"үш",
"төрт",
"бес",
"алты",
"жеті",
"сегіз",
"тоғыз",
"он",
"от",
"ай",
"күн",
"алаш",
"жұрт",
"аспан",
"ұру",
"нұр",
"кету",
"қалу",
"бару",
"айту",
"жету",
"ұту",
"аға",
"адал",
"адам",
"ау",
"ажар",
"аз",
"көп",
"азат",
"айбар",
"кітап",
"аққу",
"қазы",
"қасқыр",
"ақыл",
"алма",
"амал",
"аман",
"ана",
"әке",
"шеше",
"апа",
"ата",
"ар",
"намыс",
"ара",
"ит",
"сан",
"орын",
"ашу",
"сабыр",
"аю",
"аяз",
"әдеп",
"әзіл",
"әйел",
"әлем",
"бет",
"би",
"болу",
"білім",
"өнер",
"мал",
"қан",
"бата",
"қайрат",
"жігер",
"жүрек",
"ой",
"оқу",
"қуаныш",
"қабыл",
"ниет",
"күш",
"қимыл",
"жүйрік",
"қыран",
"көз",
"жас",
"бала",
"ұш",
"көл",
"сөз",
"хан",
"батыр",
"қате",
"төзім",
"күз",
"көктем",
"қыс",
"жаз",
"ажал",
"жақсы",
"жаман",
"рух",
"тұлпар",
"жүз",
"сый",
"былай",
"балық",
"жер",
"зат",
"жылқы",
"тал",
"түс",
"шоқ",
"бірақ",
"алу",
"емес",
"күш",
"рет",
"жара",
"ғибрат",
"ғылым",
"дана",
"дала",
"болат",
"даңқ",
"дау",
"ерік",
"есеп",
"ет",
"ешкім",
"жазу",
"жай",
"ту",
"иман",
"кедей",
"бай",
"қап",
"қар",
"қарай",
"қарау",
"қарт",
"қатал",
"қатты",
"қиын",
"оңай",
"қағаз",
"қол",
"мақта",
"мансап",
"мысық",
"ми",
"нақыл",
"одақ",
"ойлау",
"ойын",
"опат",
"осы",
"оян",
"өзгеріс",
"өлім",
"өнеге",
"ұзақ",
"жел",
"пайда",
"парасат",
"риза",
"рақмет",
"сабақ",
"сақ",
"сала",
"салт",
"сана",
"сапар",
"сатқын",
"сауда",
"соғыс",
"су",
"ауа",
"таң",
"садақ",
"жер",
"марс",
"тез",
"жылдам",
"дем",
"тор",
"уақыт",
"еңбек",
"ұшу",
"ұшқын"
]
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,7 @@
{
"name": "malagasy",
"leftToRight": true,
"noLazyMode": true,
"words": [
"izany",
"no",

View file

@ -1,6 +1,7 @@
{
"name": "malagasy_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"izany",
"anaka",

View file

@ -2,6 +2,7 @@
"name": "malay",
"leftToRight": true,
"_comment": "Sourced from: https://www.101languages.net/malay/most-common-malay-words/",
"noLazyMode": true,
"words": [
"aku",
"yang",

View file

@ -1,6 +1,7 @@
{
"name": "mongolian",
"leftToRight": true,
"noLazyMode": true,
"words": [
"аавын",
"аан",

View file

@ -1,6 +1,7 @@
{
"name": "mongolian_10k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"аа",
"ав",

View file

@ -2,206 +2,207 @@
"name": "persian",
"leftToRight": false,
"ligatures": true,
"noLazyMode": true,
"words": [
"من",
"تو",
"او",
"بود",
"برای",
"هست",
"شهرک",
"اقلیم",
"تیغ",
"پدر",
"خار",
"گریزان",
"پشتکار",
"نگار",
"هند",
"پیراهن",
"رعایت",
"سود",
"شب",
"نژاد",
"کوچک",
"کودک",
"پرسش",
"ناچار",
"لیاقت",
"ضیافت",
"پوشاک",
"امیر",
"تولید",
"محاسبه",
"مسافرت",
"مدرسه",
"سطح",
"مصاحبه",
"صندلی",
"شگفت",
"خواهر",
"آمار",
"اسباب",
"کاخ",
"شیرینی",
"کبریت",
"عروسک",
"کافی",
"کارگردان",
"صبحانه",
"لبخند",
"اطمینان",
"بازی",
"ریشه",
"مطالعه",
"هوا",
"مخصوص",
"گل",
"پایین",
"دانا",
"همهمه",
"دندان",
"امروز",
"مرهم",
"داستان",
"پزشک",
"آیینه",
"شادی",
"نبرد",
"ظلم",
"بیکار",
"ورزش",
"گریزان",
"تیغ",
"سرعت",
"نامه",
"پرچم",
"تمام",
"بریدن",
"آموزش",
"گویش",
"بیکار",
"کاربرد",
"ترانه",
"پشتکار",
"کج",
"تحقیق",
"مرحله",
"بهداشت",
"بانو",
"گرفتاری",
"شکست",
"آرایه",
"نوشتن",
"پیشانی",
"سلام",
"عاج",
"فیل",
"ماهی",
"چاه",
"باید",
"ژاپن",
"تراکم",
"اکتشاف",
"غذا",
"سختی",
"بادبادک",
"دولت",
"پیام",
"علی",
"شکوفه",
"قلّه",
"آبادی",
"صلاحدید",
"بهار",
"اسب",
"ققنوس",
"منش",
"عامیانه",
"مار",
"آزادی",
"توانایی",
"ظرف",
"خطا",
"آماده",
"عرصه",
"شروع",
"چرا",
"حیوانات",
"گوناگون",
"رویش",
"پاییز",
"ادبیات",
"بازرگانی",
"تلفن",
"فردا",
"دنباله",
"گردش",
"روشنایی",
"برگ",
"پشتوانه",
"استثنا",
"فراخ",
"چشم",
"سایه",
"اندیشه",
"چطور",
"جانور",
"مادر",
"درباره",
"سال",
"ساحل",
"استرداد",
"چرخه",
"سفید",
"صحبت",
"متفاوت",
"قالب",
"کرانه",
"ترجمه",
"راز",
"رمز",
"و",
"آلو",
"به",
"در",
"خنده",
"نیاز",
"دادگاه",
"دقیقه",
"انقباض",
"غروب",
"تنگی",
"ارسلان",
"برخوردار",
"نرگس",
"ضوابط",
"باد",
"ماشین",
"بها",
"طرح",
"سیلی",
"مرموز",
"کثیف",
"زبان",
"وزیر",
"شاه",
"ملکه",
"گنجایش",
"آسمان",
"نوشیدنی",
"برشته",
"حمله",
"اساس",
"عشق",
"طبس",
"پند",
"پیوند",
"کاسه",
"انسان",
"برق",
"عنوان",
"که",
"خود"
"من",
"تو",
"او",
"بود",
"برای",
"هست",
"شهرک",
"اقلیم",
"تیغ",
"پدر",
"خار",
"گریزان",
"پشتکار",
"نگار",
"هند",
"پیراهن",
"رعایت",
"سود",
"شب",
"نژاد",
"کوچک",
"کودک",
"پرسش",
"ناچار",
"لیاقت",
"ضیافت",
"پوشاک",
"امیر",
"تولید",
"محاسبه",
"مسافرت",
"مدرسه",
"سطح",
"مصاحبه",
"صندلی",
"شگفت",
"خواهر",
"آمار",
"اسباب",
"کاخ",
"شیرینی",
"کبریت",
"عروسک",
"کافی",
"کارگردان",
"صبحانه",
"لبخند",
"اطمینان",
"بازی",
"ریشه",
"مطالعه",
"هوا",
"مخصوص",
"گل",
"پایین",
"دانا",
"همهمه",
"دندان",
"امروز",
"مرهم",
"داستان",
"پزشک",
"آیینه",
"شادی",
"نبرد",
"ظلم",
"بیکار",
"ورزش",
"گریزان",
"تیغ",
"سرعت",
"نامه",
"پرچم",
"تمام",
"بریدن",
"آموزش",
"گویش",
"بیکار",
"کاربرد",
"ترانه",
"پشتکار",
"کج",
"تحقیق",
"مرحله",
"بهداشت",
"بانو",
"گرفتاری",
"شکست",
"آرایه",
"نوشتن",
"پیشانی",
"سلام",
"عاج",
"فیل",
"ماهی",
"چاه",
"باید",
"ژاپن",
"تراکم",
"اکتشاف",
"غذا",
"سختی",
"بادبادک",
"دولت",
"پیام",
"علی",
"شکوفه",
"قلّه",
"آبادی",
"صلاحدید",
"بهار",
"اسب",
"ققنوس",
"منش",
"عامیانه",
"مار",
"آزادی",
"توانایی",
"ظرف",
"خطا",
"آماده",
"عرصه",
"شروع",
"چرا",
"حیوانات",
"گوناگون",
"رویش",
"پاییز",
"ادبیات",
"بازرگانی",
"تلفن",
"فردا",
"دنباله",
"گردش",
"روشنایی",
"برگ",
"پشتوانه",
"استثنا",
"فراخ",
"چشم",
"سایه",
"اندیشه",
"چطور",
"جانور",
"مادر",
"درباره",
"سال",
"ساحل",
"استرداد",
"چرخه",
"سفید",
"صحبت",
"متفاوت",
"قالب",
"کرانه",
"ترجمه",
"راز",
"رمز",
"و",
"آلو",
"به",
"در",
"خنده",
"نیاز",
"دادگاه",
"دقیقه",
"انقباض",
"غروب",
"تنگی",
"ارسلان",
"برخوردار",
"نرگس",
"ضوابط",
"باد",
"ماشین",
"بها",
"طرح",
"سیلی",
"مرموز",
"کثیف",
"زبان",
"وزیر",
"شاه",
"ملکه",
"گنجایش",
"آسمان",
"نوشیدنی",
"برشته",
"حمله",
"اساس",
"عشق",
"طبس",
"پند",
"پیوند",
"کاسه",
"انسان",
"برق",
"عنوان",
"که",
"خود"
]
}
}

View file

@ -1,6 +1,7 @@
{
"name": "pig_latin",
"leftToRight": true,
"noLazyMode": true,
"words": [
"ethay",
"ebay",

View file

@ -1,6 +1,7 @@
{
"name": "russian",
"leftToRight": true,
"noLazyMode": true,
"words": [
"и",
"в",

View file

@ -1,6 +1,7 @@
{
"name": "russian_10k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"и",
"в",

View file

@ -1,6 +1,7 @@
{
"name": "russian_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"и",
"в",

View file

@ -1,6 +1,7 @@
{
"name": "serbian",
"leftToRight": true,
"noLazyMode": true,
"words": [
"као",
"ја",

File diff suppressed because it is too large Load diff

View file

@ -1,37 +1,38 @@
{
"name": "tamil",
"leftToRight": true,
"noLazyMode": true,
"words": [
"அ",
"ஆ",
"இ",
"ஈ",
"உ",
"ஊ",
"எ",
"ஏ",
"ஐ",
"ஒ",
"ஓ",
"ஔ",
"ஃ",
"க",
"ங",
"ச",
"ஞ",
"ட",
"ண",
"த",
"ந",
"ப",
"ம",
"ய",
"ர",
"ல",
"வ",
"ழ",
"ள",
"ற",
"ன"
]
"அ",
"ஆ",
"இ",
"ஈ",
"உ",
"ஊ",
"எ",
"ஏ",
"ஐ",
"ஒ",
"ஓ",
"ஔ",
"ஃ",
"க",
"ங",
"ச",
"ஞ",
"ட",
"ண",
"த",
"ந",
"ப",
"ம",
"ய",
"ர",
"ல",
"வ",
"ழ",
"ள",
"ற",
"ன"
]
}

View file

@ -1,6 +1,7 @@
{
"name": "thai",
"leftToRight": true,
"noLazyMode": true,
"words": [
"ที่",
"การ",

View file

@ -1,7 +1,9 @@
{
"name": "toki_pona",
"leftToRight": true,
"words": ["a",
"noLazyMode": true,
"words": [
"a",
"akesi",
"ala",
"alasa",

View file

@ -1,211 +1,212 @@
{
"name": "twitch_emotes",
"leftToRight": true,
"words": [
"HeyGuys",
"Kreygasm",
"LUL",
"TriHard",
"<3",
"RedCoat",
"KomodoHype",
"Kappa",
"BibleThump",
"KappaClaus",
"Squid1",
"Squid1",
"Squid3",
"Squid4",
":)",
":o",
":D",
":p",
"o_O",
">(",
"R)",
"4Head",
"BOP",
"BloodTrail",
"CoolStoryBob",
"CorgiDerp",
"DarkMode",
"DoritosChip",
"DoritosChip",
"ExtraLife",
"ExtraLife",
"GivePLZ",
"GreenTeam",
"GlitchCat",
"HolidayCookie",
"HolidayOrnament",
"HolidayPresent",
"HolidaySanta",
"HolidayTree",
"InuyoFace",
"Jebaited",
"KappaPride",
"KappaRoss",
"KappaWealth",
"Keepo",
"Kippa",
"Mau5",
"NotLikeThis",
"PartyHat",
"PixelBob",
"PowerUpL",
"PowerUpR",
"PurpleStar",
"RaccAttack",
"SSSsss",
"SeemsGood",
"SeriousSloth",
"ShadyLulu",
"SoonerLater",
"StinkyGlitch",
"TBAngel",
"TPcrunchyroll",
"TakeNRG",
"TakeNRG",
"VoHiYo",
"VoteNay",
"VoteYea",
"WutFace",
"bleedPurple",
"cmonBruh",
"copyThis",
"monkaS",
"OMEGALUL",
"Clap",
"POOGERS",
"PepeHands",
"EZ",
"catJAM",
"pepeJam",
"Pepga",
"PepePls",
"pepeD",
"KEKW",
"PogU",
"gachiBASS",
"5Head",
"AYAYA",
"gachiHYPER",
"PepeLaugh",
"weirdChamp",
"blobDance",
"monkaW",
"ricardoFlick",
"PepegaAim",
"peepoClap",
"PepoDance",
"Sadge",
"HYPERS",
"sumSmash",
"RainbowPls",
"TriDance",
"LULW",
"Dance",
"(ditto)",
"monkaHmm",
"peepoLeave",
"peepoHappy",
"widepeepoHappy",
"gachiGASM",
"peepoArrive",
"pepeDS",
"pressF",
"monkaTOS",
"weSmart",
"RareParrot",
"ppOverheat",
"PauseChamp",
"PartyParrot",
"pepeJAMJAM",
"monkaX",
"HYPERCLAP",
"bongoTap",
"TriKool",
"peepoPooPoo",
"POGSLIDE",
"peepoRun",
"WaitWhat",
"FeelsRainMan",
"monkaSHAKE",
"pepeMeltdown",
"PETTHEPEEPO",
"modCheck",
"COGGERS",
"WeSmart",
"ppJedi",
"peepoSad",
"WAYTOODANK",
"TeaTime",
"ddHuh",
"KKool",
"monkaGun",
"pugPls",
"ppHop",
"KEKWait",
"pikaOMG",
"PeepoCheer",
"peepoHey",
"peepoSimp",
"HACKERMANS",
"MYAA",
"lickR",
"forsenPls",
"Thonk",
"KEKWLaugh",
"peepoShy",
"peepoLove",
"HAhaa",
"kumaPls",
"PartyKirby",
"AlienPls",
"CuteDog",
"headBang",
"CrabPls",
"PEPEDS",
"NOPERS",
"monkaSTEER",
"BLELELE",
"pepeJAMMER",
"NODDERS",
"tenseSmash",
"PepegaPls",
"DonoWall",
"coffinPLZ",
"FeelWeirdMan",
"peepoSmash",
"3Head",
"RIP",
"GuitarTime",
"confusedCat",
"peepoGiggles",
"ZULUL",
"PepoSabers",
"KKOMRADE",
"ThisisFine",
"BBoomer",
"RareChar",
"BabyYodaSip",
"PepeWhy",
"sadKEK",
"mericCat",
"popCat",
"pepeBass",
"FeelsOkayMan",
"PeepoNoob",
"DANCE",
"peepoComfy",
"pepeClap",
"WowPls",
"MLADY",
"OOOO",
"PETTHEMODS",
"pepega",
"D:",
"PepeLa",
"Jammies"
]
}
{
"name": "twitch_emotes",
"leftToRight": true,
"noLazyMode": true,
"words": [
"HeyGuys",
"Kreygasm",
"LUL",
"TriHard",
"<3",
"RedCoat",
"KomodoHype",
"Kappa",
"BibleThump",
"KappaClaus",
"Squid1",
"Squid1",
"Squid3",
"Squid4",
":)",
":o",
":D",
":p",
"o_O",
">(",
"R)",
"4Head",
"BOP",
"BloodTrail",
"CoolStoryBob",
"CorgiDerp",
"DarkMode",
"DoritosChip",
"DoritosChip",
"ExtraLife",
"ExtraLife",
"GivePLZ",
"GreenTeam",
"GlitchCat",
"HolidayCookie",
"HolidayOrnament",
"HolidayPresent",
"HolidaySanta",
"HolidayTree",
"InuyoFace",
"Jebaited",
"KappaPride",
"KappaRoss",
"KappaWealth",
"Keepo",
"Kippa",
"Mau5",
"NotLikeThis",
"PartyHat",
"PixelBob",
"PowerUpL",
"PowerUpR",
"PurpleStar",
"RaccAttack",
"SSSsss",
"SeemsGood",
"SeriousSloth",
"ShadyLulu",
"SoonerLater",
"StinkyGlitch",
"TBAngel",
"TPcrunchyroll",
"TakeNRG",
"TakeNRG",
"VoHiYo",
"VoteNay",
"VoteYea",
"WutFace",
"bleedPurple",
"cmonBruh",
"copyThis",
"monkaS",
"OMEGALUL",
"Clap",
"POOGERS",
"PepeHands",
"EZ",
"catJAM",
"pepeJam",
"Pepga",
"PepePls",
"pepeD",
"KEKW",
"PogU",
"gachiBASS",
"5Head",
"AYAYA",
"gachiHYPER",
"PepeLaugh",
"weirdChamp",
"blobDance",
"monkaW",
"ricardoFlick",
"PepegaAim",
"peepoClap",
"PepoDance",
"Sadge",
"HYPERS",
"sumSmash",
"RainbowPls",
"TriDance",
"LULW",
"Dance",
"(ditto)",
"monkaHmm",
"peepoLeave",
"peepoHappy",
"widepeepoHappy",
"gachiGASM",
"peepoArrive",
"pepeDS",
"pressF",
"monkaTOS",
"weSmart",
"RareParrot",
"ppOverheat",
"PauseChamp",
"PartyParrot",
"pepeJAMJAM",
"monkaX",
"HYPERCLAP",
"bongoTap",
"TriKool",
"peepoPooPoo",
"POGSLIDE",
"peepoRun",
"WaitWhat",
"FeelsRainMan",
"monkaSHAKE",
"pepeMeltdown",
"PETTHEPEEPO",
"modCheck",
"COGGERS",
"WeSmart",
"ppJedi",
"peepoSad",
"WAYTOODANK",
"TeaTime",
"ddHuh",
"KKool",
"monkaGun",
"pugPls",
"ppHop",
"KEKWait",
"pikaOMG",
"PeepoCheer",
"peepoHey",
"peepoSimp",
"HACKERMANS",
"MYAA",
"lickR",
"forsenPls",
"Thonk",
"KEKWLaugh",
"peepoShy",
"peepoLove",
"HAhaa",
"kumaPls",
"PartyKirby",
"AlienPls",
"CuteDog",
"headBang",
"CrabPls",
"PEPEDS",
"NOPERS",
"monkaSTEER",
"BLELELE",
"pepeJAMMER",
"NODDERS",
"tenseSmash",
"PepegaPls",
"DonoWall",
"coffinPLZ",
"FeelWeirdMan",
"peepoSmash",
"3Head",
"RIP",
"GuitarTime",
"confusedCat",
"peepoGiggles",
"ZULUL",
"PepoSabers",
"KKOMRADE",
"ThisisFine",
"BBoomer",
"RareChar",
"BabyYodaSip",
"PepeWhy",
"sadKEK",
"mericCat",
"popCat",
"pepeBass",
"FeelsOkayMan",
"PeepoNoob",
"DANCE",
"peepoComfy",
"pepeClap",
"WowPls",
"MLADY",
"OOOO",
"PETTHEMODS",
"pepega",
"D:",
"PepeLa",
"Jammies"
]
}

View file

@ -1,6 +1,7 @@
{
"name": "ukrainian",
"leftToRight": true,
"noLazyMode": true,
"words": [
"і",
"на",

View file

@ -1,6 +1,7 @@
{
"name": "ukrainian_10k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"і",
"на",

View file

@ -1,6 +1,7 @@
{
"name": "ukrainian_1k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"і",
"на",

View file

@ -1,6 +1,7 @@
{
"name": "ukrainian_50k",
"leftToRight": true,
"noLazyMode": true,
"words": [
"і",
"на",

View file

@ -1,209 +1,208 @@
{
"name": "urdu",
"leftToRight": false,
"ligatures": true,
"words": [
"آئے",
"آخر",
"آدمی",
"آواز",
"آیا",
"ابھی",
"اختلاف",
"ادا",
"اس",
"استعمال",
"اعلی",
"اقدام",
"انجن",
"انگیز",
"انہوں",
"اور",
"اچھا",
"اچھی",
"اگر",
"ایک",
"ایکٹ",
"بات",
"باری",
"بارے",
"بازو",
"باہر",
"بتانا",
"برف",
"بعد",
"بنا",
"بنانے",
"بند",
"بڑا",
"بڑے",
"بھاری",
"بھی",
"بہت",
"بیٹھ",
"تبدیلی",
"تحت",
"تصویر",
"تعداد",
"تعمیر",
"تقسیم",
"تلاش",
"تمام",
"تھا",
"تھوڑا",
"تھے",
"تین",
"ثابت",
"جاؤ",
"جادو",
"جانتے",
"جانور",
"جنرل",
"جنگل",
"جوڑی",
"جگہ",
"جہاں",
"حاصل",
"حصہ",
"خطے",
"خود",
"دائرے",
"دنیا",
"دیوار",
"دیکھیں",
"دیگر",
"ذریعے",
"راستہ",
"رقص",
"روشنی",
"رہا",
"رہتے",
"ریس",
"زمین",
"زیادہ",
"سائز",
"ساتھ",
"سال",
"سب",
"سزا",
"سٹور",
"سکتا",
"سکتے",
"سیل",
"سیٹ",
"سے",
"شامل",
"شبدانش",
"شہوت",
"صبح",
"صرف",
"ضرورت",
"ضروری",
"طرح",
"طرف",
"طور",
"طویل",
"عظیم",
"فارم",
"فالو",
"فہرست",
"قریب",
"قسم",
"لئے",
"لائن",
"لفظ",
"لمبائی",
"لوگ",
"لڑکے",
"لکھنا",
"لگتا",
"لہر",
"لیکن",
"ماں",
"مجھے",
"محسوس",
"مختلف",
"مدد",
"مردوں",
"مزید",
"مطلب",
"معاملہ",
"ملک",
"مواد",
"موجودہ",
"موسم",
"موضوع",
"میرا",
"میں",
"نئے",
"نام",
"نظر",
"نقطہ",
"نمائندگی",
"نیند",
"نیچے",
"نے",
"واحد",
"والد",
"واپس",
"وجہ",
"ورزش",
"وزن",
"وسیع",
"وقت",
"ونڈو",
"وہاں",
"ٹانگ",
"ٹرین",
"پانی",
"پر",
"پرانے",
"پورٹ",
"پوزیشن",
"پوچھنا",
"پڑھیں",
"پھر",
"پہلے",
"چاہتے",
"چھوٹے",
"ڈال",
"ڈراپ",
"کا",
"کال",
"کام",
"کر",
"کرتا",
"کرنے",
"کریں",
"کس",
"کوئی",
"کوشش",
"کچھ",
"کہ",
"کہا",
"کہنا",
"کی",
"کیا",
"کیوں",
"کیچ",
"کے",
"گرم،",
"گرما",
"گرینڈ",
"گول",
"گھر",
"گیا",
"گیند",
"ہاتھ",
"ہر",
"ہمارے",
"ہو",
"ہوا",
"ہیں",
"ہے",
"یہاں",
"پہاڑ"
]
}
"name": "urdu",
"leftToRight": false,
"ligatures": true,
"noLazyMode": true,
"words": [
"آئے",
"آخر",
"آدمی",
"آواز",
"آیا",
"ابھی",
"اختلاف",
"ادا",
"اس",
"استعمال",
"اعلی",
"اقدام",
"انجن",
"انگیز",
"انہوں",
"اور",
"اچھا",
"اچھی",
"اگر",
"ایک",
"ایکٹ",
"بات",
"باری",
"بارے",
"بازو",
"باہر",
"بتانا",
"برف",
"بعد",
"بنا",
"بنانے",
"بند",
"بڑا",
"بڑے",
"بھاری",
"بھی",
"بہت",
"بیٹھ",
"تبدیلی",
"تحت",
"تصویر",
"تعداد",
"تعمیر",
"تقسیم",
"تلاش",
"تمام",
"تھا",
"تھوڑا",
"تھے",
"تین",
"ثابت",
"جاؤ",
"جادو",
"جانتے",
"جانور",
"جنرل",
"جنگل",
"جوڑی",
"جگہ",
"جہاں",
"حاصل",
"حصہ",
"خطے",
"خود",
"دائرے",
"دنیا",
"دیوار",
"دیکھیں",
"دیگر",
"ذریعے",
"راستہ",
"رقص",
"روشنی",
"رہا",
"رہتے",
"ریس",
"زمین",
"زیادہ",
"سائز",
"ساتھ",
"سال",
"سب",
"سزا",
"سٹور",
"سکتا",
"سکتے",
"سیل",
"سیٹ",
"سے",
"شامل",
"شبدانش",
"شہوت",
"صبح",
"صرف",
"ضرورت",
"ضروری",
"طرح",
"طرف",
"طور",
"طویل",
"عظیم",
"فارم",
"فالو",
"فہرست",
"قریب",
"قسم",
"لئے",
"لائن",
"لفظ",
"لمبائی",
"لوگ",
"لڑکے",
"لکھنا",
"لگتا",
"لہر",
"لیکن",
"ماں",
"مجھے",
"محسوس",
"مختلف",
"مدد",
"مردوں",
"مزید",
"مطلب",
"معاملہ",
"ملک",
"مواد",
"موجودہ",
"موسم",
"موضوع",
"میرا",
"میں",
"نئے",
"نام",
"نظر",
"نقطہ",
"نمائندگی",
"نیند",
"نیچے",
"نے",
"واحد",
"والد",
"واپس",
"وجہ",
"ورزش",
"وزن",
"وسیع",
"وقت",
"ونڈو",
"وہاں",
"ٹانگ",
"ٹرین",
"پانی",
"پر",
"پرانے",
"پورٹ",
"پوزیشن",
"پوچھنا",
"پڑھیں",
"پھر",
"پہلے",
"چاہتے",
"چھوٹے",
"ڈال",
"ڈراپ",
"کا",
"کال",
"کام",
"کر",
"کرتا",
"کرنے",
"کریں",
"کس",
"کوئی",
"کوشش",
"کچھ",
"کہ",
"کہا",
"کہنا",
"کی",
"کیا",
"کیوں",
"کیچ",
"کے",
"گرم،",
"گرما",
"گرینڈ",
"گول",
"گھر",
"گیا",
"گیند",
"ہاتھ",
"ہر",
"ہمارے",
"ہو",
"ہوا",
"ہیں",
"ہے",
"یہاں",
"پہاڑ"
]
}

File diff suppressed because it is too large Load diff