STEAM GROUP
Translators' Lounge STSL
STEAM GROUP
Translators' Lounge STSL
44
IN-GAME
284
ONLINE
Founded
December 22, 2010
Showing 1-10 of 11 entries
265
Non-English user feedback
9
Translating tags and images
1
Steam games with community localization support
6
Translate in-game or spreadsheet?
3
Translator's tool
4
Option to apply search term to one language only
9
Glossary overhaul
79
Killing Floor 2 - Nov/Dec 2015
1
Localization of "sentence builder" templates
Not to further derail another thread intended for a different purpose, I decided to open a new one to explain and discuss what's wrong with the "sentence builder" templates from a localization standpoint, or rather, why they are impossible to localize to certain languages in the form they are currently implemented.

Let's consider the following example strings:

SomeApp_owned_vehicles - "%s1 has a %s2."
SomeApp_to_work - "%s1 goes to work by %s2."
SomeApp_John - "John"
SomeApp_Jane - "Jane"
SomeApp_car - "car"
SomeApp_bike - "bicycle"

This can dinamically produce different sentences, like:

"John has a bicycle." or
"Jane goes to work by car."

In English, the names of the two person can be used "as is" in either of the two templates, so you only need one instance of each.

However, in an agglutinative language, like Hungarian, this can't be made to work, since we need (or do not need) to attach specific, different suffixes to each of these names:

For the first template, "John" has to become "Johnnak" where "nak" is a kind of posessive suffix indicating that the root is in possession of something, but "Jane" will become "Jane-nek", where "nek" is the other variant of the same suffix (we have two variants of most suffixes), and this time a dash is also needed because of another rule regarding attaching suffixes in certain cases. This means that the suffix cannot be placed into the template itself since it has to be either "nak" or "nek" (or even "-nak" or "-nek" for the "dash-exception") depending on which name is used, thus it would have to be added to the name strings themselves.

However, for the second template, both "John" and "Jane" needs to remain as is, since in this sentence they do not attract any suffixes.

So, we cannot add the suffixes neither to the templates, since they depend on what will be in the first variable, nor to the names themselves, since the second template requires the names without any suffix.

The only solution to this is to have two sets of name strings for the two templates, even if they will be the same in English.

And the same goes for the possible contents of the second variable:

In English, "car" and "bicycle" will fit into either of the two templates "as is".

In Hungarian, for the first sentence they will become "autója" ("car -> "autó" + "ja", which is another posessive kind of suffix indicating that the root is the possession of someone) and "biciklije" ("bicycle" -> "bicikli" + "je", again, the other variant of this suffix); again, they attract different suffixes so it can't be added to the template itself.

For the second sentence, they become "autóval" ("car -> "autó" + "val", which is basically the equivalent of the English "by", only in the form of a suffix) and "biciklivel" ("bicycle" -> "bicikli" + "vel", again, the other variant of this suffix), and since these words attract a different suffix for this template than they do for the first one, the suffix cannot be added to the strings either.

The only solution, again, is to have two sets of vehicle strings, even if they will be the same in English.

So this is what would be needed:

SomeApp_has_a_vehicle - "%vehicle_owner% has a %owned_vehicle%."
SomeApp_has_a_vehicle_vehicle_owner_John - "John"
SomeApp_has_a_vehicle_vehicle_owner_Jane - "Jane"
SomeApp_has_a_vehicle_owned_vehicle_car - "car"
SomeApp_has_a_vehicle_owned_vehicle_bicycle - "bicycle"
SomeApp_goes_to_work_by - "%travelling_person% goes to work by %used_vehicle%."
SomeApp_goes_to_work_by_travelling_person_John - "John"
SomeApp_goes_to_work_by_travelling_person_Jane - "Jane"
SomeApp_goes_to_work_by_used_vehicle_car - "car"
SomeApp_goes_to_work_by_used_vehicle_bicycle - "bicycle"

And this is what it would look like in Hungarian, and would be capable of producing correct sentences:

SomeApp_has_a_vehicle - "%vehicle_owner% van egy %owned_vehicle%."
SomeApp_has_a_vehicle_vehicle_owner_John - "Johnnak"
SomeApp_has_a_vehicle_vehicle_owner_Jane - "Jane-nek"
SomeApp_has_a_vehicle_owned_vehicle_car - "autója"
SomeApp_has_a_vehicle_owned_vehicle_bicycle - "biciklije"
SomeApp_goes_to_work_by - "%travelling_person% %used_vehicle% jár munkába."
SomeApp_goes_to_work_by_travelling_person_John - "John"
SomeApp_goes_to_work_by_travelling_person_Jane - "Jane"
SomeApp_goes_to_work_by_used_vehicle_car - "autóval"
SomeApp_goes_to_work_by_used_vehicle_bicycle - "biciklivel"

Also, please note the variable notation in the templates, and how the names of the component strings reflect which template do they belong to, and which variable will they be put into. Using a notation system like this would go a long way to help identifying which strings belong to which sentence template, and in which variable are they used within that template.

-----

So, to try to sum up what would be needed to make most of these templates properly localizable to agglutinative languages:

- Each template has to have its own dedicated set of substrings for each variable.

- Substrings belonging to a specific variable of a specific template must not be used for anything else than for the one template and variable they were created for.

- The relation between the template and all of its substring sets, as well as the members of each substring set need to be marked clearly and explicitly, in a way that allows searching for all substrings belonging to a specific template, and all substrings belonging to each specific variable within a specific template.
Showing 1-10 of 11 entries