Translate is an app that'll help the user learn and practice different foreign languages.
The user can view the translated text of his/ her desired language and also listen to the pronunciation of the translated text. It's also possible for the user to save all the translations of the entered English words/ phrases in multiple languages for offline use.
The game was made for Android OS as part of the Mobile Application Development module that I followed in my 2nd year.
- Development IDE - Android Studio 3.6.2
- Main development language – Java & XML
- Database - SQLite with Room Persistence Library
- Tested AVDs - Pixel 3, Nexus 5X
- Tested API Level - API 29
Displayed below is the Home screen of the Translate app.
The 6 options shown in the main screen opens the following screens:
- DICTIONARY: Save all translations of multiple languages for offline use and view them when offline.
- ADD PHRASES: Add new words/ phrases into the local database.
- DISPLAY PHRASES: Display all the words/ phrases that have been saved locally.
- EDIT PHRASES: Edit existing words/ phrases that have been saved.
- LANGUAGE SUBSCRIPTION: Allows the user to choose languages that the user desires to translate English words/ phrases into.
- TRANSLATE: Let's the user to view translations of chosen words/ phrases and listen to the pronunciation of the translated words/ phrases.
IBM Cloud Watson Translator Web service & IBM Cloud Watson TextToSpeech Web service are used to translate English phrases and pronounce translations.
Supported Translation Languages: Arabic, Bulgarian, Catalan, Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Irish, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Malay, Norwegian Bokmål, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish, Thai, Turkish, Urdu, Vietnamese
- Search functionality of words based on any part of the word in Display Phrases section.
- Auto capitalization of words in add English: to make the database records appear clean.
- Use of the IBM API to get all new languages when the Language Subscriptions page is open and write into the database.
- If new languages are added later, they will be added without requiring an update.
- This is helpful when the user opens that app for the first time as well.
- Stuck to a blue colour theme. Used light and dark alternatives of blue to clearly visualize the text & all other content of the application.
- Reasons for choosing blue as the core colour of the colour theme:
- noted as the favorite color across all genders
- symbolizes trust, loyalty, wisdom, confidence, intelligence, faith, truth, and heaven.
- Use of vector images to represent the functionalities and benefits of using the app.
- Provided the user with a feedback message for every input action with the use of TOAST messages.
- Use of Fragments to clearly separate Recycler view elements in scrollable lists.
- Displaying a loading animation when saving all translations of a chosen language into the database.
- Allow the user to slide back form any screen to the previous screen by swiping to the right from left.
- Object Relational Mapping of data with the SQLite database (ORM).
- Saving date & time of creating and updation of data in the database.
- Use of Recycler view elements to display lists of data.
- Use of Android LiveData to receive records from the database.
- Use of AsyncTasks when writting into the database and retrieving translations from the IBM API.
- Use of TimeStampConverter as a TypeConverter to write dates & times into the database.
- Saved instance states when rotating the device and restored all view elements.
- Handled Network connectivity errors and language translation errors.
Landscape layouts were created for all the screens that required separate layouts for landscape orientation. Shown above are two of them.
In all the landscape layouts, most of the user input areas were kept to the right and the image displays were kept to the left/ the centre of the screen as required. This makes it easier for the user to enter input and makes it comfortable for the user to view the images displayed as most people are used to reading from the left of the screen.
- Figma
- Adobe Illustrator
Sliding animations https://codinginflow.com/tutorials/android/slidr
https://android.jlelse.eu/5-steps-to-implement-room-persistence-library-in-android-47b10cd47b24 https://medium.com/@tonia.tkachuk/android-app-example-using-room-database-63f7091e69af https://github.com/anitaa1990/RoomDb-Sample/blob/master/app/src/main/java/com/an/room/ui/activity/NotesListActivity.java https://codelabs.developers.google.com/codelabs/android-room-with-a-view
https://medium.com/mindorks/upload-your-first-android-app-on-play-store-step-by-step-ee0de9123ac0
How To Upload Android App on Google Play Store | Publish App on Play Store
How To Upload Android App on Google Play Store | Publish App on Play Store Part-2
Generate and sign apk to upload to playstore
https://app-privacy-policy-generator.firebaseapp.com
https://translate-0.flycricket.io/privacy.html
https://cloud.ibm.com/apidocs/language-translator
https://cloud.ibm.com/apidocs/text-to-speech
This repository contains code that I implemented for my second year Mobile Development Coursework-2; which was based on Android Application Development.