opolyx на вашем языке — теперь по-настоящему
Сайт выходит на 12 языках уже несколько месяцев — и в десятке мест всё равно отвечал по-английски. Названия режимов, заголовки страниц и картинка, которой вы делитесь после партии, теперь написаны на том языке, который вы читаете.

Простыми словами
Быть переведённым и быть читаемым — не одно и то же, и opolyx тихо проваливал эту разницу. Можно было переключить сайт на китайский и всё равно выбирать между карточками с надписями «Blitz» и «Classic» — латиницей, прямо рядом с фильтром, где те же режимы названы по-китайски, на одном экране. В той или иной форме это было в девяти языках из десяти.
Все 4 режима теперь названы на вашем языке везде, где встречаются: на карточках выбора при создании комнаты, на бейджах в списке лобби, в истории матчей в профиле — и на картинке, которая публикуется, когда вы делитесь законченной партией.

Текстовые страницы тоже догнали игру. Правила и руководство теперь описывают каждый режим на каждом языке, а не только старые, оставляя вас догадываться о самом новом. Десятки заголовков страниц, написанных не на том языке — португальская страница представлялась по-английски, индонезийская по-испански, — теперь совпадают со страницей, которой принадлежат.
Для тех, кому интересны детали
Ошибка с названиями режимов — одна и та же оплошность, повторённая четыре раза: каждый экран выводил внутреннее значение через хелпер «с заглавной буквы» вместо того, чтобы взять название из словаря. По-английски это выглядит нормально — «blitz» превращается в «Blitz», — и нечитаемо на любом другом языке; именно поэтому баг прожил так долго. Хелпер пришлось убрать вместе с ним: он делает заглавным каждое слово, так что название из двух слов «Chớp nhoáng» превращалось в «Chớp Nhoáng».
Худшим из четырёх оказалось то место, куда во время игры никто не смотрит. Маршрут, который рисует картинку для шеринга, держал собственный список названий режимов из трёх строк, написанный до появления самого нового режима, и при промахе подставлял первую запись — поэтому каждая партия в этом режиме давала картинку с подписью не того режима, по-английски. А именно эту картинку игроки и публикуют. Теперь она читает тот же список, что и всё остальное, и есть тест, что список покрывает все режимы лобби.
Самым трудным в работе с текстом оказался подсчёт слов. Фразы, в которых режимы пересчитаны, были рассыпаны по десяти переводам, причём примерно пятнадцать из них называют число только в китайском и арабском, где английский оригинал вообще не упоминает количества, — так что правка английского текста не поймала бы ни одной. Арабский к тому же не поддаётся замене слова: двойственное число там — грамматическая форма, а не слово, поэтому такие предложения переписывались целиком.
Теперь проверка выводит ответ, а не фиксирует его. Она требует по одному пункту правил на каждый играбельный режим в каждом языке и запрещает любой строке называть число режимов, отличное от текущего, — так что добавление режима роняет сборку, пока текст, который их считает, не обновят. Прежняя проверка утверждала конкретную фразу — так она и заморозила ровно ту ошибку, ради которой была написана.
