Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Изменение языка интерфейса и контента в TEdgeBrowser на Delphi 11.3

Delphi , Интернет и Сети , Браузер

Введение

В данной статье мы рассмотрим, как изменить язык интерфейса и контента в компоненте TEdgeBrowser, который доступен в Delphi 11.3. Это может быть необходимо, если ваше приложение запускается на серверах с английской версией Windows, но вы хотите, чтобы интерфейс и контент отображались на другом языке.

Проблема

По умолчанию, TEdgeBrowser использует язык навигатора, соответствующий операционной системе сервера, что в случае английской версии Windows означает "en-US". Пользователь хочет изменить этот параметр, чтобы язык интерфейса и контента был другим.

Решение

Для изменения языка интерфейса и контента в TEdgeBrowser можно использовать свойство CoreWebView2EnvironmentOptions.Language. Однако, в текущей версии WebView2 есть известный баг, из-за которого это свойство не работает должным образом. В качестве альтернативы, можно вручную изменить HTTP-заголовок Accept-Language.

Шаги для изменения языка:

  1. Установите фильтр для события OnAfterCreation компонента TEdgeBrowser, чтобы разрешить обработку HTTP-запросов:
procedure TMiniBrowserFrm.WVBrowser1AfterCreated(Sender: TObject);
begin
  WVBrowser1.AddWebResourceRequestedFilter('*', COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL);
end;
  1. В обработчике события OnWebResourceRequested измените заголовок Accept-Language на желаемый:
procedure TMiniBrowserFrm.WVBrowser1WebResourceRequested(Sender: TObject; const AWebView: ICoreWebView2; const AArgs: ICoreWebView2WebResourceRequestedEventArgs);
var
  TempArgs: ICoreWebView2WebResourceRequestedEventArgs;
  TempRequestHeaders: ICoreWebView2HttpRequestHeaders;
begin
  TempArgs := AArgs;
  try
    TempArgs.Request.Get_Headers(TempRequestHeaders);
    TempRequestHeaders.SetHeader('Accept-Language', 'fr-FR');
  finally
    TempArgs.Free;
  end;
end;
  1. Установите язык интерфейса, используя свойство Language объекта GlobalWebView2Loader перед его запуском:
GlobalWebView2Loader.Language := 'fr-FR';
GlobalWebView2Loader.StartWebView2;

Важные замечания

  • Изменение языка может не отразиться на первой странице, если разработчики веб-сайта используют разные методы определения языка пользователя (например, через IP или через выбранный язык пользователем в настройках).
  • Некоторые веб-сайты могут использовать нестандартные способы определения языка, например, запрос к "Preferences" файлу, что может потребовать дополнительных действий, как было обнаружено в сообществе разработчиков WebView2.

Вывод

Изменение языка в TEdgeBrowser может потребовать дополнительных действий в связи с существующим багом. Однако, правильно настроив фильтры и заголовки запросов, вы сможете добиться желаемого результата. Это требует внимания к деталям и понимания того, как работает механизм определения языка на стороне веб-сервиса.

Создано по материалам из источника по ссылке.

Статья посвящена изменению языка интерфейса и контента в компоненте TEdgeBrowser для Delphi 11.3.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:40:25/0.0018990039825439/0