Minitask: Android App Localization Project

This project was for my Software and Games Localization class, in which we did not cover Android app localization due to lack of time. For the final project, we had the opportunity to explore a new method, and Android seemed particularly interesting to my group. We knew we wanted to do something interesting, so an Android app seemed like a great option. After hours of searching Github and getting the professor’s approval, we began localizing the Minitask app, which is available on Google Play. As a group, we decided to localize it into Spanish, French, and Russian, since we had both Spanish and French speakers in our group, and Russian would offer us the challenge of dealing with language expansion. We divided up the work, and I was in charge of extracting the more difficult strings and pseudo-localization.

The first step I worked on was running a pseudo-localization of the strings file, which is essentially replacing the source strings with dummy characters and adding a few characters on to each string to test for expansion that would happen when localizing into certain languages. The image on the left shows the pseudo-localization for Russian, which caused enough text expansion in this image to cover up the switch that appears in the image above the original strings. To resolve this issue, I just shortened the string so that the switch appeared.

In the actual Russian version, however, I couldn’t just shorten the string. Instead, I removed the clock icon that appears. I also adjusted the padding around the text and the switch that appears, and was thus able to make the switch appear again. The switch was crucial since toggling it displayed two more buttons that are part of the functionality and purpose of the app as a reminder app.

As I analyzed the strings assigned to me, I realized that they were in an array in the MyPagerAdapter file. I then assigned the strings to variables and pulled them out of the array, making them easier to externalize and put in the strings file. However, after attempting to externalize the strings using the .getString() function that was used elsewhere in the app, I realized that I was not able to do so since I kept getting an error. I found another way to extract the strings that seemed to work since it didn’t produce any errors until running the app, which was calling the system context (resources) instead of the app context. When I ran the app, I got an error saying that there was a null object reference, which crashed the app. The problem was that I was pulling the system context instead of the app context into the MyPagerAdapter file, which was preventing the app from starting. The MyPagerAdapter file also was not connected to the rest of the app resources, which are stored in the context. I knew that I had to find another way to pass in the context into the MyPagerAdapter file, so I did more research and was unable to solve the problem on my own. For this reason, I will be meeting with an Android developer in the near future to learn how to find how the app context is stored and how to pass it into the MyPagerAdapter file. I believe that this is the one remaining step to localizing all of the strings for this app.

This project was a fascinating one for me because I had never worked with Android before, except for owning a Samsung Galaxy S4. Learning about how Android handles localization was interesting. I realized how well localization functionality overall has been built into Android Studio, and I plan to continue working on this project until I localize the remaining strings. After the remaining strings have been localized, and resulting bugs resolved, I plan to upload the files back to Github for others to use. My hope is that the translations will be incorporated into the version of the app on Google Play. Overall, I am very pleased with what I learned, and plan to continue learning more about Android app localization.