Локализация приложения в стиле wordle на javascript. Смена набора слов и клавиатуры на локальную
Я написал игру по урокам в стиле ВОРДЛЕ. Взялся переводить ее на 3 языка с помощью библиотеки i18n. В принципе саму игру перевёл на 3 языка и локализовал. Собрал все стринги в отдельный файл. Всё работает. Почти... Осталась проблема со сменой клавиатуры и списка слов ( 365 слов, по слову на день). Как сделать чтоб переключалось на нужный файл со словами?
Локализация и перевод стрингов работает отлично;
/Languages/strings.js
import * as Localization from "expo-localization";
import i18n from "i18n-js";
// Set the key-value pairs for the different languages you want to support.
export default i18n.translations = {
en: {
title: 'WORDING',
graz: "Congrats!",
distr: "GUESS DISTRIBUTION",
copy: "Copied successfully. Share your score on your social media",
stats: "STATISTICS",
next: "Next Word",
share: "SHARE",
played: 'Played',
win: 'Win %',
cur: 'Cur streak',
max: 'Max streak',
},
ru: {
title: 'СЛОВА',
graz: "Поздравляем!",
meh: "Жаль. Попробуйте завтра снова!",
distr: "Статистика угадываний",
copy: "Скопировано успешно, Поделитесь своим счетом в социальных сетях",
stats: "Статистика",
next: "Следующее слово",
share: "SHARE",
played: "Игр",
win: 'Поб %',
cur: 'Серия',
max: 'Макс Серия',
},
de: {
title: 'WORDING',
graz: "Glückwunsch!",
meh: "Schade, versuchen Siee morgen noch einmal",
distr: "GUESS DISTRIBUTION",
copy: "Erfolgreich kopiert, Teilen Sie Ihre Punktzahl in Ihren sozialen Medien",
stats: "STATISTICS",
next: "Nächstes Wort",
share: "SHARE",
played: 'Spiele',
win: 'Gew %',
cur: 'Serie',
max: 'Max Serie',
},
};
// Set the locale once at the beginning of your app.
i18n.locale = Localization.locale;
Лэйаут клавиатуры выглядит так:
/constants.js
export const ENTER = "ENTER";
export const CLEAR = "CLEAR";
export const keys = [
["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"],
["a", "s", "d", "f", "g", "h", "j", "k", "l"],
[ENTER, "z", "x", "c", "v", "b", "n", "m", CLEAR],
];
/Keyboard.styles.js
import { StyleSheet, Dimensions } from "react-native";
import { keys, colors } from "../../constants";
const screenWidth = Dimensions.get("window").width;
export const keyWidth = (screenWidth - 10) / keys[0].length;
const keyHeight = keyWidth * 1.5;
Я пробовал такой вариант:
export const keys = {
if (locale = en) {
return enKeys
}, if (locale = de) {
return deKeys
}, if (locale = ru) {
return ruKeys
}
}
const enKeys = [
["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"],
["a", "s", "d", "f", "g", "h", "j", "k", "l"],
[ENTER, "z", "x", "c", "v", "b", "n", "m", CLEAR],
];
const ruKeys = [
["й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х"],
["ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э"],
[ENTER, "я", "ч", "с", "м", "и", "т", "ь", "б", "ю", "ъ", CLEAR],
];
const deKeys = [
["q", "w", "e", "r", "t", "z", "u", "i", "o", "p"],
["a", "s", "d", "f", "g", "h", "j", "k", "l", "ü"],
[ENTER, "z", "x", "c", "v", "b", "n", "m", "ö", "ä", CLEAR],
];
мне выдало ошибку:
TypeError: undefined is not an object (evaluating '_constants.keys[0].length')
что делаю не так и как сделать чтоб было "так"?
И второй вопрос по поводу файла со словами..
import words from "../words";
const Game = () => {
//AsyncStorage.removeItem("@game");
const word = words[dayOfTheYear];
const letters = word.split(""); // [ 'h', 'e', 'l', 'l', 'o' ]
}
/words.js
export default [
"hello",
"world",
"hello",
"world",
"hello",
"world",
"hello",
"world",
"hello",
"world",
"hello",
"world",
"hello",
"world",
"hello",
"world",
"hello",
"world",
]
Как сделать лучше и правильно, создать список русских и немецких слов тут же или раскидать по файлам в папке Languages? И как сделать чтоб в нужной локе нужный файл со славами передавался?
ЗА РАНЕЕ ВСЕМ ОГРОМНОЕ СПАСИБО. И прошу прощенья за столь длинный вопрос))