Giter VIP home page Giter VIP logo

psittacus's Introduction

Psittacus

Psittacus iratus linguas docet ๐Ÿฆœ

The angry parrot teaches languages ๐Ÿฆœ

What is it?

Psittacus is a lightweight, open-source tool, meant to facilitate language-learning and teaching, and with a vision to empower teachers and learners of any written+spoken language around the world.

Psittacus is based on the gamification of the sentence-mining approach, having an interface vaguely inspired by that of Duolingo and other competing interactive language learning-tools.

Psittacus aims at democratizing the process of language-learning and teaching, making it easy for teachers to prepare and collaborate on their own lessons, and share them in a standardized and easily accessible format.

Whom does it appeal to?

  • Language lovers in general. ๐ŸŒ
  • Teachers of any language that need to share quick homeworks/lessons with their students. ๐Ÿ“š
  • Speakers of endangered languages that wish to preserve and spread their native tongue. ๐ŸŒฑ ๐Ÿ“ผ
  • Conlangers that want the world to learn their constructed language. ๐Ÿค“
  • And many more...

What are some of its main features?

  • Simple interface for lang-teachers to prepare lessons.
  • Possibility to edit and extend existing lessons.
  • Lessons are stored in an easily shareable format.
  • Lessons can be taken fully offline, once downloaded/sideloaded.
  • Support for audio playback of sentences.
  • Support for hover-over-the-word definitions.
  • Support for spaced repetition strategies and automatic lesson scheduling.

Link to Web-App

https://psittacus.eu.pythonanywhere.com/

Demo

https://youtu.be/estAGLc3uoE

Take Test Lesson

Download this test lesson-file and try it out on Psittacus (open it with "Take Lesson" on the main-menu of the web-app). Watch the Demo for more help.

Details

Lesson File Format

Lesson File Format

A 'lesson' comprises: sentence-pairs, word-definitions and audio-data. Each single lesson is made up of multiple 'propositions'. Each proposition expresses an idea in two different languages. The information of a lesson is stored in the widely-known json format, and can be shared as a simple text file.

The structure of a lesson-json is the following:

 {   
      "metadata" : {},
      "propositions" : [proposition1, proposition2, proposition3, ...],
      "explanation" : {text : "<h1>some in-depth explanation of the lesson...</h1>"}
 }

Metadata looks like this:

{
  "target_language" : "target lang",
  "source_language" : "source lang",
  "author" : "author-or-authors",
  "title" : "lesson_subject_and_or_number",  
  "last_modified" : 1644144766547
}

(More metadata may get added to lessons in the future).

The Explanation Part:

Contains 'text', which is an html string of styled text, it can include external resources such as links to other pages or linked multimedia content. It can serve both as a theoretical introduction to the lesson for the student, or as a container for more insights related to the practical exercises (propositions) in the lesson.

Each proposition has the following structure:

{
 "sentence_one" : "ciao mondo",
 "sentence_two" : "hello world",
 "word_dict" : {"ciao":"hello", "mondo":"world"},
 "reverse_dict" : {"hello":"ciao", "world":"mondo"},
 "audio_base64" : "data:audio/mpeg;base64GkXfo5...",
 "target_to_native" : true
}

  • sentence_one: the sentence in the target language (ie: the language the student wishes to learn).
  • sentence_two: the same idea expressed in the student's language.
  • audio_base64: the audio of sentence_one (in the target language) recorded by a native or proficient speaker. Encoded as audio-data in base-64.
  • target_to_native: true if the user should be asked to translate from the target language to his/her native one, false otherwise.
  • word_dict: a dictionary that provides a brief description of each word of the target lang.
  • reverse_dict: a dictionary that provides a brief description of each word of the source lang in terms of the target lang.

Please note that:

  • A 'word' here simply means: 'a string of unicode characters surrounded by spaces'.

  • The definition can and should be made up of more words, and may eventually include a brief analysis of the grammar (tense, gender, case markings...) if that helps the student understand the context better. In more 'advanced' lessons, this brief definition may be provided in terms of the target language, for those who favor a full-immersion approach.

Testing

To build this web-app:

(You have to have yarn or npm installed).

1. Clone this repo:

... and open up its directory.

2. Install the dependencies:

yarn install 

3. Build:

yarn run build

4. Run:

Copy and paste the full path of:

/psittacus/dist/index.html

... to your browser's navigation bar.

Debugging:

  • Use:
yarn run dev-build

to generate an un-minified developer build (easier to debug).

And maybe consider doing this in jsconfig.json:

"checkJs" : true

(This option is far too annoying to stay on all the time, and doesn't even catch all of the errors for lack of information).

Experimental

Automatic Lesson Generator

For more info:

./palg/README.md

Credits

Images/Sounds

Images/Sounds

psittacus's People

Contributors

aiman-al-masoud avatar pakzer0 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.