Localizing software on the fragmented European market

In Sliptree, a big part of our product is localization. We always wanted to make sure that wherever businesses are using our app, it would feel like something a local business would have built for them. It’s not just about speaking their language – it’s the details that matter: the way numbers, dates, financial numbers are written.

It hasn’t always been easy and sometimes we’ve spent too much time and resources on issues that were rather small. But we decided to do it anyway, and we believe we’ve seen many business sign up and start using Sliptree for this exact reason.

We’d like to give a small overview of how we are handling localization in Sliptree. We’ve divided the task into 2 main blocks, which you can read all about below.

1. Marketing website as the gateway to the product

Language selection drop down list for invoice app
Language selection drop down list for invoice app

We use Wordpress for our marketing website infrastructure. We use a single Multisite install, with a separate site for each language. Each site uses the same theme and plugins. Translations of posts and pages are linked together via the Multisite Language Switcher plugin. We decided to use this approach instead of WPML, because it gives us a granular control over which language a translator can access, as well as keeping the admin area nice and clean.

Sometimes it’s a bit more work in terms of content management, but in the same time it avoids a lot of issues related to WPML.

Language decisions

European language map (source http://www.eupedia.com/europe/maps_of_europe.shtml)

It’s important to decide which languages you’re going to support in your app. As the European language map is very diverse you might want to to choose the biggest and more common languages and their dialects. For example in Norway you might choose Bokmal instead of Nynorsk. For example, since we’re focused on European market, we chose UK English instead of US English.

Many countries have more than one official language. For example, in Finland there is also a Swedish speaking minority and they are happy to see the app in Swedish. Russian language is used in Estonia as well as in Latvia as the minority language. Switzerland might be the trickiest country, because there are four official languages.

Currencies in Europe

The map of European currencies
The map of European currencies (source http://www.economist.com/)

Big part of Europe is covered by the Eurozone and using the same currency – Euro. Scandinavian countries, UK, Switzerland, Poland, Czech Republic, Hungary etc. are still using their own national currencies. How do you then show prices and charge customers?

We decided to display our prices and make charges in Euros. On our pricing pages we show an approximate sum in local currency as well, but customers will be told they will be charged in euros. We use currencylayer to get the latest exchange rates.


People tend to believe word-of-mouth over advertising. They also are more likely to take product recommendations from someone they know than a stranger. We believe the same applies to cultures and languages. A product will seem more trustworthy if you can see that a genuine person from your country that speaks your language is recommending it. For this reason, we try to get at least three testimonials from local users in each country. It’s not always easy – especially if your user-base in a country is still small, but it’s been well worth it.

SEO and link building in Europe

Europe is like an archipelago of separate regions for search engines like Google and Bing. This means you need to have a separate link building effort for every single country. Choose your main keyword and concentrate on promoting the landing page in your target countries. It takes a lot of effort, but in the end of the day it will pay off and will cost you less than paying for Paid Search.

Where to find translators? How to manage translations?

In the beginning we used IcanLocalize. IcanLocalize is a platform for connecting professional translators and customers, but the platform hasn’t been updated in years. The UI and the whole translation process is way too cumbersome by today’s standards.

Recently, we switched to OneSky that actually kills two birds with one stone: it’s a platform for managing translations, but also a platform for ordering professional translations for your content. It’s more focused on app translation, whereas ICanLocalize is more of a general platform. However, the features, UI and translation quality of OneSky greatly outperform the former.

Using OneSky translating 3000-4000 words into 12 languages within a few days is a no-brainer. This means we can keep our release cycle short and do not need to wait ages for new  translations. We also have a professional agency Swesteng reviewing and editing translations – all in OneSky.

2. Localizing the app

Because of the European Union rules, invoicing templates are not that different from country to country. But there is still plenty of unique features in several countries. We have tried to build a general template that would work for most countries. We have been sometimes asked for a few exotic features, however, such as a place for a handwritten signature and rubber stamp.

Making a bi-lingual app

From early on, we wanted to offer our users the option to send out invoices in foreign languages. What this means is that when I am doing business in Estonia, and only speak Estonian, but have a customer in Norway, I can send them an invoice in Norwegian. Or English. Or whatever language Sliptree supports. And – you will see the invoice in Norwegian in the app, before it’s sent out – so you know we’re secretly not just saying we can do it, but actually can’t.

For this to work, we needed to separate the general user interface, or account language from the invoice language. We also offer a canned email message in the invoice language, so you can give your customer an all-local invoice experience.

Send invoice to your client using translated texts
Send invoice to your client using translated texts

For certain languages, we also offer support for more specific variants, or locales. For example, when choosing French language you can specify that you prefer Belgian French. This option will make some minor changes in translations as well as possibly the number and date formats.

You can change your language and other parameters in preferences
You can change your language and other parameters in preferences

Some of the approaches & tools we use for localization and translations:

  • We use gettext for string translations
  • OneSky for translation management and ordering professional translations
  • Jed for adding gettext support to Javascript (both client and node.js)
  • Javascript i18n API for number and date formatting (with fallback to Intl.js on non-supporting browsers). Node 0.12.x has this built-in, but you will need to use full-icu module to get support for all locales.
  • money.js to handle currency conversions

What approaches and tools do you use for localizations? What have been the biggest challenges for you with localization and translations?

Leave a Reply

Your email address will not be published. Required fields are marked *