Документация

Псевдо-Локализация

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

Псевдоперевод заменяет каждую строку узнаваемым фиктивным текстом. В языках с направлением слева направо каждая буква получает ударение, а сама строка расширяется внутри скобок: Сохранить изменения превращается в ⟦Šáṽé çĥáñĝéš··········⟧. В языках с направлением справа налево каждая строка разворачивается с переопределением направления, поэтому страница отображается справа налево еще до появления арабского или иврита.

На такой странице становятся заметны три проблемы:

  • Обычный текст не взят из каталога: он вписан в код или формируется во время выполнения.
  • Обрезанный текст не предусматривает место для более длинных языковых версий.
  • Неподвижная верстка на странице с направлением справа налево использует термины «слева» и «справа» вместо «начало» и «конец».
немецкий · псевдоперевод/de-DE/
Ваша корзина⟦Ваша корзина··········⟧

Бесплатная доставка при любом заказе

Сохранить изменения⟦Сохранить изменения················⟧

Цены включают налог.⟦Цены включают налог.················⟧

арабский · псевдоперевод/ar-SA/
Ваша корзина‮Ваша корзина‬

Бесплатная доставка при любом заказе

Сохранить изменения‮Сохранить изменения‬

Цены включают налог.‮Цены включают налог.‬

Что обнаружила проверка
  1. Текст, не взятый из каталога/{locale}/ · p#promo · “Бесплатная доставка при любом заказе” · runtime_text (de-DE, ar-SA)
  2. Текст усечён при увеличении размера/{locale}/ · button#save · “⟦Сохранить изменения················⟧” · clipped_text (de-DE)
  3. Макет не отражает направление справа налево/{locale}/ · p#note · “padding-left: 12px” · unmirrored_layout (ar-SA)

Что показывают псевдолокализованные страницы: та же страница на немецком языке с удлинёнными строками и акцентированными буквами, а также на арабском — справа налево. Зонд отмечает текст, введённый в код; кнопка обрезает текст, а правило остаётся слева. Иллюстративные данные.

В проверке Глобализации

Когда в конфигурационном файле указано, как запустить приложение, Проверка Глобализации отображает свои страницы при каждом изменении и проверяет их. Она работает с копией изменений в собственной песочнице проверки, поэтому псевдоперевод никогда не попадает в ваш репозиторий или другие проверки:

  1. Она вписывает псевдоперевод для одного языка с направлением слева направо и одного — со направлением справа налево в проекте.
  2. Она устанавливает зависимости и запускает приложение.
  3. Она открывает все страницы обоих языков в браузере, настроенном на соответствующий язык, и считывает содержимое экрана.
  4. Она останавливает приложение и удаляет копию.

То, что она находит, становится результатами проверки:

КодТо, что она находит
runtime_textВидимый текст без псевдометок
clipped_textПсевдотекст, обрезанный рамкой, с overflow скрытым или многоточием
unmirrored_layoutНа странице с направлением справа налево: страница, не ориентированная справа налево, текст, выровненный или размещенный слева или справа, либо элемент, отступленный, с отступами или padding слева или справа

Один и тот же текст, найденный в обоих языках, — это один результат. Результаты отображаются в поле задачи Найденные проблемы , где указаны страница, элемент, текст и языки, например /{locale}/ · p#promo · “Free shipping on every order” · runtime_text (de-DE, ar-SA).

О них сообщается, но они ничего не блокируют, пока вы сами не решите иное. В разделе Quality Control → Глобализация, Отображение страниц отключает этот шаг, а Проблемы со страницами, требующие возврата изменений на доработку определяет, какие коды вызывают блокировку.

Приложение, которое не устанавливается или не запускается, помечается как неотображенное, с указанием его вывода, а не как корректно отображенное. Изменение сохраняется только если вы разрешите блокировку проблем со страницами.

Настроить его

Добавьте world.render в .coroid/i18n.json:

{
  "world": {
    "render": {
      "start": "npm run dev",
      "pages": ["/{locale}/", "/{locale}/pricing", "/{locale}/checkout"]
    }
  }
}
ПолеЗначение
startЗапускает приложение. Оно должно прослушивать порт, указанный в $PORT; HOST имеет значение 127.0.0.1
pagesДо десяти путей относительно корня приложения. {locale} превращается в тег языка, поэтому /{locale}/pricing открывает /de-DE/pricing; используйте /?lang={locale} , если язык передается через параметр запроса
directoryПапка приложения в репозитории, если она не является корневой
installКоманда для установки зависимостей. Без неё Coroid запускает npm, когда в package.json указаны любые параметры
localesДо трех целевых языков для отображения. Если параметр не указан, используются первый язык слева направо и первый язык справа налево.
readyTimeoutMsВремя ожидания ответа от приложения, по умолчанию — 120 000 мс

Браузер также отправляет каждый язык как предпочтительный, поэтому приложение, определяющее язык по данным браузера, работает без {locale}.

Для этого поля требуется CLI версии 1.16.0 или новее в разделе конфигурации cli фиксации; более старая версия движка не примет такую конфигурацию.

Что не учитывается

Проверка учитывает только то, что видит пользователь. Она игнорирует скрытые элементы, код (code, pre, kbd, samp), собственные значения полей форм и элементы с пометкой translate="no", aria-hidden="true", data-i18n-ignore или с классом notranslate. Слова из списка world.allow в конфигурации, например названия продуктов, никогда не учитываются как обычный текст.

Текст, взятый из ваших данных, например названия продуктов или пользовательский контент, также не переводится каталогом. Пометьте его контейнер translate="no" или data-i18n-ignore, что также предотвращает перевод инструментами браузера.

Попробуйте сами

Псевдоперевод входит в состав инструмента командной строки. Запустите его в отдельной временной копии проекта, так как он заменяет существующие переводы языка:

coroid-i18n pseudo --locale de-DE                # accented and longer
coroid-i18n pseudo --locale ar-SA                # reversed, right to left
coroid-i18n pseudo --locale de-DE --style rtl    # choose the style yourself

Затем запустите приложение и откройте его страницы на этом языке. Местозаполнители, формы множественного числа и разметка останутся без изменений, поэтому приложение будет работать как обычно. Страницы Markdown и MDX останутся в исходном виде.