To localize a mobile app, developers often run into a common challenge. That is scaling services to meet the language needs of their users. One way they solve for this is architecting their apps into microservices and adding more computing resources.
Such was the case for JDK while developing the mobile app for global client Lions Clubs International (LCI). JDK had to figure out how to localize the mobile app into many languages. With over 1.4 million members, LCI’s users speak French, Portuguese, Chinese, Hindi and more.
How to localize your app with microservices
For LCI JDK built a web and mobile application. Both apps needed multi-language localization to support 17 official languages. Languages ranged from Simplified Chinese, Traditional Chinese, Hindi and more. Scaling this type of complexity requires a cross-functional process. The teams involved are product owners, translators, writers, QA analysts, and developers. Their role is to integrate both technical solutions and plain old business processes.
The steps we followed for app internationalization
At the beginning of each sprint, product owners identify text in the apps to add or update. The text can be marketing messages, labels, headings, or simple contextual help. Product owners review strings of text and pass them on to a translation team.
The translations get imported into a database table. The table stores them and their key identifiers for reference by our applications. As the apps evolve and improve, existing key values evolve as well. Existing keys get updated, new values are created, and obsolete key values get removed. In the source code of the apps, the keys get embedded as part of the normal development process.
For LCI’s web application, we built a custom Angular directive to insert translated text string. Each text string has an attribute assigned to each page element requiring translated text.
Second, the user’s browser language settings determine the translation that will be rendered.
In a similar way, the mobile app code resolves the mapping between keys and the translations determined by the user settings. When a member navigates to the web app or launches the mobile app, an API request gets sent to the server to fetch the translations text strings. The call includes the user’s language specification from their browser or device.
For performance reasons all translation strings associated with the user’s language are returned to the app in the API response. The list of translation keys and text string pairs are cached on the user’s local device in the browser memory or mobile device. Then, the application embeds the translations on application pages as the user creates new service activities. These service activities are messaging other members, reporting on service outcomes, and so on.
Setting up this joint business and development process had growing pains. As you start to localize your apps, be aware of the gotchas.
Here are some tips and gotchas to keep in mind when translating your app into many languages.
Generating translations take time. Bake that turnaround time into your development planning process. Also, depending on the language, the length of a text string will vary a lot. Accommodating this variability is as much art as science. Your page design should account for different text lengths. Rendering logic can help manage edge cases.
To sum up, scaling is more than handling application requests from a large or unknown number of users. It can take other forms and complexities. For LCI, JDK’s scaling strategy involved people, processes, and technology to localize their apps.
Contact JDK for help on localizing your app into many languages.