Using AI to translate apps: FitWoody app interface in English and Arabic showing automated translation results

Translating an app using AI: from 1 to 34 languages

How we turned a daunting task into a simple process and reached thousands of new users.

Lately, a lot of negative things have been said about the App Store, but if there’s one thing it can boast about, it’s how easy it is to distribute and sell your product to a global audience of millions. You create your business account, prepare your product, and they take care of managing credit cards, renewals, and taxes globally.

They make it so easy that the only challenge left is preparing your app for a global audience. Users not only expect the app to be translated into their language but also want it to adapt to their territory’s technical and cultural preferences.

From artificial intelligence-powered translations to different units and calendars, here’s the story of how we used AI to translate FitWoody into 34 different languages while maintaining our sanity.

App translation with AI: managing the never-ending string updates

Unless we’re talking about something basic, apps typically have hundreds or thousands of Strings. Small (or large) text strings that explain everything from what a specific button does to why Heart Rate Variability is so important. Translating them would just be a matter of hours if it weren’t for some software peculiarities, like how it keeps changing version after version or how these text strings live hidden among the rest of the code.

That’s why, until now, managing an app’s translation was quite laborious. You had to go screen by screen retrieving all the text strings, create the translations, and above all, keep it updated. Fortunately, Xcode has, since last year, a new tool to manage much of this process.

Once you activate the new String Catalogs, Xcode takes care of collecting all the Strings from your project and keeping your translation database updated. Every time you add something, it’s automatically created. Every time a string is no longer used, it’s marked as stale. You can even leave comments that make the translation work easier. Because left means something different when we’re talking about a direction versus when we want to indicate the calories remaining to reach today’s goal.

All of this makes translation maintenance much easier, but the real challenge is translating and keeping up to date a short novel that keeps changing. Something that until now was unfeasible for many unless you were an industry giant, had a multilingual team, or were lucky enough to find some super-motivated user to lend a hand. This is where artificial intelligence transforms the app translation process completely.

I still have my doubts about whether ChatGPT or Claude are truly intelligent, but they’ve proven incredibly effective at translating apps accurately and quickly. Especially when you integrate them into an application that takes this Xcode string catalog and handles the entire translation process automatically. From your base language to 33 others in a matter of minutes, artificial intelligence handles what used to take weeks of manual work.

If you look around the internet, there are quite a few alternatives, though my favorite is stringcatalog.com. It connects through GitHub to your repository and takes care of translating new texts as you add them. It has a very competitive cost, and if I had to point out one drawback, it’s that it’s not entirely intuitive for correcting translations once they’re done.

I also recommend checking out swift-translate, a GitHub repository that does the same thing, but in this case, you have to set it up yourself and input your own API Key.

Right to left: mirroring the interface

SwiftUI app localization example: automatic right-to-left interface adaptation for Arabic language support

Unlike English or Spanish, some languages like Arabic or Hebrew are read and written from right to left instead of left to right. This is a significant detail, as the way interfaces are perceived changes completely. The most important elements move from the left to the right, so if you want to properly adapt your app, you need to mirror your interface.

In the era of imperative interfaces and archaic operating systems, this used to involve quite a bit of work, but nowadays, things are much simpler. For starters, if you work with SwiftUI (or Jetpack Compose in Kotlin), you’re creating your UI declaratively for iOS or Android to later adapt it to how it should look on Apple Watch, iPhone, iPad, or Mac. And they also take care of automatically reorganizing elements when the user chooses an RTL language.

The magic is such that we barely had to spend a couple of hours reviewing all of FitWoody’s screens and adjusting small details like some icons.

Converting from meters to miles

What did give us some headaches was supporting different units: distance, temperature, weight… Here, the difficulty isn’t in knowing which unit the user prefers and showing it to them, but in being careful not to make double conversions or avoid feeding a function data in the incorrect unit.

For this, we established that all FitWoody’s analysis libraries and data models would be in the Metric System and Celsius. From there, each model would have an additional computed variable called localized that would check which unit the user prefers and make the corresponding conversion before displaying it in the interface.

And the best part is that it’s totally transparent for the user. We don’t have to ask about it in the onboarding since we ask the operating system. One of the many advantages of creating native apps. And here’s a demonstration:

Here you can also see how Measurement works, one of my favorite Swift APIs. An incredible library that allows you to easily convert between all kinds of units without having to resort to multiplications or divisions where you might make mistakes.

What about the App Store?

AI app translation workflow in Xcode String Catalogs: automated translation process for iOS apps in 34 languages

All this effort would be in vain if we didn’t take one step further and do the same work on the App Store listing. Here, honestly, we’re still halfway there. On one hand, we are translating descriptions and update notes with the help of Helm, which combines the App Store Connect API with LLMs to optimize the entire process of publishing a new update.

What we haven’t done yet, even though we have it semi-automated in Figma, is translating the screenshots. Since we’re considering revamping the screenshots, this is something that has remained in our backlog for now.

Is it worth using AI to translate your app?

Short answer: Absolutely yes.

One of our goals for 2024 was to get FitWoody to grow outside of Spain and the United States. By leveraging artificial intelligence for app translation and localization, we launched an offer for new users that allowed us to add many users in countries like China, Korea, and Japan. It also had a domino effect in the European market and, as a result, we ended up multiplying our daily active users by 4.5.

While the marketing campaign helped drive these results, the key factor was having our app properly translated and localized for all these markets. Using AI to translate our app not only saved us time and resources but also ensured we could maintain high-quality translations as our app continues to evolve.



Don’t forget to subscribe if you don’t want to miss any article 👇