Recently, I worked on a software localization project with my fellow peers Oussama Bel Aiba, Kyle Chow and Silver Zhang. We localized a C# program modeled after the Scrabble game, adding support for three additional languages (French, Japanese and Simplified Chinese).
After working through the project and 7 steps in our process, here are four tips that I have gleaned, which would be useful lessons for future work in software localization projects.
1. Plan for Version Control and Collaboration (Github)

Our first method of working together was to meet physically in one place, and all work at the same time on this project, but we quickly realized how inefficient that would be. Essentially, one person would be taking the command on writing or editing the code in the program, and the others would only be able to help by doing research on the side, or just simply staring at the one person in the driver’s seat.
After some research and experimenting, our project was set up on Github, which allowed us to work on different parts of the code individually before merging these changes together into the master version. There were some bumps at first, as someone might forget to update when they pushed changes, or for me I didn’t pull changes before working on the program, but was unable to merge so I had to reclone the repository.
Through this project, I was able to experience the efficiency and usefulness of Github, which I am sure is multiplied tenfold or even more with a bigger project, since Scrabble is a relatively simple program. It will also give me relevant experience for the future, if I’m working on software localization where I have to pull strings or code from Github for translation.
2. Concatenation is Bad!

Well, everyone in localization worth their salt knows this, so I won’t go into too much detail about why it’s bad. Although I already knew this well, I think this Scrabble project was a great example of the issues that can come up with localizing software that has not been internationalized well, that uses concatenation.
In some instances, the original developer broke up the line of UI or game instructions into multiple strings in order to concatenate with a variable. We ended up with 95 strings in our resource file, and when translating, I had trouble identifying the context of each string / which part of the sentence it belongs to – and that’s after having played this game and worked with it for a few weeks. Imagine the trouble a translator would have in a real-life project. Therefore, when I discovered that in Phrase Strings you can upload the reference screenshots, that would be a really helpful function for software localization.
3. Usefulness of externalized strings and .resx files
Going through the full process of externalizing strings in a program from scratch really helped to drive home this point. It helped me see that as long as you did string externalization right (or even better, start the software development process with internationalization in mind, and already have all user-facing strings externalized as they are written), the incremental cost and effort of adding a new language is much less than if you were to painfully replace the hard-coded strings in each language version.
4. Most importantly, always keep that sense of discovery and exploration!

That brings me to my most important learning point from this project, that above all, one needs to always be inquisitive and wanting to discover. While working on the Scrabble game, we encountered new challenges that we were unfamiliar with, including how to localize a completely new file format (XAML forms) and correspondingly how to implement the language picker.
I was also at a loss at first, but I decided to just search keywords on Google and YouTube, and found a few video tutorials that were very useful to show the step-by-step process of localizing a WPF form. Although the video still doesn’t show you everything, it was enough to get me started, and I ended up just poking around the program and trying different things before I got it working. Therefore, I think this curiosity to explore, as well as not being afraid of the unknown and to try things anyway, is key to something like software localization.


