Mobile App Development with Localization In Mind - Or, A Developer’s Illustrated Primer - Part 1

app screen ready for localization

Sign up for our newsletter on globalization and localization matters.

 

BLUF - Bottom Line Up Front

App localization is perceived like a complicated topic with many traps, but I can confidently say that it doesn’t need to be. There are a number of frameworks out there to help with app development in general, and the most popular ones offer at least some degree of localization support. However, not all of these are created equal. In this post, we will be taking a brief look at the four most popular mobile frameworks, with a special eye for their localization support.

The Why

Building localization-enabled mobile apps has long been known to be one of the most vexing problems in the world of mobile development. There are many-many issues to consider when implementing content for multiple languages, including text expansion/contraction, multiple writing directions, and even just the task of making said content available to the translators and the app at the same time.

However, mobile apps are an exponentially growing market, and despite its power as force multiplier, localization is all too often treated as an afterthought. Doubly so, as although there are several frameworks that can make the development of mobile apps easier, none of them really treat localization as a first-class citizen. As a result, creating a multilingual application is a bigger effort than it is usually expected to be, and it is relegated to a lower priority.

The Basics - The Various Frameworks

Developers have been quick to recognize the challenges that mobile applications pose to localization, and have developed various solutions in the most popular frameworks to simplify this task. Currently, there are three major frameworks in use, with several smaller ones, and one that is a particular up-and-coming contender.

React Native

Created by Facebook, React Native is currently the industry leader in terms of popularity. It uses the popular Javascript language to allow a single code base to run equally on Android and iOS phones, while making mobile development accessible by leveraging a simple and widely-known language.

React Native is no stranger to localization, as its engine stores content in a standardized format - Javascript Object Notation, also called JSON for short - that most of the industry’s tools can process easily. However, the strict conventions imposed by the format also mean that it’s very difficult to add context to the translatable content, making linguists’ job harder than they need to be.

Xamarin

Xamarin is one of the old guard of mobile app frameworks, with its roots dating back to 1999. Xamarin uses Microsoft’s C# language to enable rapid iteration using Microsoft’s native toolsets and fast, performant applications, but its localization capabilities leave something to be desired. The framework uses the RESX file format, which is not trivial to handle for translation, without extensive pre- and post-processing, and cannot handle context information that could otherwise assist the linguist working on the project.

Ionic

Ionic is another popular mobile app framework that promises universal UIs across multiple platforms, by leveraging Javascript and the Google-created Angular framework for its display capabilities. Because it’s based on the Angular framework, it benefits from its pre-built  components, making it extremely easy to create consistent UIs across platforms.

Angular is also no stranger to localization, using XLIFF files to provide translatable content in an editable format, although Angular isn’t natively localizable and requires the use of plugins to do so. Because  XLIFF is the industry standard format, you can always be sure that it will always be supported; however, XLIFFs are rather restrictive in what data can be passed on to the linguist and how, being limited to notes on segments, but are not very supportive of providing context in a standardized manner.

Flutter

Flutter is a relative newcomer to the mobile app development scene, having reached its first stable release in 2018. Since then, the platform has expanded to allow the same code to run practically on every platform, from Android phones through iOS devices, through web applications all the way to desktop platforms. Flutter uses the Dart language, created by Google. This is a strongly-typed language that can prevent entire classes of bugs that can vex the other frameworks. It has a rich native library of UI widgets, making it easy to build consistent UIs that adhere to the Material design language and look similar on all the platforms the app is built for.

While Flutter has supported localization natively from the start, it initially required a separate toolchain to make effective use of this. Since 2020, however, Flutter has transitioned to a next-generation localization subsystem that makes direct use of ARB (Application Resource Bundle) files, the same format used by Angular. This way, it’s also possible to add contextual information and descriptions to the translatable assets of Flutter apps, making life much easier for linguists.

Conclusion

Mobile app frameworks are numerous, and each have their own pros and cons, in their language capabilities just like in their support for localization.

In the second part of this article, we’ll look in greater detail  at Flutter’s localization support, through the example of an actual app, already out in the wild.

 

Do you want to contribute with an article, a blog post or a webinar?

We’re always on the lookout for informative, useful and well-researched content relative to our industry.

Write to us.

Zalan Meggyesi

Diplomat, scuba diver, translator, software developer. Graduated from Corvinus University of Budapest before turning to software development, Zalan has worked alongside translators and content creators in the localization industry for the last eight years at Easyling, sharpening the translation proxy’s capabilities to ever greater effect.