Локализация · тестированиеГенератор псевдолокализации

Превращает строки интерфейса в узнаваемо «чужие», но читаемые: за один прогон видно захардкоженные строки, будущее переполнение и обрезку. Подстановки не трогает. Всё считается в браузере.

Файл локализации никуда не уходит — преобразование идёт в браузере
01Строки02Результат03Что видно04Подстановки05Вопросы06Похожие
01

Строки интерфейса

Уровень

Диакритика, удлинение на 30 % и квадратные скобки по краям. Основной режим: ловит переполнение и обрезку разом.

Удлинение+30 %
02

Результат

ИсточникРезультат
Settings[Ŝéţţîñĝŝ ᐊᐊ]
Save changes[Ŝáṽé çĥáñĝéŝ ᐊᐊᐊᐊ]
Welcome, {name}[Ŵéļçöɱé, {name} ᐊᐊᐊ]
Delete %d files?[Ðéļéţé %d ƒîļéŝ? ᐊᐊᐊᐊ]
You have {count, plural, one {# message} other {# messages}}[Ýöû ĥáṽé {count, plural, one {# message} other {# messages}} ᐊᐊᐊ]
Read the <a href="/help">documentation</a>[Ŕéáð ţĥé <a href="/help">ðöçûɱéñţáţîöñ</a> ᐊᐊᐊᐊᐊᐊᐊ]
Price: 1&nbsp;299 ₽[Þŕîçé: 1&nbsp;299 ₽ ᐊᐊᐊᐊ]
Было
178
Стало
226
Рост
+27 %
Строк
7
03

Что видно за один прогон

Захардкоженные строки

Сигнал
Settings ← не преобразовано
Всё, что осталось обычным текстом, мимо системы локализации не проходит. Это находит то, чего не найдёт ни поиск по строкам, ни ревью: подписи в сторонних компонентах, тексты ошибок и подсказки, зашитые в код.

Будущее переполнение

Длина
+30 % · +60 %
Текст удлиняется искусственно, и контейнер ломается заранее — до того, как перевод заказан. Тридцать процентов покрывают типичный европейский язык, шестьдесят — тяжёлый случай вроде немецкого.

Обрезка и склейка

Границы
[ … ] ← маркеры
Маркеры начала и конца пропали — значит строку обрезали по длине или собрали конкатенацией из кусков. И то и другое ломается на первом же языке с другим порядком слов.

Проблемы кодировки

Шрифт
Ŝéţţîñĝŝ → ??????
Диакритика отображается прямоугольниками или знаками вопроса — значит шрифт не содержит нужных знаков или где-то потерялась кодировка. На латинице без диакритики этого не видно вовсе.
04

Защищённые конструкции

ФорматПримерГде встречается
{0}, {1}Файл {0} из {1}.NET, Java
{name}, {{count}}Привет, {name}i18next, Vue, Handlebars
ICU MessageFormat{count, plural, one {# файл} other {# файлов}}Полная поддержка вложенности
%s, %d, %1$sНайдено %d совпаденийC, PHP, Python
%(name)sПривет, %(name)sPython
<b>, <a href=…>Читайте <a href="/help">справку</a>Разметка внутри строк
&nbsp;, &amp;1&nbsp;299 ₽HTML-сущности
[[link]]См. [[Главная]]Вики-разметка

Разбор устроен токенизацией: строка делится на защищённые и преобразуемые куски до любых замен. Замена по регулярке рано или поздно съедает содержимое подстановки — и файл локализации перестаёт работать.

05

Частые вопросы

Техника, при которой строки интерфейса преобразуются в узнаваемо «чужой», но всё ещё читаемый вид: «Settings» становится «[!!! Ŝéţţîñĝŝ ᐊᐊᐊᐊ !!!]». Одним прогоном проверяется то, что иначе всплывает только после отправки на перевод. Применяется в Microsoft, Chrome и Firefox; в рунете инструмента почти нет.

Обновлено

«» добавлен в избранное