Связывание слов и их переводы - варианты хранения

Я хотел бы хранить слова и их переводы каким-то ассоциативным способом...

Я думал в ассоциативном массиве... каждый объект - это слово и его перевод.

var holder = [];
holder.push({"chinese" : "Nǐ", "english" : "you"}, {"chinese" : "Wo", "english" : "I"}, etc...);

Затем отобразите перевод текста, над которым вы зависали:

$("#npc_dialog_dictionary_chinese span").on("mouseover", function() {
    var word = $(this).text();
    $("#currentWord").text(parseHoveredText(word));
}).on("mouseout", function() {
    $("#currentWord").empty();
});

Какие звонки:

function parseHoveredText(word) {
  for (obj in holder) {
    if (word == holder[obj]["ch"]) {
        return holder[obj]["en"];
    }
}
return "";
}

Это работает: (Вы можете видеть, что завис над Ni отображает правильный перевод You

введите описание изображения здесь

Но мой вопрос...

Сохранение пары перевода для каждого слова в объекте, а затем массива, как хороший выбор?

Это только для ОДНОГО языка, но у меня будет несколько разных слов, которые потребуют перевода.

1 ответ

Есть много вопросов для рассмотрения (сколько слов, сколько языков вы планируете поддерживать, какие требования к хранилищу, какие требования времени выполнения).

Задумывались ли вы о хеш-таблице строк, которая хэширует ваше слово в вектор, в котором хранятся переведенные слова. Например, "Ni" может хэшировать в вектор, который хранит его английский, испанский, итальянский перевод. Этот подход также может очень хорошо масштабироваться.

Другие вопросы по тегам