Going Multilingual – Italian and French

Two new languages, type-checked translation keys, a decision about "vous" and "tu", values that never break across lines, and a World Cup start screen painted as an edit of the very first scene.

A game with Italian and French regions should speak Italian and French. With German and English already in place, adding two languages was mostly a content task – but a few technical decisions made it much safer.

Translations that cannot go missing

The German file is the source of truth. The type of every other language file is derived from it, and the translation function only accepts keys that exist. A missing key in Italian is not a runtime bug; the build fails. On top of that, the game checks at startup that every phase, region subtitle, staff role and quote has a text. Several gaps were found that way before any player saw them.

Plural forms needed attention too. Italian and French have an extra plural category for very large round numbers ("1 000 000"), which German and English do not. In an idle game, very large round numbers are everywhere.

Vous or tu?

French games address the player either as tu (informal) or vous (formal). My first draft used tu. A French-speaking review suggested vous, which is more common in French store listings and polished games. The game now uses vous in French and tu in Italian, where informal address is normal in games. Some regional terms in the translations differ from a dictionary's choice; those stayed, because they are what skiers actually say.

Values that stay together

One small but visible problem: numbers and their units broke across lines. "10" at the end of one line and "%" at the start of the next looks broken, and it depends on the language. A post-processor now runs on every translated string and replaces normal spaces with non-breaking ones where a value and its unit meet: after a word with a digit ("10 %", "5 crystals"), before a symbol, and after a symbol before a number. Translators write normal spaces; the code keeps values together in every language.

Store listings, by script

The Play Store listing now exists in four languages: title, short and long description and phone screenshots with localised headlines (Italian: "Costruisci il tuo comprensorio sciistico", French: "Construisez votre station de ski"). Texts live in one markdown file in the repository, and a script syncs them through the Play Developer API. A new language without its own screenshots keeps the existing ones instead of uploading English images.

The privacy policy was translated as well.

A start screen for the World Cup

Starting the World Cup used to be a button. Now it is a moment: a full-screen scene of Silberkamm transformed, with a finish arena, grandstands and banners. The picture is an edit of the very first scene the player ever saw: the same village, the same church, the same mountains, but grown up. Players who started in that small valley recognise it.

The text:

The world is looking at Silberkamm. Just a few years ago, hardly anyone knew this valley. Now the world's best skiers are heading to Silberkamm. Build the World Cup infrastructure and get your resort ready for the big event.

Silence during ads

A bug from Android testing: when an AdMob video played, the game's music continued underneath it. An ad covers the app without hiding it, so the normal "page hidden" logic never triggered. The game now holds its audio while a rewarded ad runs and resumes when it closes.

localisationi18nstore listingworld cup

Try the game

Ski Resort Empire is free to play in the browser and on Android.