Как узнать язык браузера?

general.useragent.locale возращает  chrome://global/locale/intl.properties

Вообще, должно работать.

Выделить код

Код:

Components.classes["@mozilla.org/preferences-service;1"]
    .getService(Components.interfaces.nsIPrefBranch)
    .getCharPref("general.useragent.locale"); // "ru"
Выделить код

Код:

Application.prefs.getValue("general.useragent.locale", null); // "ru"

chrome://global/locale/intl.properties похоже на nsIPrefBranch.getComplexValue() + nsIPrefLocalizedString.

general.useragent.locale не указывает на используемый язык интерфейса, лучше использовать:

Выделить код

Код:

Components.classes["@mozilla.org/chrome/chrome-registry;1"].
    getService(Components.interfaces.nsIXULChromeRegistry).getSelectedLocale("global");

p.s.: из своего опыта, если ваше расширение использует чтение или запись в general.useragent.locale, то оно не пройдёт валидацию при загрузке его на AMO