Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Начальная история"v9.7.103.11.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Плагин Prettier
prettier-plugin-intlayer упорядочивает ключи ваших переводов в фиксированном порядке при каждом форматировании файлов с помощью Prettier. Диффы остаются компактными, конфликты слияния возникают реже, а отсутствующую локаль легко заметить.
Копировать код в буфер обмена
Установка
Копировать код в буфер обмена
Требуется Prettier 3 или новее.
Если в вашем проекте уже используется Prettier, команда intlayer init prettier установит плагин и добавит его в вашу конфигурацию за вас.
Использование
Добавьте плагин в конфигурацию Prettier:
Копировать код в буфер обмена
Чтобы применять его только к файлам объявлений контента, используйте секцию переопределения (override):
Копировать код в буфер обмена
Что подвергается сортировке
t(): локали
Закрепленные локали идут первыми (en по умолчанию). Остальные локали следуют в алфавитном порядке.
Копировать код в буфер обмена
plural(): порядок CLDR
Категории располагаются от наименьшего количества к запасному варианту (fallback): zero, one, two, few, many, other.
Копировать код в буфер обмена
enu(): возрастающие пороговые значения
Условия сортируются по числу, затем по оператору (<1, <=1, 1, >=1, >1). Вариант fallback размещается в самом конце.
Копировать код в буфер обмена
Во время выполнения побеждает первое совпавшее условие. Плагин применяет новый порядок только в том случае, если каждое количество по-прежнему разрешается в один и тот же контент. Если порядок определяет итоговый результат, объект остается без изменений. Например, в { '<1': …, '<=-2.3': … } ключ '<1' перехватывает любое отрицательное число.
select(): по алфавиту
Варианты сортируются по алфавиту, а fallback идет последним.
Копировать код в буфер обмена
Без ключа fallback или other в качестве резервного варианта используется последний случай. Этот вариант остается в конце, а сортируются только предшествующие ему варианты.
Файлы .content.json
Сериализованная форма сортируется аналогичным образом: { "nodeType": "translation", "translation": { … } }, а также узлы plural, enumeration и select.
Ключи контента (по желанию)
При параметре intlayerSortContentKeys: true плагин также сортирует ключи content словаря по алфавиту на каждом уровне вложенности. Это относится только к файлам *.content.*.
Копировать код в буфер обмена
Сортировка продолжается сквозь каждую вспомогательную функцию (t, plural, enu, select, cond, gender, md, insert, nest, file…), чтобы добраться до внутренних объектов. Внутренняя карта ключей каждого хелпера сохраняет свой порядок. Ключи, переданные в cond() и gender(), никогда не переупорядочиваются, поскольку последний ключ является резервным вариантом. Поля, находящиеся на одном уровне с content (key, title, locale…), остаются как есть.
Опции
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Опция | По умолчанию | Описание |
|---|---|---|
intlayerPinnedLocales | ["en"] | Локали, сохраняемые первыми в t(), в указанном порядке. Передайте [], чтобы сортировать все локали. |
intlayerSortContentKeys | false | В файлах *.content.* также сортирует ключи контента словаря и вложенные объекты. |
Что остается без изменений
- Объекты, содержащие spread-оператор (
...base), вычисляемый ключ ([key]), метод или дублирующийся ключ. - Карты
plural()с ключом, не являющимся категорией CLDR. - Карты
enu(), где новый порядок изменил бы разрешенный контент. - Вызовы любых других функций с именами вспомогательных функций, но с аргументом, не являющимся объектом.
Комментарии перемещаются вместе с ключом, к которому они относятся.
Поддерживаемые парсеры
babel, babel-flow, babel-ts, typescript, flow, acorn, espree, meriyah, json, json5 и jsonc. Блоки <script> файлов Vue, Svelte и Astro форматируются с использованием этих парсеров.
Известное ограничение. Prettier запускает только один плагин на парсер. Если другой плагин также заменяет парсеры JavaScript/TypeScript (например,prettier-plugin-tailwindcss), к этим файлам будет применен только последний указанный плагин. Ограничьте область действияprettier-plugin-intlayerфайлами*.content.*с помощью override, чтобы избежать конфликта.
