Псевдоперевод заменяет каждую строку узнаваемым фиктивным текстом. В языках с направлением слева направо каждая буква получает ударение, а сама строка расширяется внутри скобок: Сохранить изменения превращается в ⟦Šáṽé çĥáñĝéš··········⟧. В языках с направлением справа налево каждая строка разворачивается с переопределением направления, поэтому страница отображается справа налево еще до появления арабского или иврита.
На такой странице становятся заметны три проблемы:
- Обычный текст не взят из каталога: он вписан в код или формируется во время выполнения.
- Обрезанный текст не предусматривает место для более длинных языковых версий.
- Неподвижная верстка на странице с направлением справа налево использует термины «слева» и «справа» вместо «начало» и «конец».
Бесплатная доставка при любом заказе
Сохранить изменения⟦Сохранить изменения················⟧Цены включают налог.⟦Цены включают налог.················⟧
Бесплатная доставка при любом заказе
Сохранить измененияСохранить измененияЦены включают налог.Цены включают налог.
- Текст, не взятый из каталога/{locale}/ · p#promo · “Бесплатная доставка при любом заказе” · runtime_text (de-DE, ar-SA)
- Текст усечён при увеличении размера/{locale}/ · button#save · “⟦Сохранить изменения················⟧” · clipped_text (de-DE)
- Макет не отражает направление справа налево/{locale}/ · p#note · “padding-left: 12px” · unmirrored_layout (ar-SA)
Что показывают псевдолокализованные страницы: та же страница на немецком языке с удлинёнными строками и акцентированными буквами, а также на арабском — справа налево. Зонд отмечает текст, введённый в код; кнопка обрезает текст, а правило остаётся слева. Иллюстративные данные.
В проверке Глобализации
Когда в конфигурационном файле указано, как запустить приложение, Проверка Глобализации отображает свои страницы при каждом изменении и проверяет их. Она работает с копией изменений в собственной песочнице проверки, поэтому псевдоперевод никогда не попадает в ваш репозиторий или другие проверки:
- Она вписывает псевдоперевод для одного языка с направлением слева направо и одного — со направлением справа налево в проекте.
- Она устанавливает зависимости и запускает приложение.
- Она открывает все страницы обоих языков в браузере, настроенном на соответствующий язык, и считывает содержимое экрана.
- Она останавливает приложение и удаляет копию.
То, что она находит, становится результатами проверки:
| Код | То, что она находит |
|---|---|
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 останутся в исходном виде.