loclait
Arabic Localization,
Simplified.

[email protected]

The 2 Fatal Right-To-Left Game Localization Pitfalls, and How to Spot Them

Pitfalls Article 1

if localizations into your language looked like this؟
How wo uld uoy rea c t

Right-To-Left Game Localization

Let’s not sugarcoat it: Right-To-Left game localization is hard. Like, really hard.

Ask linguists, agencies, or Publishers and you’ll get the same response. Not only is Arabic challenging due to its myriad cultural complexities; but also the technical barriers facing it at each step of the localization process.

Arabic is a unique language from top to bottom, starting with its script and ligatures to the direction it is written, and everything else in between. But being unique doesn’t always work in its favor—because it’s a right-to-left language trying to exist in a world built for right-to-left, Latin-based languages.

As a result, modern software (which includes game engines) tends to feel like a hostile environment looking to garble your RTL text at every chance it gets—and make no mistake, it definitely will when you least expect it if you allow it.

While modern game engines like Godot are making strides in native, out of the box RTL implementation; the vast majority of game engines only have partial or nonexistent RTL support. This leaves developers interested in supporting the language relying on third-party plug-ins designed to streamline the process.

But there’s a small caveat—most of the RTL plug-ins currently available for engines like Unity and Unreal only provide partial Arabic support.

This is a direct result of trying to maintain plug-in compatibility with multiple engine versions, as well as the inherent impossibility of accounting for all the special quirks that vary from one project to another.

These RTL implementation plug-ins come with an unspoken disclaimer: use at your own risk.

Developers are expected to build upon what these plug-ins offer themselves with bespoke additions depending on what breaks during the RTL implementation process.

However, many developers integrate RTL languages under the assumption that a plug-in and some back and forth with their multilingual language service provider – which is often not equipped or specialized enough to deal with Arabic implementation – are enough to achieve a functional RTL Implementation.

That, more often than not, leads to disaster. Approach RTL implementation the wrong way and your audience might just make you wish you never bothered.

We’ll explore the 2 fatal technical pitfalls in Arabic game localization to shed light on how they happen, what they look like, and how to spot them.

Pitfall #2: Flipped Strings

Flipped strings are one of the most common bugs in Arabic game localization. As the name implies, this bug flips the string order at the line break point. The result looks something like this:

Original StringArabic Localization
¹* I can’t reach up there! I have to
²* put something on the table.
²* وضع شيء ما أعلى الطاولة.
¹* لا أستطيع الوصول لأعلى! علي

While this may look somewhat tolerable to non-natives, and despite most multilingual service providers insisting that it’s a “minor hiccup” you can ship your game with, or them not realizing that there’s an issue at all to begin with, it’s anything but.

Flipped strings are instantly noticeable and will get grating only a couple of lines in. Also keep in mind that the more verbose a string is, the more unreadable it becomes.

By the time the player is done reading all those splash screens and disclaimers, they’re either heading straight for the languages menu or marching off into the sunset to request a refund.

This comes as a direct result of completely relying on engine plug-ins or importing incomplete/buggy external libraries to render RTL text, leading to the line break parsing logic not working as intended.

The developer then must resort to one of these options:

  • Ditch the plug-in completely and write an RTL implementation from scratch.
  • Fix the issue via trial and error, or the plug-in itself if it’s open source.
  • Ask the linguists to manually insert line break codes ( \n) in each string then test them.

What it looks like

Atomicrops 0eThGRA0CK
Atomicrops | By: Bird Bath Games & Raw Fury – Arabic localization by: Riotloc
Minecraft Legends Arabic Localization
Minecraft Legends | By: Mojang & Xbox Game Studios – Arabic localization by: uncredited
Shovel Knight Dig
Shovel Knight Dig | By: Yacht Club Games – Arabic localization by: Roboto Global
Inmost Arabic Localization
Inmost | By: Hidden Layer Games & Chucklefish – Arabic localization by: Riotloc

How to spot it

Flipped strings are very simple to notice and flag even if no one on the development team is a native Arabic speaker or has access to one. The rule is: what doesn’t look right in your Arabic localization also wouldn’t look right in most of the other languages.

Boot up the game in Arabic with the original script on hand and check multi-line strings. A dead giveaway that your implementation suffers from flipped strings is seeing full stops in the first line multiple times in a row when that’s not the case in the source text.

Sometimes, though, it might be nigh impossible for a non-native to spot this issue. Strings that contain 2 or more sentences ending in full-stops may “look” right to someone who doesn’t speak the language despite being flipped. Minecraft Legends is a good example of that.

As always, proceed with caution and never ship without having a pair of native eyes check your localization first. Preferably, the linguists’ who worked on the localization.

Pitfall #1: Disjointed Characters

If there’s one thing that could render your Arabic localization completely unplayable, this is it.

Arabic is written in a unique type of cursive. Not all letters are joined like they are in Latin-based cursive, though – some are, some aren’t, some have multiple unique ligatures depending on their placement in the word, and so on.

Since modern software is designed first and foremost for Latin-based scripts, it will exclusively follow the text-shaping rules of those languages unless taught otherwise.

This means that, by default, most engines aren’t capable of rendering Arabic correctly out of the box.

You can see how this quickly becomes a major setback for developers & publishers looking to break into the MENA market. But as with anything, there are solutions.

What it looks like

EDsRqtuWkAA lJK
Gear 5 | By: The Coalition & Xbox Game Studios – Arabic localization by: Lionbridge Gaming
20220617014731 1
Super Meat Boy Forever | By: Team Meat – Arabic localization by: EDS Wordlands
ELM2M6fXYAIBVbC
Goat Simulator | By: Coffe Stain Studios – Arabic localization by: uncredited

How to spot it

This issue is very easy to spot once you’re aware of it, but tread very carefully. Always try to involve a native speaker in your debugging process, because as you’ll soon notice, “deceptively easy to fix” is a trend with RTL implementation.

Arabic, and by extension Arabic-based scripts, will always have a clear and mostly connected baseline. If there isn’t one, something is seriously wrong with your Arabic implementation.

8
Notice how even when the font is highly stylized there’s still a clear, straight connecting baseline. – Readability in Arabic-Persian Scripts, Quicktypo

Once you’re aware of the issue, it’s a relatively easy fix. But while the reshaping library you coded/imported might have connected the characters, don’t celebrate just yet.

A non-native has no way of knowing if the characters are connected in the right direction.

l2
Not only are the letters disjointed, but they’re completely reversed to be left-to-right here. – Help! Is this عربي?

One important caveat about fixing disjointed characters is that it’s a two-headed hydra – and a one-headed hydra is still a hydra.

The issue of disjointed characters is often accompanied by a total Left-to-Right reversal of character positions, meaning that the developer has to account for that too when introducing a text-reshaping library to their code.

For example:

Original StringArabic String
(Disjointed & LTR)
Arabic String
(Reshaped, still LTR)
Arabic String
(Reshaped & RTL)
Implementing Arabic is hardإ‎ د‎ خ‎ ا‎ ل د‎ ع‎ م ا ل‎ ع ‎ر ب ‎ي ‎ة ص ‎ع‎ بﺐﻌﺻ ﺔﻴﺑﺮﻌﻟﺍ ﻢﻋﺩ لﺎﺧﺩﺇإدخال دعم العربية صعب

Once you’re done applying the needed modifications to your reshaping library, make sure that a pair of native eyes checks the localization before it’s out in the wild.

The importance of good LQA in game localization cannot be stressed enough, but it’s the difference between a playable and an unplayable game for Arabic speakers. Skip out on it at your peril.

Want your game to support Arabic, but feeling a bit intimidated?

Don’t be.

At loclait, we get it, and most importantly, we get it right.

Our in-house implementation specialists have simplified the process for many popular engines ranging from Unity and Unreal to Ren’py & Gamemaker, ensuring a hassle-free RTL implementation.

We handle the tedious part so that your team to lock in on what really matters—making good games.

Shoot us an e-mail to get a free quote and set your game up for success in the MENA region!

More on Arabic game localization

  1. Feb 26, 2024 11:24 am

    cool

  2. Apr 10, 2024 1:19 am

    The breadth of knowledge compiled on this website is astounding. Every article is a well-crafted masterpiece brimming with insights!