And here’s a link to the app in the playstore
It’s all those words
For a a variety of reasons, many of us want to speak another language, but it’s not so easy. We start with the easy stuff needed to be a tourist. A bit of grammar and some basic words come next. The early progression may not be so bad, but eventually we’re likely to hit a wall. Vocabulary.A human language probably has a couple hundred grammar rules. Conjugations, where’s the verb go, past, future, future perfect, prepositions,…. At first it’s overwhelming how many rules there are, but you learn them and stumble through using them.
You can can get by with broken grammar, but if you don’t know the meaning of the words, you’re stuck.
So how does one improve their vocabulary?
Everyone’s tried flashcards, but they’re kinda tedious. Another way is to read an article, dictionary in hand. Both methods involve a lot of work. The more work you have to do, the less likely you are to avoid doing it. To make it worse, even if you slog through looking everything up, by the time you get to the end of a paragraph, you forgot what the beginning was about.Another method that I’ve tried is to get the same book, one in English and the other in the language I’m learning. Goosebumps, for Hebrew and Footfall for German. This worked ok, but translations are often not that accurate. The German Footfall had entire sentences missing. Hebrew Goosebumps wasn’t so bad.
Someone should write an app
A bunch of years ago, I had an idea. Take something I like to do, reading, and turn it into something that improves my vocabulary as a side benefit. The idea is to generate a vocabulary list that is personalized to me and to the text I’m trying to get through.The point is not to study the language. The point is to read something you want to read.
Back then, I implemented a firefox extension, and it was very helpful. For the first time, I read, understood, and enjoyed a novel written in German. Once I had it working, I really liked it, but there were a bunch of things that would have made it difficult to generalize to other languages and generic websites. In the mean time, technology has moved forward.
Finally getting to the point
So now that I’m living in Germany, needing/wanting to improve my fluency in German, I’ve implemented the concept again. Here’s how it works:- Install my EasyReader app on your android phone or tablet. 1
- Open your web browser and go to an article you’d like to read.
- Click on the share icon under the “…” in the upper right corner and EasyReader should be one of the options.
- EasyReader will load the shared URL, extract the main text and display it in a tab.
- If you swipe right, you’ll see a list of all the words that are used in the currently visible text along with their translations.
- You select the words you already know and mark them as read. EasyReader will remember these selections in future texts. This will take some work with the first couple articles, but you’ll quickly get good lists without this step.
Any combination of languages should work. I have had some difficulties with non-Western alphabets, however. 2
Other features of the app
There are a couple more “advanced” features that I’ve added.Sometimes, the text in front of you has too many words you don’t know. To reduce this, you can tap/select a paragraph and your word list will be limited to just that paragraph. 3
Next is the ability to add flashcards. In my own usage of the app, I found that there are important words I need to study. Next to the “unknown words” tab is a “flash words” tab. Words are added just like marking a word as known. The flash tab also has a print button and a copy to clipboard. 4
Last, EasyReader will handle ebooks in non-DRM epub format. These are easy to get. 5 Find the epub in your device’s file manager and click it. EasyReader should appear as an option.
What makes this app difficult?
In case you care, here are the two hardest parts of implementing this functionality.The first thing that’s hard about this is the fact that most webpages have lots of extra stuff that isn’t part of the meat. Ads. Links to other pages. The banner. Furthermore, the html structure of most webpages is difficult to decipher. No clear demarcations. The utility boilerpipe makes this much easier 6.
The other thing that made it hard is finding word mappings. Babylon was a good source, though parsing their data wasn’t easy. Even after I found a parser, it wasn’t enough. Almost all words have variations, plurals for nouns, conjugations for verbs, plus some words don’t need translation. People’s names, for example. How does the app decide?
A good fallback was google translate. At the time, the translations were good enough for me to read a novel and they’ve gotten much better. Somewhere along the way, google made it harder to query their APIs. When asking for a definition, you have to compute a secret hash function on the word. Get it wrong and you just get an error response. Thankfully, others have reverse engineered it. It still wasn’t easy because two or three months ago Google tweaked the hash function. The Javascript is obfuscated but eventually, I found the difference.7 8
Android only. I am prejudiced against Apple, in spite of the fact that their products are nothing less than excellent.↩
I’ll try to fix this if there is demand. ↩
sadly, many paragraphs are quite long ↩
I’ve written some code to get better definitions from the leo website. This works only for German and it’s not part of the app. I’d consider adding it if anyone cares website. This works only for German and it’s not part of the app. I’d consider adding it if anyone cares ↩
If you have a book in Kindle format, this site provides an excellent solution. Well worth the effort of installation. provides an excellent solution. Well worth the effort of installation. ↩
it’s not very well documented though. ↩
I depend on the fact that Google is a large company with a website that is used by many, many people. Changing the function regularly has the associated risk of breaking their website. More important than trying to slow down small fry like me ↩
If someone from Google cares to complain to me, I would love to hear from Tamar, a former Intel coworker, who I believe heads the translation division. I’m not making any money from this app, nor am I selling the translations. ↩