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. Это исходная страница:
И это та же страница с включенной псевдолокализацией: