Генератор нумеронимов

Преобразуйте слова в нумеронимы, оставляя первую и последнюю буквы и заменяя середину на её длину. Настраиваемая минимальная длина слова, необязательный перевод в нижний регистр, работает с целыми предложениями.

internationalization превращается в i18n, и всё остальное тоже. Введите слово или целое предложение. Каждое достаточно длинное слово сохраняет первую и последнюю буквы, а буквы между ними заменяются их количеством. Короткие слова остаются без изменений, чтобы результат оставался читаемым.

Как нумероним сжимает слово

Шаблон i18n

Нумероним — это слово, сокращённое с помощью числа. Разновидность, используемая в ПО, следует одному правилу: сохраните первую букву, сохраните последнюю букву и замените всё между ними количеством пропущенных символов. В internationalization между начальной i и конечной n восемнадцать букв, поэтому получается i18n. Accessibility даёт a11y, localization даёт l10n, а Kubernetes даёт k8s.

Эта традиция обычно ведётся от Digital Equipment Corporation 1980-х годов, где сотрудники так сокращали длинные внутренние термины, и она распространилась через open-source проекты, которым нужно было тысячи раз называть одни и те же неуклюжие понятия. Закрепилось, потому что это механически. В отличие от аббревиатуры, тут нечего придумывать и нечего запоминать: имея полное слово, каждый получает то же сокращение, а имея сокращение и контекст, читатель обычно восстанавливает слово.

Почему важна минимальная длина

Сжатие окупается только на длинных словах. Применение правила к «hello» даёт h3o, что экономит два символа и лишает узнаваемости. Хуже того, короткие нумеронимы постоянно сталкиваются: десятки распространённых пятибуквенных слов имеют ту же первую букву, последнюю букву и длину, так что сокращение перестаёт что-либо идентифицировать.

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

Где они помогают и где вредят

Нумеронимы хорошо работают как жаргон среди людей, уже разделяющих словарь. В команде по доступности a11y быстрее набирать и читать, чем полное слово, и значение никогда не вызывает сомнений. Они также делают хорошие идентификаторы: короткие, безопасные для ASCII, однозначные в рамках проекта и достаточно стабильные для имён пакетов, каталогов и ключей конфигурации.

Они не справляются с новичками и с поиском. Читатель, не встречавший термин, не может его раскрыть, и в отличие от аббревиатуры нет подсказки заглавными буквами, что вообще происходит сокращение. Экранные чтецы могут произносить a11y как последовательность, а не как слово, а поиск документации по «localization» не найдёт страницу, где всегда пишется только l10n. Практичный компромисс — тот, что уже использует хорошая документация: напишите полный термин первым, поставьте нумероним в скобках после него, а затем свободно используйте короткую форму.

Примечание об открытом ПО: реализовано на чистом JavaScript без сторонних библиотек.

FAQ

Что такое нумероним?
Слово, сокращённое с помощью числа. В ПО это означает сохранение первой и последней букв и замену середины количеством опущенных букв, как в i18n.
Почему internationalization пишется i18n?
Между начальной i и конечной n восемнадцать букв. То же правило даёт a11y для accessibility и l10n для localization.
Почему минимальная длина по умолчанию равна пяти?
Ниже этого сокращение почти ничего не экономит и сталкивается со многими другими словами. Пять сохраняет читаемость коротких слов, по-прежнему сокращая длинные.
Работает ли с акцентированными буквами и эмодзи?
Да. Подсчёт ведётся по кодовой точке Unicode, поэтому акцентированные символы считаются за одну букву, а эмодзи не разбиваются на фрагменты.
Что происходит с пунктуацией?
Пунктуация вокруг слова сохраняется, сокращаются только буквы, поэтому «accessibility,» сохраняет запятую и превращается в «a11y,».
Стоит ли использовать нумеронимы в коде?
Они нормально подходят как идентификаторы в проекте, уже разделяющем этот словарь. В документации сначала пишите полный термин и вводите нумероним в скобках.