OiWorld / MindTheWord

An extension for Google Chrome that helps people learn new languages while they browse the web.
43 stars 47 forks source link

Integrate with language learning courses #48

Open chris838 opened 9 years ago

chris838 commented 9 years ago

Currently I'm scraping vocabulary lists from my iKnow course and pasting them into the user-defined translations page. What I would really like to do is have this integrated into the app (I use iKnow but other services like Duolingo etc. could be supported).

This could potentially be a significant departure from the core app - I'm considering pursuing this in my own fork.

ceilican commented 9 years ago

Wouldn't it be possible to add iKnow, Duolingo and other services as alternatives to Google Translate and Yandex? Besides allowing the user to choose "Use Google Translate..." and "Use Yandex..." when creating a new translation configuration, we could allow him/her to choose "Use iKnow's vocabulary list..." or "Use Duolingo's vocabulary list...".

If this idea gets implemented in this way, I think it wouldn't be a significant departure from the core app. And this makes me wonder: how were you thinking to implement this idea? Why do you think it would be a significant departure?

ceilican commented 9 years ago

Here is a related idea: https://github.com/OiWorld/MindTheWord/issues/49 .

ceilican commented 9 years ago

Wouldn't it be possible to add iKnow, Duolingo and other services as alternatives to Google Translate and Yandex? Besides allowing the user to choose "Use Google Translate..." and "Use Yandex..." when creating a new translation configuration, we could allow him/her to choose "Use iKnow's vocabulary list..." or "Use Duolingo's vocabulary list...".

Perhaps this would only be appropriate if the vocabulary lists were produced and kept by those language learning services. If the vocabulary list is produced by the user of these services, then perhaps it would be better to have an advanced option, where the user can select to use his list stored in another service instead of user the user-defined list in the advanced options page.

ceilican commented 9 years ago

We should be careful not to make MindTheWord too reliant on possibly unreliable and frequently changing external services, because this greatly increases maintenance effort. (For example, when Google Translate suddenly started blocking MindTheWord when too many translation requests were submitted, it was necessary to quickly start supporting Yandex as an alternative.)

chris838 commented 9 years ago

We should be careful not to make MindTheWord too reliant on possibly unreliable and frequently changing external services

Yeh I agree with this. My favorite learning app is iKnow, but they unfortunately don't have an API - which makes integration even more prone to breaking in future. I see that Duolingo also don't have an official API (unofficial one available here: https://github.com/KartikTalwar/Duolingo).

chris838 commented 9 years ago

And this makes me wonder: how were you thinking to implement this idea? Why do you think it would be a significant departure?

I need to think about it some more - but here's what I'm imagining. I open the app and select my language learning service from a list of those supported (Duolingo, iKnow etc.). The app then generates a translation map based on the courses I'm learning. As I expand my knowledge in iKnow each new word I start learning automatically gets pulled into MindTheWord. Hitting Google Translate or Yandex is not necessary.

A huge problem is that automagically generating the translation map is not trivial. Currently I have to manually tweak my list to remove certain words (this, that, and, be etc.).

chris838 commented 9 years ago

Wouldn't it be possible to add iKnow, Duolingo and other services as alternatives to Google Translate and Yandex

Yeh I also thought something along these lines. Perhaps select "User defined only" instead of Google Translate and Yandex. This would replace the checkbox on the advanced settings page.

ceilican commented 9 years ago

I need to think about it some more - but here's what I'm imagining. I open the app and select my language learning service from a list of those supported (Duolingo, iKnow etc.). The app then generates a translation map based on the courses I'm learning. As I expand my knowledge in iKnow each new word I start learning automatically gets pulled into MindTheWord. Hitting Google Translate or Yandex is not necessary.

This sounds good, though non-trivial... If you find an easy and robust way to implement it, feel free to go ahead!