MegaAntiCheat / MegaAntiCheat-UI

React frontend
GNU General Public License v3.0
45 stars 26 forks source link

lack of plurals in the i18n #49

Open treuks opened 9 months ago

treuks commented 9 months ago

In Russian, and most common slavic languages, there are at least 3 different words for quantities, and you need them for the translation to be grammatically correct.

For example, if I'll grab some lines from the Russian localisation

"TOOLTIP_BANS_DAYS": "%1% дней с предыдущего бана",
"TOOLTIP_BANS_VAC": "%1% VAC бан в истории аккаунта",
"TOOLTIP_BANS_GAME": "%1% игровых банов в истории аккаунта",

if the TOOLTIP_BANS_DAYS variable is 0, 1, or anywhere in the range of 3-4, and 5+ there should be different words

TOOLTIP_BANS_DAYS

Days English Translation
0 Was banned today Бан был получен сегодня
1 Was banned yesterday Бан был получен вчера
2..4 %1% days since the last ban %1% дня с предыдущего бана
5.. %1% days since the last ban %1% дней с предыдущего бана

TOOLTIP_BANS_VAC

Count English Translation
0 Has not been VAC banned VAC банов нету
1 1 VAC ban on record Имеет 1 VAC бан на счету
2..4 %1% VAC bans on record Имеет %1% VAC бана на счету
5.. %1% VAC bans on record Имеет %1% VAC банов на счету

TOOLTIP_BANS_GAME

Count English Translation
0 No game bans on the record Игровых банов нету
1 1 game ban on record Имеет 1 игровой бан на счету
2..4 %1% game bans on record Имеет %1% игровых бана на счету
5.. %1% game bans on record Имеет %1% игровых банов на счету

TOOLTIP_NEW_ACCOUNT

Days English Translation
0 Account was created today Аккаунт был создан сегодня
1 Account was created yesterday Аккаунт был создан вчера
2..4 Account was created %1% days ago Аккаунт был создан %1% дня назад
5.. Account was created %1% days ago Аккаунт был создан %1% дней назад
NiXTheDev commented 1 month ago

I feel like I should say this:

There is no word "нету" in Russian

So, all of the occurrences in order of appearance:

- VAC банов нету
+ Нет VAC банов

- Игровых банов нету
+ Нет игровых банов

General overhauling of the phrasing, in order of appearance, excluding rephrasing from above:

- %1% дня с предыдущего бана
+ %1% дня с последнего бана

- %1% дней с предыдущего бана
+ %1% дней с последнего бана

~~~

- Имеет 1 VAC бан на счету
+ %1% VAC бан на счету

- Имеет %1% VAC бана на счету
+ %1% VAC бана на счету

- Имеет %1% VAC банов на счету
+ %1% VAC банов на счету

~~~

- Имеет 1 игровой бан на счету
+ %1% игровой бан на счету

- Имеет %1% игровых бана на счету
+ %1% игровых бана на счету

- Имеет %1% игровых банов на счету
+ %1% игровых банов на счету

As you can see, the words "нету" and "предыдущего" can be replaced with alternatives without losing coherence of the sentence And the redundant word "имеет" can be thrown out altogether without any changes to the meaning of a sentence

Edit:

Note that optionally, you could consolidate the plurals for the values that end in 1 with the ones that end in 0, 5 if you don't mind losing a tiny bit of accuracy with the text

- Имеет 1 VAC бан на счету
- Имеет %1% VAC банов на счету
+ %1% VAC бан(ов) на счету

~~~

- Имеет 1 игровой бан на счету
- Имеет %1% игровых банов на счету
+ %1% игровых бан(ов) на счету

This is not quite squeaky clean, but it does reduce the amount of strings required, and it's only one level of consolidation, as for the second level you consolidate all three strings into a single one, which looks horrendous if you ask me, just look at it:

- Имеет 1 VAC бан на счету
- Имеет %1% VAC бана на счету
- Имеет %1% VAC банов на счету
+ %1% VAC бан(а/ов) на счету

~~~

- Имеет 1 игровой бан на счету
- Имеет %1% игровых бана на счету
- Имеет %1% игровых банов на счету
+ %1% игровых бан(а/ов) на счету