Добрый день.

Недавно сделал инструмент автоматизированного создания карточек для изучения иностранных слов - подумал что может быть кому то пригодится и как инструмент, и как техническое решение.

Немного вводной информации: один из способов запоминания иностранных слов это создание карточек. На одной стороне слово пишется на родном языке, а на обратное стороне его перевод на нужный язык (на момент создания было доступно 103 языка). Также на карточке может быть дополнительная информация, например окончание для множественного числа слова.

Иногда для лучшего запоминания карточка содержит изображение слова, и в интернете большое количество готовых наборов карточек. Но, мне был нужен набор слов из учебника, который я использовал - в идеале любой скопированный текст. В принципе карточки можно сделать и руками, и конечно же это полезно для самого процесса изучения, но речь шла про несколько сотен слов с переводом на несколько языков (учусь в интернациональной группе).

пример отличных карточек для изучения иностранных слов
пример отличных карточек для изучения иностранных слов

Готового инструмента не нашел и решил написать свой. От картинок решил отказаться, хотя можно ИИ подключить :)

Писать отдельное приложение было лень, поэтому решил задачу с помощью Google Sheets и App Script.

Вот сам инструмент для создания карточек: https://docs.google.com/spreadsheets/d/1S5-9-eJf3yKaJ58Dgm7xUXbO3ceHpHWpupslSVcuv4M/edit?usp=sharing

Для экспериментов вы можете скопировать к себе этот файл с помощью пункта меню "File-Make copy" и тогда будет возможность посмотреть код или внести изменения в Apps Script.

Как это работает. В ячейку A2 нужно вставить текст (например из PDF версии учебника или любой текст из интернета). Далее в B2 и C2 выбрать язык текста и ваш родной язык для генерации перевода. Кнопка "Create Cards" запускает выполнение скрипта - скрипт потребует разрешение на доступ к документу Google Sheets из скрипта Apps Script.

Генерация перевода происходит с помощью API Google Translator. После 10 переводов скрипт делает паузу 1 секунду, иначе API Google Translator может выдавать ошибку и прекращать выполнение скрипта. В целом ограничение на 1 аккаунт вроде до 3000 слов в день.

var rowA = 1, rowB = 1;

var spreadsheetResult = spreadsheet.getSheetByName("Cards");

spreadsheetResult.clear();

  for (let i = 0; i < uniqueResult.length; i++) {

    var translatedWord = LanguageApp.translate(uniqueResult[i], sourceLang, targetLang);

      console.log(uniqueResult[i]);
      console.log(translatedWord)

    if (i % 2 === 0) { 
      spreadsheetResult.getRange(rowA, 1).setValue(uniqueResult[i]);
      spreadsheetResult.getRange(rowA, 4).setValue(translatedWord);
      rowA++;
    }
    else { 
      spreadsheetResult.getRange(rowB, 2).setValue(uniqueResult[i]);
      spreadsheetResult.getRange(rowB, 3).setValue(translatedWord);
      rowB++;
    }
    if (rowA % 10 === 0) {
        Utilities.sleep(1000) //pause 1 sec every 10 translations
    }
  }

На строке 29 добавил артикли для нескольких языков, чтобы перевод выводился вместе с артиклем - можете добавить артикли для вашего языка.

//add article of foreign language
  const targetWords = ['a', 'the', 'an',                                                //english
                        'le', 'la', 'les', 'un', 'une', 'des',                          //french
                        'der', 'die', 'das', 'den', 'dem', 'ein', 'eine', 'ein',        //german
                        'el', 'la', 'los', 'las', 'un', 'una', 'unos', 'unas',          //spanish
                        'il', 'lo', 'la', 'i', 'gli', 'le', 'un', 'uno', 'una', 'un'];  //italian

Итоговый список карточек генерируется на листе Cards - я его печатал в PDF и отправлял всем желающим с небольшой инструкцией. «Печатайте на принтере с двух сторон листа — сначала напечатайте нечетные листы, затем переверните листы на принтере и распечатайте четные.» Результат работы скрипта на обложке этой статьи.

Собственно говоря это всё — пользуйтесь для изучения языка или для изучения Apps Script.
Всем удачи.

P.S. Если кто знает аналогичные решения, пожалуйста, напиши в комментариях.

Комментарии (4)


  1. net_racoon
    20.12.2023 08:04

    Зачем это все, если есть Анки?


  1. em1nx
    20.12.2023 08:04

    Приложение "Яндекс Переводчик" позволяет переводить и учить слова методом интервальных повторений.


  1. makarbass
    20.12.2023 08:04

    Интересный подход. Но систему Лейтнера (эти самые флэш-карточки) можно использовать не только для изучения слов. Я, например, писал простой фронт на js для подготовки к техническом интервью, когда искал новое место работы. С одной стороны вопрос, с другой ответ на него. Если ответы слишком большие - разбивал на более мелкие вопросы. Но так и не наполнил её вопросами. Работу нашел быстрее


  1. asantat
    20.12.2023 08:04

    Можно решить с помощью цифровых карточек в Anki. Сначала пишете слова, заполняя ими столбец в табличном процессоре, например, LibreOffice. Затем переводите через какой-либо переводчик или чат-бот, или с помощью API, и вставляете в новый столбец с такими настройками импорта, чтобы каждый перенос строки текста (или иной разделитель) соответствовал переносу строки в таблице. Проверяете соответствие двух столбцов (то есть убеждаетесь, что ничего не съехало), сохраняете это дело в csv и импортирует в Anki. Можно ещё через плагин HyperTTS загрузить синтезированную речь с правильным произношением. Но это только цифровые карточки на компьютере, в веб-интерфейсе и на телефоне. Наверное, есть лёгкий способ сделать из них аналоговые карточки. Ещё проще - прямо из таблицы.