Gerrel
Gerrel
Nov 3 · 3 min read

Jotive should always be part of the initial setup of your mobile app

As a mobile app developer I’ve seen a lot of projects where technical debt has been piling up, because internationalization was not a first priority at setup. By following best practices from day one you can reduce the cost and effort involved in the localization of your app and make things easier for everybody.

Separate content from code

I’ve seen projects that do not use Localizable.strings (iOS) / strings.xml (Android) / intl_messages.arb (Flutter). One platform more than the other probably because Android Studio gives a warning when you try to add hardcoded strings. Using hardcoded strings is really a bad practice!

Another thing that you should avoid is concatenating text in code, because there is a big chance that the concatenation would not be proper for one of the targeted languages. Always use positional placeholders in your sentences.

For example on iOS this would be:

on Android:

on Flutter:

One of the issues seen with native development for Android and iOS is keeping your app content in sync. Some clients treat localization as an afterthought and others actually assign a content writer to the scrum team.

During development we sometimes hit a impediment, because the needed translations are not yet available or are somewhere scattered in a email conversation. So to make life easier for everybody we needed to come up with a better solution.

My first try with a google sheet

So we have one place that contains all the translations for the apps and we’re able to share it with our clients so that they can make corrections or assign translators remotely. The sheet is quite simple containing one column for the translation key and the rest are columns for the targeted languages.

However Android and iOS handle translations differently so we needed to add an extra tab that converts the text to the appropriate format. So developers just needed to copy-paste the result into Localizable.strings or strings.xml.

It works well for small apps that do not have complex texts. But once the app becomes bigger the whole thing falls apart. Because, for example, how do you handle pluralization rules like ‘1 item’ and ‘2 items’ in a google sheet?! You can insert different translations keys for the different variants, but then you need to add some code statements to get it working properly which you actually do not want to do. Also when there are translation key changes then Android Studio will complain about it, but Xcode will not show a thing. Things will become messy eventually…

Using Jotive to maintain our translation keys

So we needed to find a better solution to handle our translation keys with the needed complexity and that still gives our clients the ability to change the strings whenever they want.

We’re now using the mobile first localization platform jotive.com. With this localization tool we’re able to store the translations in the cloud like our google sheet, but it handles all the required grammar rules that we need and non-technical users can easily provide the needed translations.

Jotive provides a CLI that makes syncing of the content really easy. With one command ‘jotive install’ or ‘jotive update’ mobile app developers are able to import the translations and the Android / Flutter / Xcode project is configured automatically!

Cherry on the cake

Jotive provides static typings for text and variables that you can style independently. When new text changes are imported and there is a breaking change then your app will not compile until it is fixed 😁 👍

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade