Здравствуйте форумчане.

Положим у меня русскоязычный файрфокс (т.е. локаль браузера - ru-Ru), и я на него устанавливаю расширение, имющее только en-Us локализацию. В этом случае, очевидно, для данного расширения будет использоваться DTD от en-US.

Вопрос вот в чём - можно ли, и если можно - как, узнать, какую локаль использует расширение с данным ID? Заранее спасибо.

AllSeeingI
Странный какой-то вопрос... расширения не используют локаль браузера (точнее они берут сведения об текущей локали браузера и выбирается соответствующая локализация расширения). Если там нет русского, будет работать английская локализация расширения. Все локализации хранятся в самом расширении.

Тема перенесена из форума «Firefox» в форум «Разработка».

Если не найдется более прямого способа, видимо, придется читать chrome.manifest вручную (а если нужна поддержка старого формата, то и install.rdf). :|

Выделить код

Код:

var guid = "myextension@my.name";
var em = Components.classes["@mozilla.org/extensions/manager;1"]
	.getService(Components.interfaces.nsIExtensionManager);
var file = em.getInstallLocation(guid).getItemFile(guid, "chrome.manifest");

P.S. Насколько я помню, чем раньше объявлена локаль, тем она приоритетнее при отсутствии подходящей.

Для пакета можно узнать. Например, у меня для расширения Nightly Testers Tools 2.0.2

Выделить код

Код:

var cr = Components. classes ["@mozilla.org/chrome/chrome-registry;1"].
	 getService (Components. interfaces. nsIXULChromeRegistry);
alert (cr. getSelectedLocale ('nightly'));

даёт "en-US". Для других русифицированных и неотключенных, например 'stylish' - соответственно "ru-RU".

Anton пишет

Для пакета можно узнать.

Во! То что надо, спасибо Антон!