Многие, включая меня, предпочитают иметь двуязычный словарь проверки орфографии (spell-checking dictionary), так, чтобы "на лету" осуществлялась проверка вводимых как русских, так и английских слов безо всяких переключений. До версии Fx33.0 можно было установить такой словарь отсюда:
http://ftp.mozilla-russia.org/dictionaries/
(у меня был ru-us). Но в 34.0а2 этот словарь "отвалился". То есть формально он включен, но фактически не функционирует.
Однако, не взирая на сообщение "not available for...", двуязычный словарь можно взять здесь:
https://addons.mozilla.org/en-us/firefo … sian-dict/
Этот прекрасно работает.

Vladimir_S

До версии Fx33.0 можно было установить такой словарь отсюда:
http://ftp.mozilla-russia.org/dictionaries/
(у меня был ru-us). Но в 34.0а2 этот словарь "отвалился". То есть формально он включен, но фактически не функционирует.

Попробовал его исправить. Пробуйте.

Та-ак... ну вот те здрасьте! В бете 33.0b1 проверка орфографии вообще не пашет. Никакая, даже с дефолтным словарем. А в Авроре - нормально... Dntundr.gif

Нет, пардон - с дефолтным пашет. Просто пришлось вручную параметр выбора словаря править. А вот с двуязычными - не хочет.

Ох, нет - полный отбой! Установился kostolom'овский и работает. Похоже, имеет значение способ установки: начал я с попытки открытия заранее (на другом компе) скаченного файла расширения *.xpi - не катит. А вот при установке через АМО встал нормально. Чудеса...

Двуязычный словарь на addons.mozilla.org подчеркивает слова с буквой Е вместо Ё. Есть ли другие варианты двуязычных словарей, в которых нет строгого Ё для Firefox 61.0.2 x64?

Здесь не смотрели: https://addons.mozilla.org/ru/firefox/a … ish-spell/
В нём и ёжик есть, и ежик :)

Coroner пишет

Здесь не смотрели: https://addons.mozilla.org/ru/firefox/a … ish-spell/В нём и ёжик есть, и ежик

Спасибо, попробую.

Подскажите, пожалуйста, как удалить в англоязычной версии Firefox v65 x64 предустановленный англоязычный словарь?

Lamoboy пишет

Подскажите, пожалуйста, как удалить в англоязычной версии Firefox v65 x64 предустановленный англоязычный словарь?

1. Распаковываете Mozilla Firefox\omni.ja
2. Удаляете словарь (dictionaries\*.dic и dictionaries\*.aff)
3. Запаковываете распакованный omni.ja обратно, не забывая о присвоении архиву расширении .ja

4. Пробуете запустить браузер. Может быть будет работать.

Coroner пишет

4. Пробуете запустить браузер. Может быть будет работать.

Не работает, только что попробовал. В сети пишут, что раньше словари были в каталоге инстолированного Firefox и можно было их удалить, сейчас видимо не так все.
В firefox/browser/omni.ja больше файлов чем в firefox/omni.ja, в дополнение к способу выше попробовал взять оттуда файл language-dictionaries.json со списком словарей, удалить словарь, положить по такому же пути в исходный omni.ja и тоже не сработало.

31-01-2019 12:08:24
Вообще не понятно откуда словарь достается :) я же файлы словарей удалил. И даже профиль чистый заводил, чтобы проверить, что словарь не кэширован в профиле.

Нашел решение http://forums.mozillazine.org/viewtopic … #p14817276

1. распаковываем firefox/browser/omni.ja и достаем оттуда chrome/browser/content/browser/built_in_addons.json
2. в chrome/browser/content/browser/built_in_addons.json будет такой код:

Выделить код

Код:

{
    "dictionaries": {
        "en-US": "dictionaries/en-US.dic"
    },
    "system": [
        "formautofill@mozilla.org",
        "screenshots@mozilla.org",
        "webcompat-reporter@mozilla.org",
        "webcompat@mozilla.org"
    ]
}

из него удаляем "en-US": "dictionaries/en-US.dic" (словарь, у вам может быть с др. именем), получится:

Выделить код

Код:

{
    "dictionaries": {
        
    },
    "system": [
        "formautofill@mozilla.org",
        "screenshots@mozilla.org",
        "webcompat-reporter@mozilla.org",
        "webcompat@mozilla.org"
    ]
}

3. Кладем этот отредактированный файл по любому пути, например C:\built_in_addons.json
4. редактируем firefox/chrome.manifest из каталога установленного Firefox (не профиля), добавляем туда строку (новый путь к C:\built_in_addons.json):

Выделить код

Код:

override chrome://browser/content/built_in_addons.json C:\built_in_addons.json

5. Перезапустить Firefox, готово

Если не хотите распаковывать можете взять код из примера выше и просто скопировать в C:\built_in_addons.json, код полностью рабочий и это содержимое файла built_in_addons.json целиком.

Как распаковать omni.ja:
1. переименовываем omni.ja в omni.jar
2. распаковываем

Если у вас Windows для распаковки omni.ja можете использовать InfoZip's UnZip tool с этой страницы https://developer.mozilla.org/en-US/doc … _omni.jar), но думаю сработает любой архиватор.

Если вдруг интересно как запаковать, хотя это вам для инструкции выше не понадобится, то нужно запаковать все файлы, а не сам распакованный omni.ja выделив эти файлы и нажав "запаковать" в вашем архиваторе. Паковать в zip с максимальным сжатием, потом перенести в свое место и перезапустить Firefox. Если omni.ja будет с ошибками, то Firefox не запустится, поэтому делайте копию перед экспериментами. Итоговый перепакованный omni.ja будет отличаться размером и вроде бы даже форматом, но раз так советуют паковать на официальной странице Mozilla, и все работает, то кто я такой чтобы говорить, что что-то неправиль? :)

31-01-2019 13:03:02
UPD
При переустановке или обновлении Firefox возможно придется все проделывать заново.

UPD2 Важное дополнение о безопасности этого способа: https://forum.mozilla-russia.org/viewto … 39#p766739

О боже. Вот это работа! :)
Такое можно было бы и в FAQ добавить.

Я так понимаю, что отредактировав browser/built_in_addons.json путём замены "en-US": "dictionaries/en-US.dic" на ru-RU можно просто словарь на русский поменять, например (с добавлением своего словаря, конечно)?

Coroner
Не знаю, не факт, я видел там еще место, где прописан en-us. Возможно удаление этой строки приводит к тому, что код "падает" и перестает воспринимать словарь. Но если просто добавить что-то новое, то придется еще и добавить в список "пунктов меню словарей", см. файл omni.ja/defaults/settings/main/language-dictionaries.json. У него такое содержимое (тут кусок файла):

скрытый текст

Выделить код

Код:

{
            "schema": 1537961639183,
            "dictionaries": [
                "eo-EO@dictionaries.addons.mozilla.org"
            ],
            "id": "eo",
            "last_modified": 1539698844376
        },
        {
            "schema": 1537961639183,
            "dictionaries": [
                "@unitedstatesenglishdictionary"
            ],
            "id": "en-US",
            "last_modified": 1539698844315
        },
        {
            "schema": 1537961639183,
            "dictionaries": [
                "marcoagpinto@mail.telepac.pt"
            ],
            "id": "en-GB",
            "last_modified": 1539698844263
        },


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

Выделить код

Код:

manifest chrome/chrome.manifest
manifest components/components.manifest

А вот omni.js/components/components.manifest

скрытый текст

Выделить код

Код:

component {792a7e82-06a0-437c-af63-b2d12e808acc} WebContentConverter.js
contract @mozilla.org/embeddor.implemented/web-content-handler-registrar;1 {792a7e82-06a0-437c-af63-b2d12e808acc}
component {5d0ce354-df01-421a-83fb-7ead0990c24e} nsBrowserContentHandler.js application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/browser/clh;1 {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
component {47cd0651-b1be-4a0f-b5c4-10e5a573ef71} nsBrowserContentHandler.js application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/browser/final-clh;1 {47cd0651-b1be-4a0f-b5c4-10e5a573ef71} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=text/html {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=application/vnd.mozilla.xul+xml {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=image/svg+xml {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=text/rdf {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=text/xml {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=application/xhtml+xml {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=text/css {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=text/plain {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=image/gif {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=image/jpeg {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=image/jpg {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=image/png {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=image/bmp {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=image/x-icon {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=image/vnd.microsoft.icon {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
contract @mozilla.org/uriloader/content-handler;1?type=application/http-index-format {5d0ce354-df01-421a-83fb-7ead0990c24e} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
category command-line-handler m-browser @mozilla.org/browser/clh;1 application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
category command-line-handler x-default @mozilla.org/browser/final-clh;1 application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
category command-line-validator b-browser @mozilla.org/browser/clh;1 application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
component {eab9012e-5f74-4cbc-b2b5-a590235513cc} nsBrowserGlue.js
contract @mozilla.org/browser/browserglue;1 {eab9012e-5f74-4cbc-b2b5-a590235513cc}
category app-startup nsBrowserGlue service,@mozilla.org/browser/browserglue;1 application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110}
component {d8903bf6-68d5-4e97-bcd1-e4d3012f721a} nsBrowserGlue.js
contract @mozilla.org/content-permission/prompt;1 {d8903bf6-68d5-4e97-bcd1-e4d3012f721a}
component {9e9a9283-0ce9-4e4a-8f1c-ba129a032c32} devtools-startup.js
contract @mozilla.org/devtools/startup-clh;1 {9e9a9283-0ce9-4e4a-8f1c-ba129a032c32}
category command-line-handler m-devtools @mozilla.org/devtools/startup-clh;1
component {1060afaf-dc9e-43da-8646-23a2faf48493} aboutdebugging-registration.js
contract @mozilla.org/network/protocol/about;1?what=debugging {1060afaf-dc9e-43da-8646-23a2faf48493}
component {3a16d383-92bd-4c24-ac10-0e2bd66883ab} aboutdevtools-registration.js
contract @mozilla.org/network/protocol/about;1?what=devtools {3a16d383-92bd-4c24-ac10-0e2bd66883ab}
component {11342911-3135-45a8-8d71-737a2b0ad469} aboutdevtoolstoolbox-registration.js
contract @mozilla.org/network/protocol/about;1?what=devtools-toolbox {11342911-3135-45a8-8d71-737a2b0ad469}
component {dfcd2adc-7867-4d3a-ba70-17501f208142} aboutNewTabService.js
contract @mozilla.org/browser/aboutnewtab-service;1 {dfcd2adc-7867-4d3a-ba70-17501f208142}
component {ea4e1414-779b-458b-9d1f-d18e8efbc145} EnterprisePolicies.js process=main
contract @mozilla.org/browser/enterprisepolicies;1 {ea4e1414-779b-458b-9d1f-d18e8efbc145} process=main
component {dc6358f8-d167-4566-bf5b-4350b5e6a7a2} EnterprisePoliciesContent.js process=content
contract @mozilla.org/browser/enterprisepolicies;1 {dc6358f8-d167-4566-bf5b-4350b5e6a7a2} process=content
component {6F8BB968-C14F-4D6F-9733-6C6737B35DCE} ProfileMigrator.js
contract @mozilla.org/toolkit/profile-migrator;1 {6F8BB968-C14F-4D6F-9733-6C6737B35DCE}
component {47f75963-840b-4950-a1f0-d9c1864f8b8e} ChromeProfileMigrator.js
contract @mozilla.org/profile/migrator;1?app=browser&type=chrome-beta {47f75963-840b-4950-a1f0-d9c1864f8b8e}
component {7370a02a-4886-42c3-a4ec-d48c726ec30a} ChromeProfileMigrator.js
contract @mozilla.org/profile/migrator;1?app=browser&type=chrome-dev {7370a02a-4886-42c3-a4ec-d48c726ec30a}
component {4cec1de4-1671-4fc3-a53e-6c539dc77a26} ChromeProfileMigrator.js
contract @mozilla.org/profile/migrator;1?app=browser&type=chrome {4cec1de4-1671-4fc3-a53e-6c539dc77a26}
component {8cece922-9720-42de-b7db-7cef88cb07ca} ChromeProfileMigrator.js
contract @mozilla.org/profile/migrator;1?app=browser&type=chromium {8cece922-9720-42de-b7db-7cef88cb07ca}
component {91185366-ba97-4438-acba-48deaca63386} FirefoxProfileMigrator.js
contract @mozilla.org/profile/migrator;1?app=browser&type=firefox {91185366-ba97-4438-acba-48deaca63386}
category webextension-modules browser chrome://browser/content/ext-browser.json
category webextension-scripts c-browser chrome://browser/content/parent/ext-browser.js
category webextension-scripts-content browser chrome://browser/content/child/ext-browser-content-only.js
category webextension-scripts-devtools browser chrome://browser/content/child/ext-browser.js
category webextension-scripts-addon browser chrome://browser/content/child/ext-browser.js
component {d0c5195d-e798-49d4-b1d3-9324328b2291} pdfjs.js
contract @mozilla.org/streamconv;1?from=application/pdf&to=*/* {d0c5195d-e798-49d4-b1d3-9324328b2291}
contract @mozilla.org/streamconv;1?from=application/pdf&to=text/html {d0c5195d-e798-49d4-b1d3-9324328b2291}


А вот вроде бы более полезный для настройки omni.js/chrome/chrome.manifest
скрытый текст

Выделить код

Код:

content branding browser/content/branding/ contentaccessible=yes
content browser browser/content/browser/ contentaccessible=yes
content pocket browser/content/pocket/ contentaccessible=yes
skin browser classic/1.0 browser/skin/classic/browser/
skin pocket classic/1.0 browser/skin/classic/browser/pocket/
content webide webide/content/
skin webide classic/1.0 webide/skin/
content devtools-startup devtools-startup/content/
content devtools devtools/content/
skin devtools classic/1.0 devtools/skin/
locale branding en-US en-US/locale/branding/
locale browser en-US en-US/locale/browser/
locale browser-region en-US en-US/locale/browser-region/
locale devtools en-US en-US/locale/en-US/devtools/client/
locale devtools-shared en-US en-US/locale/en-US/devtools/shared/
locale devtools-startup en-US en-US/locale/en-US/devtools/startup/
locale pdf.js en-US en-US/locale/pdfviewer/
locale pocket en-US en-US/locale/en-US/
override chrome://global/content/license.html chrome://browser/content/license.html
override chrome://global/content/netError.xhtml chrome://browser/content/aboutNetError.xhtml
override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
override chrome://global/locale/netError.dtd chrome://browser/locale/netError.dtd
override chrome://mozapps/locale/downloads/settingsChange.dtd chrome://browser/locale/downloads/settingsChange.dtd
resource activity-stream browser/res/activity-stream/ contentaccessible=yes
resource search-plugins browser/searchplugins/
resource usercontext-content browser/content/ contentaccessible=yes
resource pdf.js pdfjs/content/
resource devtools devtools/modules/devtools/
resource devtools-client-jsonview resource://devtools/client/jsonview/ contentaccessible=yes
resource devtools-client-shared resource://devtools/client/shared/ contentaccessible=yes


Обратите внимание на строку resource search-plugins browser/searchplugins/, в новой версии Firefox создание каталога вручную перестало работать. Но возможно можно также переопределить путь к нему как в инструкции выше и все заработает? Потому что в omni.ja в этом каталоге лежат все те же xml файлы поисковых движков, что и раньше, к примеру yandex-ru.xml:
скрытый текст

Выделить код

Код:

<!-- This Source Code Form is subject to the terms of the Mozilla Public
   - License, v. 2.0. If a copy of the MPL was not distributed with this
   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Яндекс</ShortName>
<Description>Воспользуйтесь Яндексом для поиска в Интернете.</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">resource://search-plugins/images/yandex-ru.ico</Image>
<Url type="application/x-suggestions+json" method="GET" template="https://suggest.yandex.ru/suggest-ff.cgi">
  <Param name="part" value="{searchTerms}"/>
</Url>
<Url type="text/html" method="GET" template="https://yandex.ru/search" resultdomain="yandex.ru">
  <MozParam name="clid" condition="purpose" purpose="searchbar"   value="2186618"/>
  <MozParam name="clid" condition="purpose" purpose="keyword"     value="2186621"/>
  <MozParam name="clid" condition="purpose" purpose="contextmenu" value="2186623"/>
  <MozParam name="clid" condition="purpose" purpose="homepage"    value="2186617"/>
  <MozParam name="clid" condition="purpose" purpose="newtab"      value="2186620"/>
  <Param    name="text" value="{searchTerms}"/>
</Url>
<SearchForm>https://www.yandex.ru/</SearchForm>
</SearchPlugin>

UPD2. Важное дополнение к тому как удалить словарь по умолчанию (инструкция выше)!

В инструкции предлагается удалить словарь. Это ОК. Но ниже словаря есть список установленных расширений. Если для новой версии Firefox этот список изменится, а ваш измененный файл, которым вы подменили исходный останется тем же, то может быть ошибка. Хуже всего, что Firefox может работать даже с неправильной версией файла built_in_addons.json, так что при обновлении Firefox вы можете и не понять, что что-то не так. Firefox может использовать такие "системные" (system) расширения для закрытия дыр в безопасности. Если в списке такого расширения не будет, то Firefox может остаться уязвим.

Поэтому: нужно при любом обновлении Firefox распаковывать firefox/browser/omni.ja и проверять изменился файл chrome/browser/content/browser/built_in_addons.json или нет. Если изменился, то использовать новую версию.

wayo, спасибо за расследование. Как все сложно стало:rolleyes: Раньше достаточно было удалить файлы из папки и словарь пропадал, а тут столько телодвижений надо делать, да еще и после каждого обновления заново все повторять... Может можно, как-то, задать словарь по умолчанию, чтобы не переключать постоянно с английского на двуязычный?