iOS and Android Versions of a Language-Learning Application for a North-American Provider



Our client is a well-known North-American provider of e-learning software. The company's products are available from more than 12,000 libraries, and used by corporate organizations and educational institutions worldwide. The company also makes its efficient and affordable e-learning system available to individuals who are interested in personal language learning.



A well-known North-American provider of e-learning software approached Envion with a request to develop the iOS and Android versions of their legacy e-learning application.

The client’s software is intended to help language learners memorize new words and broaden their vocabulary in any one of some 100 languages
and dialects, including those not so wide-spread.

The application is based on the flashcard concept whereby each new word to be learned is displayed on a card the reverse side of which provides a definition
of the term in the user’s mother tongue, an explanation or comment, and an image to illustrate the new entry. The vocabulary, provided by the application, consists of the more frequently used words and expressions associated with them.

An intricate proprietary algorithm is used by the application to present words to the user in a particular order. This order varies depending on how often the user has viewed a word, and on whether they have given a positive or negative answer when asked if they already remember the word. The more often the user has looked through the card with a specific word, the less often it is displayed to them by the application.

It is possible to generate statistics on the vocabulary learned. The statistics are presented to the user in the form of infographics. The functionality
of the application also allows keeping history on each of the words the user has been studying a while now, and tracking their related progress.


Envion’s team of 4 iOS and Android developers, assigned to implement the project, came across several highly formidable challenges, the main one being
that neither of the two target platforms had sufficient language support.

Since in many languages there are a number of nuances that influence directly how they are rendered in written form (for example, differences in the way one and the same letter is written depending on where it appears, the need to use certain letters in certain parts of sentences, and so forth), only several dozen wide-spread languages are rendered properly by either of the platforms, while the rest require to be preprocessed in order to be rendered correctly.

To overcome the above challenge, the project team had to implement a custom cross-platform text processing engine combined with HarfBuzz library in order to enable support of the OpenType features. They also implemented a custom multilayer text-rendering engine with FreeType library to function as a rasterization backend. As a result, such complex languages as Hindi, Thai, Farsi and others came to be rendered perfectly well.

As all vocabulary cards are shared between all the company's products, there was the need to come up with a solution to efficiently distinguish one card from another.

The project team implemented a special library that made it possible to identically pre-process card texts on all the platforms. The preprocessed texts are then used to generate a special hash-value that serves as the identifier of a particular card. The library was created using a meta-programming paradigm and allowed generating source code in C++, Java, ActionScript 3, and JavaScript. 

During all the development stages, the client's employees took active part  in discussions and investigations, and acted as the SCRUM Product Owner.

In compliance with one of the client’s requirements, the team worked directly with the client’s QA department
and included no QA engineers of its own. The project has been ongoing for over a decade now. Currently, the project team is involved in providing
support for the application, and occasionally adding some new capabilities (for example, notifications about new features, the word of the day capability,
and more).

Technology Stack

The Envion project team used the following technologies to implement the project:

  • iOS SDK, Objective C, C/C++
  • Android SDK, Android NDK, JNI, Java, C/C++
  • Python, Bash, OGG/Vorbis, Tremor, OpenGL ES, XML, JSON, REST, ZLib, SQLite, SHA1, Base64, PNG


Due to Envion’s thorough approach to the project’s implementation, the client has acquired a competitive solution that fully satisfied their expectations. Products, developed by Envion, became an essential part of the client's product line, and have since their release been included in all software packages shipped by the company to their customers.


Contact Us