Skip to content

Grammatical Challenges

As with most natural language related problems, most issues appearing during video game localization can be hard to explain, especially when trying to focus on a common denominator such as the English language.

Most modern games are developed with the English language in mind. Luckily for developers, the English language is rather simple and naive, when it comes to word flow and grammatical requirements.

Subject, Predicate, Object,…

Three simple components form complete sentences. This simple rule many learn back in school is enough to form grammatically correct sentences… in English.

The dog chases the cat.

This simplicity makes it very easy to dynamically generate perfectly worded sentences on the fly without human interaction.

For example, any of the three components might be replaced with another noun or verb respectively:

The bicycle chases the cat.

The dog loves the cat.

The dog chases the car.

It's a simple and basic task to implement a dynamic sentence like this in pretty much any programming or scripting language.

printf("The %s %s the %s", subject, predicate, object);

As you can see there's no special trick involved and the actual code is very easy to interpret, even if you don't know the actual language being involved. The first parameter defines a template and the following variables are then used to fill these placeholders.

Content creators can directly work with these templates and try to write elaborate conversations that will use placeholders to dynamically adjust to certain circumstances, such as player decisions.

However, there are cases where such a simple approach will fail, even in English, requiring further adjustments.

Articles and Declension

While always using an article such as "the" sounds easy, there are several problems with this approach. If you'd like to insert an actual name, it's typically not acompanied by a definite article. And what happens if you'd like to use indefinite articles instead? There are quite a few more variations that have to be considered when working with such text templates and placeholders.

You have found a rusty sword. Do you want to take the rusty sword?

You have found an iron ingot. Do you want to take the iron ingot?

You have found the prison key. Do you want to take the prison key?

You have found the Philosopher's Stone. Do you want to take the Philosopher's Stone?

You have found Sally's Necklace. Do you want to take Sally's Necklace?

This clearly adds some complexity you might be able to avoid on a case-by-case basis, but you also have to keep in mind that this is just the tip of the iceberg.

Localization Coming Into Play

While it might be rather easy to avoid having multiple cases to handle in English, e.g. by always using the definite article, "the", once you want to localize your game, you'll be running into these problems once more.

Unfortunately most major languages are far more complex than English and won't offer you easy ways out of this dilemma without significantly impacting overall translation quality and how your game is perceived.

Without going to much into details, the English "the" can have several possible translations in German, all based on the grammatical case as well as the gender of the noun: "der", "die", "das", "des", "den", and "dem". In addition, most adjectives and nouns will also require declension once again based on the gender of the noun as well as the grammatical case.

To top this off, other languages won't necessarily follow the very same Subject-Predicate-Object pattern. In German it's not uncommon to actually use Subject-Object-Predicate, making it hard to use SPO properly without the results sounding awkward.

Ideally a program would be able to handle all these cases on its own and adjust dynamic content on the fly, without any content creator or translator specifically having to differentiate between languages, sorting orders, or grammatical cases.

Player Choices

Allowing the player to make their own choices – name and gender for the protagonist, name and gender of additional characters or items, etc. – opens a completely different can of worms. While it might be reasonable to consider two distinctive text variations based on a player character's gender, this may quickly run out of control, assuming one text refers to more than one dynamically updated characters or objects in general.

Mistakes from the Past

In the past, most games couldn't handle such textual adjustments, especially not for languages besides English – usually only implementing the simple differentiation of "a" and "an", if at all. This often lead to some very weird text structure or sentences that didn't sound natural at all. Combined with memory and space restrictions, some became iconic, such as the notification texts in Gamefreak's Pokemon series, but most often they left a bitter taste with fans in localized releases.

The average gamer won't know about these issues and probably wouldn't even care about the reasons either. They might not even know that the text is created dynamically. From their perspective it's just another poorly localized game, where the localization is just there to get people to buy the game, rather than providing a good one that's better but also more expensive.

Placeholders and Variables

The Lingoona Grammar Engine tries to consider all these potential culprits and problems and tries to abstract them away from both developers as well as content creators and translators.

Programmers shouldn't have to be forced to handle special cases for languages they probably don't even speak and they shouldn't have to worry about content creators and translators being able to use proper grammar and sentence structure. They're supposed to do what they're best at: implementing solutions, not authoring or translating.

Content creators and translators on the other hand shouldn't have to learn or worry about additional syntax or complex mechanics to do their job. They also should do what they're best at: write or translate content rather than implement software solutions.

The Grammar Engine tries to deal with the needs of both groups by providing a very simple and easy to use interface for the programmer and an easy and naturally to use system for content creators and translators.

Our section with simple examples will give you a quick glimpse on how these two roles might work with the Grammar ENgine in basic use cases.

Generated Names

With Open World being a more and more popular design choice, the sheer size of many games and especially the amount of various items and enemies being encountered still keeps increasing.

Where many classic games offered a limited amount of customizability and items, it's no longer uncommon even for singleplayer games to feature thousands of unique items or NPCs.

Creating, translating, and maintaining all of these at once can be a significant challenge, especially considering languages where adjectives might need proper adjustment in case the gender of some name changes.

For example, there's a significant difference between updating a few hundred "bracers" to "gloves" or simply changing a single variable.

In a similar way, there's a significant difference whether thousands of names have to be translated one by one or whether it's possible to translate all occurrences of a specific word at once.

The Grammar Engine is capable of using any amount of components – nouns, group names, adjectives, and other suffixes – to create new and grammatically correct names in all supported languages.

Similar to using placeholder texts, once again content creators and translators are in full control of how names are actually concatenated.

Suffixes being used as adjectives in English might be adjectives in French and concatenated word parts in German.

EN: iron sword

FR: épée en fer

DE: Eisenschwert

All these things aren't any concern to the programmer implementing this system. All that has to be done is select the apropriate components and pass them to the Grammar Engine.

Our section with simple examples will give you a quick glimpse on how these two roles might work with the Grammar ENgine in basic use cases.

Last update: January 7, 2020