Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Добрый день.
Недавно сделал инструмент автоматизированного создания карточек для изучения иностранных слов - подумал что может быть кому то пригодится и как инструмент, и как техническое решение.
Немного вводной информации: один из способов запоминания иностранных слов это создание карточек. На одной стороне слово пишется на родном языке, а на обратное стороне его перевод на нужный язык (на момент создания было доступно 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. Если кто знает аналогичные решения, пожалуйста, напиши в комментариях.