Новое в Symfony 5.2: Переводчик псевдо-локализации

Symfony 5.2 будет выпущен в ноябре 2020 года. Это первая статья из серии, в которой показаны наиболее важные новые функции, представленные этой версией Symfony.

На следующем изображении показано главное меню интерфейса популярного интернет-сервиса:

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

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

Например, «Настройки учетной записи» переводятся как [!!! Настройки аккаунта !!!]. Во-первых, исходный текст расширяется по длине такими символами, как [!!! !!!] для тестирования приложения при использовании более подробных языков, чем исходный. Это решает первую проблему.

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

В Symfony 5.2 добавили полную поддержку псевдо-локализации, чтобы помочь вам отлаживать проблемы интернационализации в ваших приложениях. Вы можете включить и настроить его в конфигурации транслятора:

# config/packages/translator.yaml
framework:
    translator:
        # ...
        pseudo_localization:
            # replace characters by their accented version
            accents: true
            # wrap strings with brackets
            brackets: true
            # controls how many extra characters are added to make text longer
            expansion_factor: 1.4
            # maintain the original HTML tags of the translated contents
            parse_html: true
            # also translate the contents of these HTML attributes
            localizable_html_attributes: ['title']

Вот и все. Приложение теперь начнет отображать это странное, но читаемое содержимое, чтобы помочь вам интернационализировать его. Посмотрите, например, разницу в приложении Symfony Demo. Это исходная страница:

И это та же страница с включенной псевдолокализацией: