WordLangSwitch (Переключение языка в Word)

Дополнение NVDA, которое автоматически переключает голос синтезатора при обнаружении помеченных изменений языка в Microsoft Word (а также в окне сообщений Outlook) – например, с нейтральными/естественными голосами (OneCore, SAPI 5).

Проблема

В интернете NVDA преобразует атрибуты lang в команды смены языка, и синтезатор подбирает соответствующий голос. В Word (при использовании доступа UIA, который включён по умолчанию для современных версий Office) язык, помеченный для каждого фрагмента текста, часто не передаётся, поэтому всё читается голосом по умолчанию.

Решение

Дополнение получает язык, указанный в документе, через объектную модель Word (Range.LanguageID), и передаёт его в данные чтения NVDA. Затем NVDA генерирует команды смены языка, и синтезатор переключает голоса – точно так же, как в интернете.

Требования

  1. NVDA 2023.1 или новее.
  2. В настройках речи NVDA должна быть включена опция «Автоматическое переключение языка (при поддержке)» (дополнительно также можно включить «Автоматическое переключение диалекта»).
  3. Синтезатор, поддерживающий переключение языка и имеющий голоса для нужных языков, например:
  4. Текст в документе Word должен быть правильно размечен с указанием языка (Рецензирование → Язык → Задать язык проверки).

Использование

Настройки (Параметры NVDA → «Word language switching»)

Примечания / поиск неисправностей

Сборка из исходных кодов

Дополнение собирается с помощью SCons, используя структуру проекта из текущего шаблона дополнений NVDA.

Необходимые компоненты:

Сборка:

uv sync
uv run scons

Эта команда создаёт файл wordLangSwitch-<версия>.nvda-addon в корневой папке. Выполните uv run scons pot, чтобы создать шаблон перевода (.pot).

Альтернативно, в вашем собственном окружении Python:

pip install scons Markdown
scons

Лицензия

Это дополнение распространяется по лицензии GNU General Public License версии 2 или более поздней (см. файл LICENSE).