В данной статье мы рассмотрим, как изменить язык интерфейса и контента в компоненте TEdgeBrowser, который доступен в Delphi 11.3. Это может быть необходимо, если ваше приложение запускается на серверах с английской версией Windows, но вы хотите, чтобы интерфейс и контент отображались на другом языке.
Проблема
По умолчанию, TEdgeBrowser использует язык навигатора, соответствующий операционной системе сервера, что в случае английской версии Windows означает "en-US". Пользователь хочет изменить этот параметр, чтобы язык интерфейса и контента был другим.
Решение
Для изменения языка интерфейса и контента в TEdgeBrowser можно использовать свойство CoreWebView2EnvironmentOptions.Language. Однако, в текущей версии WebView2 есть известный баг, из-за которого это свойство не работает должным образом. В качестве альтернативы, можно вручную изменить HTTP-заголовок Accept-Language.
Шаги для изменения языка:
Установите фильтр для события OnAfterCreation компонента TEdgeBrowser, чтобы разрешить обработку HTTP-запросов:
procedure TMiniBrowserFrm.WVBrowser1AfterCreated(Sender: TObject);
begin
WVBrowser1.AddWebResourceRequestedFilter('*', COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL);
end;
В обработчике события OnWebResourceRequested измените заголовок Accept-Language на желаемый:
Изменение языка может не отразиться на первой странице, если разработчики веб-сайта используют разные методы определения языка пользователя (например, через IP или через выбранный язык пользователем в настройках).
Некоторые веб-сайты могут использовать нестандартные способы определения языка, например, запрос к "Preferences" файлу, что может потребовать дополнительных действий, как было обнаружено в сообществе разработчиков WebView2.
Вывод
Изменение языка в TEdgeBrowser может потребовать дополнительных действий в связи с существующим багом. Однако, правильно настроив фильтры и заголовки запросов, вы сможете добиться желаемого результата. Это требует внимания к деталям и понимания того, как работает механизм определения языка на стороне веб-сервиса.
Статья посвящена изменению языка интерфейса и контента в компоненте TEdgeBrowser для Delphi 11.3.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS