Неполиткорректный виртуал (pascendi) wrote in ru_mac,
Неполиткорректный виртуал
pascendi
ru_mac

Category:

Эпплскрипт для изучающих иностранные языки

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

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

Поэтому я на скорую руку сделал два сценария на AppleScript, которые можно использовать на любом Маке для того, чтобы учить иностранные слова (а заодно -- немножко разобраться, как работает AppleScript).

Первый сценарий позволяет вводить пары выражений на русском и иностранном языках и сохранять их в файле:

CreateCards:
--------------
-- Файлы со словами лежат в папке "Документы". На каждой строке одно выражение. Номер строки с русским выражением в файле с русскими словами должен соответствовать номеру строки с иностранным выражением, являющимся переводом соответствующего русского. Кодировка файла должна быть Cyrillic-Mac.
-- Перед первым запуском сценария файлы должны быть созданы и содержать как минимум по одной строке. Строка НЕ ДОЛЖНА завершаться переводом каретки.
-- Файл с русскими словами
set RusFile to alias ((path to documents folder as text) & "rusfile.txt")
-- Файл с иностранными словами
set ForeignFile to alias ((path to documents folder as text) & "foreignfile.txt")
-- Открываем файлы на запись
set rus_File to open for access file (RusFile as text) with write permission
set foreign_File to open for access file (ForeignFile as text) with write permission
-- Процедура закрытия файлов и выхода из программы
on close_and_exit(rusFile_ref, foreignFile_ref)
close access rusFile_ref
close access foreignFile_ref
return
end close_and_exit
-- Процедура добавления пары выражений
on addSentences(rusFile_ref, foreignFile_ref, rus_Word, foreign_Word)
-- перемещаемся в конец файла русских выражений и записываем перевод строки и новое выражение
set rusFile_length to get eof rusFile_ref
write string id 10 to rusFile_ref starting at eof
write rus_Word to rusFile_ref starting at eof
-- перемещаемся в конец файла иностранных выражений и записываем перевод строки и новое выражение
set foreignFile_length to get eof foreignFile_ref
write string id 10 to foreignFile_ref starting at eof
write foreign_Word to foreignFile_ref starting at eof

end addSentences

-- Тело скрипта
set probe to true
repeat while probe
try
set temp to display dialog "Введите русское выражение:" default answer "" buttons {"Отмена", "ОК"} default button 2
copy the result as list to {text_returned, button_pressed}
if button_pressed is "ОК" then
set rusWord to text_returned
set temp to display dialog "Введите иностранное выражение:" default answer "" buttons {"Отмена", "ОК"} default button 2
copy the result as list to {text_returned, button_pressed}
if button_pressed is "ОК" then
set foreignWord to text_returned
else
-- если пользователь нажал "Отмена", то обнуляем оба выражения
set rusWord to ""
set foreignWord to ""
end if

else
-- если пользователь нажал "Отмена", то обнуляем оба выражения
set rusWord to ""
set foreignWord to ""
end if
if rusWord is not "" and foreignWord is not "" then
-- если оба выражения не пустые, добавляем их в конец файлов
addSentences(rus_File, foreign_File, rusWord, foreignWord)
else
set probe to false
end if
on error
-- при ошибке закрываем файлы и выходим
close_and_exit(RusFile, ForeignFile)
end try
end repeat
-- закрываем файлы и выходим
close_and_exit(RusFile, ForeignFile)
--------------
Второй скрипт -- собственно для изучения слов:
Learning Cards
--------------
-- Определяем три глобальные переменные
global ListLength
global RusList
global ForeignList
-- Процедура показа карточки
on showCard(selector)
-- Выбираем случайное слово
set randomNumber to (random number from 1 to ListLength)
set RusSentence to item randomNumber of RusList
set ForeignSentence to item randomNumber of ForeignList
if selector is 1 then
-- Если выбран перевод с русского на иностранный
-- показываем русское слово
set firstSentence to RusSentence
set secondSentence to ForeignSentence
else
-- Если выбран перевод с иностранного на русский
-- показываем иностранное слово
set firstSentence to ForeignSentence
set secondSentence to RusSentence
end if
display dialog firstSentence buttons {"Вернуться", "Значение", "Дальше"} default button 3
set the button_pressed to the button returned of the result
if the button_pressed is "Вернуться" then
-- возвращаемся к выбору направления перевода
return true
else if the button_pressed is "Значение" then
-- показываем перевод слова
display dialog (firstSentence & "
" & secondSentence) buttons {"Дальше"}
return false
else
-- возвращаемся
return false
end if
end showCard
-- Файлы со словами лежат в папке "Документы". На каждой строке одно выражение. Номер строки с русским выражением в файле с русскими словами должен соответствовать номеру строки с иностранным выражением, являющимся переводом соответствующего русского. Кодировка файла должна быть Cyrillic-Mac.
-- Файл с русскими словами
set RusFile to alias ((path to documents folder as text) & "rusfile.txt")
-- Файл с иностранными словами
set ForeignFile to alias ((path to documents folder as text) & "foreignfile.txt")
-- Строим списки русских и иностранных выражений
set RusList to every paragraph of (read RusFile)
set ForeignList to every paragraph of (read ForeignFile)
-- Определяем количество русских выражений
set ListLength to count of RusList
-- Если оно не отличается от количества иностранных, работаем дальше
if ListLength is (count of ForeignList) then
-- Тело сценария
set selector to 0
set flag to 0
repeat while selector is less than 2
set selector to display dialog "Выберите направление перевода" buttons {"Выйти", "С русского", "С иностранного"} default button 3
set the button_pressed to the button returned of the result
if the button_pressed is "Выйти" then
return
else if the button_pressed is "С русского" then
set selector to 1
else
set selector to 0
end if
repeat while showCard(selector) is false
end repeat
end repeat

else
display dialog "Ошибка: длины списков не равны"
end if
--------------

Скопируйте каждый из скриптов в отдельное окно AppleScript Editor и сохраните как отдельные файлы в папке "Документы". Сохранять лучше как Программу.

Сценарий, показывающий слова, позволяет выбирать направление перевода, то есть вам будут предъявляться либо русские слова, либо иностранные. Если вы забыли значение слова, его можно подсмотреть, нажав соответствующую кнопку.

Вводить можно как отдельные слова, так и целые выражения, главное, чтобы они умещались на одной строке.

Сценарии, естественно, можно совершенствовать. А можно пользоваться и так :-)
Tags: applescript automator
Subscribe
  • Post a new comment

    Error

    Comments allowed for members only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 4 comments