I'm not especially good at language learning, but I can speak 3.5 languages and I love learning them. When learning a language, there are many things to practice: grammar, pronunciation, listening comprehension, vocabulary, culture... And many applications try hard to make you learn all of them, but I think that's impossible. At the end of the day, you need a native speaker to practice. But there are some things where an application can help.
In the last year I thought a lot about language learning applications. In the process I tried to implement some ideas, and I'll present here my latest one. It is called 10,000 sentences and it is an Android application to help people learn new words in their target languages. The idea is based on an (unscientific) theory that you need 10,000 sentences to really learn a language. That may not be true, but if you really go through enough sentences -- it won't hurt and I think you will at least retain some new words and get an idea how sentences are formed. And that's what this application is about.
The application is just launched on Google Play: 10,000 sentences. It is open source (Apache 2.0), the source is available here. The sentences are exported (and prepared) from the Tatoeba languages dataset.
So... First of all, select the language you want to practice. There are 24 languages in both "directions" (so, for example there is "English for French speakers" and "French for English speakers):
Next, download the sentence for a language you learn. Sentences are ordered by complexity, the first sentences will be very short with simple words. For each sentence you will have a small quiz where you need to guess the words:
Note the translate widget in the upper right corner. You need to enable "Tap to translate" in Google Translate for this to work.
Also, the app will use text-to-speech if it's available for your language. Note that not all languages are available on all Android phones, but there are some TTS engines for various languages on Google play store.
If you fail in guessing the words -- the sentence will be shown again later. Otherwise, you can go to the next sentence.
If/when you encounter a new word, you can add it to your local dictionary (you can annotate it):
One annotation can have more than one words (for example the annotation "walk" will have the words "camminare", "camminavo", "camminero" in Italian). If you really succeed in going through all those 10,000 sentences at the end you will have your private dictionary with thousands of words. And if you use any of the memory cards app to practice (only) vocabulary you can export words from your dictionary to those apps.
PS. Of the 3.5 languages, Slovenian is the "0.5" one :)