diff options
author | Peter Bengtsson <mail@peterbe.com> | 2021-07-11 13:02:49 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-11 20:02:49 +0300 |
commit | 74f1c3c85cf4f0ff1cc631d1320ed90c404c6ed7 (patch) | |
tree | 2c73208a3ac6cea42c0aeedbf7d52d599688ea4c /files/ru/orphaned/создание_расширения/index.html | |
parent | ddda8bbbee128ba54ff6d3dd6a20a7d43debfb36 (diff) | |
download | translated-content-74f1c3c85cf4f0ff1cc631d1320ed90c404c6ed7.tar.gz translated-content-74f1c3c85cf4f0ff1cc631d1320ed90c404c6ed7.tar.bz2 translated-content-74f1c3c85cf4f0ff1cc631d1320ed90c404c6ed7.zip |
delete conflicting/orphaned docs in ru (#1426)
Diffstat (limited to 'files/ru/orphaned/создание_расширения/index.html')
-rw-r--r-- | files/ru/orphaned/создание_расширения/index.html | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/files/ru/orphaned/создание_расширения/index.html b/files/ru/orphaned/создание_расширения/index.html deleted file mode 100644 index 90197c6d9a..0000000000 --- a/files/ru/orphaned/создание_расширения/index.html +++ /dev/null @@ -1,275 +0,0 @@ ---- -title: Создание расширения -slug: orphaned/Создание_расширения -tags: - - Extensions -original_slug: Создание_расширения ---- -<h3 id=".D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5" name=".D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5">Введение</h3> - -<p>Этот краткий курс касается построения простейшего расширения для Firefox, которое будет добавлять в строку статуса надпись <em>"Hello, World!"</em>.</p> - -<div class="note"><strong>Примечание:</strong> Расширение создаваемое в этой статье не будет работать в версиях Firefox в которых нет статичной строки состояния (Firefox 4 и выше). Более релевантную статью вы можете найти в руководстве <a href="/ru/docs/XUL_School">Школьный учебник по XUL</a> в разделе <a href="/ru/docs/XUL_School/Getting_Started_with_Firefox_Extensions">Приступая к работе с расширениями Firefox</a>.</div> - -<h4 id=".D0.A7.D1.82.D0.BE_.D0.BD.D1.83.D0.B6.D0.BD.D0.BE_.D0.B7.D0.BD.D0.B0.D1.82.D1.8C_.D0.B4.D0.BB.D1.8F_.D0.BD.D0.B0.D1.87.D0.B0.D0.BB.D0.B0_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B" name=".D0.A7.D1.82.D0.BE_.D0.BD.D1.83.D0.B6.D0.BD.D0.BE_.D0.B7.D0.BD.D0.B0.D1.82.D1.8C_.D0.B4.D0.BB.D1.8F_.D0.BD.D0.B0.D1.87.D0.B0.D0.BB.D0.B0_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B">Что нужно знать для начала работы</h4> - -<p>Система разработки расширений спроектирована таким образом, что для начала разработки собственного расширения не требуется быть профессиональным программистом. Как бы то ни было, это программирование, поэтому желательно иметь некое представление о принципах работы компьютерных программ вообще и, в частности, быть знакомым с XML. Вообще желательно знание также JavaScript и CSS, однако в этой статье оно вам не понадобится.</p> - -<h3 id=".D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B5.D0.BA.D1.82.D0.B0_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F" name=".D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B5.D0.BA.D1.82.D0.B0_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F">Создание проекта расширения</h3> - -<p>Расширения состоят из нескольких файлов и для корректной его работы необходимо придерживаться определённых правил их расположения в директориях. Вот структура типичного расширения:</p> - -<pre class="eval">/myExtension: - /install.rdf - /components/* - /defaults/ - /defaults/preferences/*.js - /plugins/* - /chrome.manifest - /chrome/icons/default/* - /chrome/ - /chrome/content/ -</pre> - -<p>Впрочем, в вашем расширении необязательно должны быть все эти папки. Сейчас мы создадим схожий каркас для нашего расширения. Для начала создадим папку для его хранения (напр. <code>C:\extensions\my_extension\</code> для Windows или <code>~/extensions/my_extension/ для Unix/Linux</code>). Эта папка будет корневой. Создайте в ней подпапку chrome, а в последней - папку content.</p> - -<p>Теперь создайте в корневой папке 2 пустых файла: chrome.manifest и install.rdf.</p> - -<p>Итак, сейчас мы имеем такую структуру расширения:</p> - -<pre><ext path>/ - install.rdf - chrome.manifest - chrome/ - content/ -</pre> - -<p>Для облегчения дальнейшей разработки и тестирования рекомендуем <a href="/en/Setting_up_extension_development_environment">настроить Firefox для разработки расширения</a>.</p> - -<h3 id=".D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81.D0.BA.D1.80.D0.B8.D0.BF.D1.82.D0.B0_.28.22.D0.BC.D0.B0.D0.BD.D0.B8.D1.84.D0.B5.D1.81.D1.82.D0.B0.22.29_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B8" name=".D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81.D0.BA.D1.80.D0.B8.D0.BF.D1.82.D0.B0_.28.22.D0.BC.D0.B0.D0.BD.D0.B8.D1.84.D0.B5.D1.81.D1.82.D0.B0.22.29_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B8">Создание скрипта ("манифеста") установки</h3> - -<p>Откройте файл <code><a href="/en/Install_Manifests">install.rdf</a></code> в текстовом редакторе и поместите в него следующее:</p> - -<pre class="eval"><?xml version="1.0"?> - -<RDF xmlns="<span class="nowiki">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span>" - xmlns:em="<span class="nowiki">http://www.mozilla.org/2004/em-rdf#</span>"> - - <Description about="urn:mozilla:install-manifest"> - <em:id><strong><a class="link-mailto" href="mailto:sample@example.net" rel="freelink">sample@example.net</a></strong></em:id> - <em:version><strong>1.0</strong></em:version> - <em:type>2</em:type> - - <!-- Target Application this extension can install into, - with minimum and maximum supported versions. --> - <em:targetApplication> - <Description> - <em:id><strong>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</strong></em:id> - <em:minVersion><strong>1.5</strong></em:minVersion> - <em:maxVersion><strong>2.0.0.*</strong></em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name><strong>sample</strong></em:name> - <em:description><strong>A test extension</strong></em:description> - <em:creator><strong>Your Name Here</strong></em:creator> - <em:homepageURL><strong><span class="nowiki">http://www.example.com/</span></strong></em:homepageURL> - </Description> -</RDF> -</pre> - -<p>Как видите, этот файл имеет вид XML-файла. Полное описание необходимых и возможных параметров есть <a href="/en/Install_Manifests">здесь</a>, сейчас же отметим лишь, что этот файл предназначен для общего описания расширения, например, уникальный идентификатор расширения, его версию, имя, автора, информацию о совместимости и т.п. Назначение многих параметров понятно из их названия. Что необходимо знать сейчас:</p> - -<ul> - <li><strong><a class="link-mailto" href="mailto:sample@example.net" rel="freelink">sample@example.net</a></strong> - уникальный идентификатор вашего расширения. Это может быть адрес электронной почты (как здесь) или GUID. Обратите внимание, что адрес может быть несуществующим, главное, чтобы он был уникальным.</li> -</ul> - -<ul> - <li><strong>2</strong> - указывает, что это именно расширение (связано с тем, что такие же манифесты создаются для тем и плагинов).</li> -</ul> - -<ul> - <li><strong>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</strong> - идентификатор Firefox (конечно, он одинаковый для всех расширений).</li> -</ul> - -<ul> - <li><strong>1.5</strong> - минимальная версия Firefox, с которой будет работать ваше приложение. Обратите внимание, что указать здесь какой-либо номер не значит автоматически сделать расширение работающим с этой версией. Это лишь означает, что вы, как разработчик, утверждаете, что расширение будет работать с ней, а вот будет ли так, зависит только от вас.</li> -</ul> - -<ul> - <li><strong>2.0.0.*</strong> - максимальный номер версии Firefox. * означает, что включаются все версии, имеющие вид 2.0.0.x, где x - любое число.</li> -</ul> - -<h3 id=".D0.A0.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B1.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80.D0.B0_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_XUL" name=".D0.A0.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B1.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80.D0.B0_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_XUL">Расширение браузера с помощью XUL</h3> - -<p>Интерфейс Firefox написан на XUL и JavaScript. <a href="/ru/XUL" title="ru/XUL">XUL</a> - это язык, основанный на XML. Он отвечает за визуальную часть интерфейса. JavaScript реализует функциональность через привязку к действиям пользователя.</p> - -<p>Так как визуально браузер строится на XUL, то, следовательно, он весь представляется в виде XML-файла. Вы можете посмотреть на него (это будет полезно для чёткого понимания своих дальнейших действий). Зайдите в папку установки Firefox, откройте там папку chrome. В ней будет <code>browser.jar</code>. Несмотря на расширение, этот файл - обычный zip-архив. Внутри него вы найдёте файл <code>content/browser/browser.xul</code>. Открыв его, можно полюбоваться на общую структуру визуальной части браузера. Пусть вас не смущает большое количество непонятных пока строк - во всем разберётесь позже. Собственно, корневым узлом этого XML-файла является элемент <code>window</code>, содержащиеся в нем узлы - это отдельные элементы интерфейса. Например, вы можете найти кнопку обновления страницы (поищите узел с <code>id="reload-button"</code>) или пункт меню "Правка" (<code>id="edit-menu"</code>).</p> - -<p>Так вот, суть расширения интерфейса браузера состоит в том, что мы берём некий узел из браузера, описываем его в своём файле с необходимыми нам изменениями, например, добавляя к нему новые дочерние узлы. Таким образом можно добавить новые кнопки в панель инструментов (или создать новую панель и поместить её в нужное место), добавить новый пункт меню (как рядом со "Справкой" так и в подменю, скажем, "Инструменты" (Tools)). Это технология называется <a href="/en/XUL_Overlays">en:XUL Overlays</a>.</p> - -<p>В нашем случае мы добавим новый элемент в строку статуса. В файле <code>browser.xul</code> можно найти узел с <code>id="status-bar"</code>. Это и есть строка статуса. В этом узле есть несколько дочерних узлов. Добавим к ним наш, который будет описывать новую панель. Создайте файл, назовите его, скажем, <code><strong>sample.xul</strong></code> и поместите в папку <code>chrome/content</code>. Внесите туда такой код:</p> - -<pre class="eval"><?xml version="1.0"?> -<overlay id="sample" - xmlns="<span class="nowiki">http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</span>"> - <statusbar id="<strong>status-bar</strong>"> - <statusbarpanel id="my-panel" label="Hello, World"/> - </statusbar> -</overlay> -</pre> - -<p>Здесь <code><statusbar></code> с <code>id="status-bar"</code> является "точкой склейки" (merge point), т.е. узлом, который мы намереваемся изменить. <code><statusbarpanel></code> - новый виджет, который мы добавляем в <code><statusbar></code>.</p> - -<h3 id="URI_Chrome" name="URI_Chrome">URI Chrome</h3> - -<p>XUL-файлы (вроде того, который мы только что создали) загружаются через URI протокола chrome://. Вместо того, чтобы каждый раз определять место установки Firefox и загружать файлы через <code>file://</code>, можно загружать их через <code>chrome://</code>, не беспокоясь об их истинном положении на диске.</p> - -<p>Так, окно браузера, которое мы недавно просматривали, находится по адресу <code><a class="external" rel="freelink">chrome://browser/content/browser.xul</a></code>. Можете попробовать ввести его в адресную строку и посмотреть на результат.</p> - -<p>URI хрома состоит из нескольких частей:</p> - -<ul> - <li>протокол <code>chrome</code> говорит, что необходимо классифицировать и обработать содержимое файла как хром.</li> - <li>название пакета (в данном случае, это <code>browser</code>), указывающий на "свёрток" (bundle) компонентов интерфейса. Это название уникально для каждого приложения/расширения.</li> - <li>тип запрашиваемых данных. Есть три типа: <code>content</code> (XUL, JavaScript, XBL Bindings и др., т.е. компоненты, формирующие вид и поведение интерфейса), <code>locale</code> (DTD, файлы propeties и т.п., производящие локализацию интерфейса) и <code>skin</code> (CSS и изображения для формирования темы интерфейса).</li> - <li>файл для загрузки.</li> -</ul> - -<p>Так, например, <code><a class="external" rel="freelink">chrome://foo/skin/bar.png</a></code> загружает файл <code>bar.png</code> из секции <code>skin</code> пакета <code>foo</code>.</p> - -<h3 id=".D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BC.D0.B0.D0.BD.D0.B8.D1.84.D0.B5.D1.81.D1.82.D0.B0_chrome" name=".D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BC.D0.B0.D0.BD.D0.B8.D1.84.D0.B5.D1.81.D1.82.D0.B0_chrome">Создание манифеста chrome</h3> - -<p>Для хорошего понимания манифеста просмотрите статью <a href="/en/Chrome_Manifest">en:Chrome Manifest</a></p> - -<p>Откройте <code>chrome.manifest</code>, созданный нами ранее и добавьте в него следующее:</p> - -<pre class="eval">content sample chrome/content/ -</pre> - -<p><strong>Не забудьте завершающий слеш.</strong></p> - -<p>Эта строка объявляет</p> - -<ol> - <li>тип данных в пакете chrome,</li> - <li>название пакета (используйте лишь строчные буквы),</li> - <li>путь к файлам пакета.</li> -</ol> - -<p>Таким образом, здесь мы говорим, что файлы типа <code>content</code> для пакета <code>sample</code> можно найти в <code>chrome/content</code> (путь относительно местоположения <code>chrome.manifest</code>).</p> - -<p>Сохраните файл. Позже, при запуске Firefox, пакет <code>chrome</code> вашего расширения будет зарегистрирован с помощью этого файла.</p> - -<h3 id=".D0.A0.D0.B5.D0.B3.D0.B8.D1.81.D1.82.D1.80.D0.B0.D1.86.D0.B8.D1.8F_.D0.BE.D0.B2.D0.B5.D1.80.D0.BB.D0.B5.D1.8F" name=".D0.A0.D0.B5.D0.B3.D0.B8.D1.81.D1.82.D1.80.D0.B0.D1.86.D0.B8.D1.8F_.D0.BE.D0.B2.D0.B5.D1.80.D0.BB.D0.B5.D1.8F">Регистрация оверлея</h3> - -<p>Для того, чтобы Firefox понял, что у нас есть оверлей и мы хотим наложить его на окно браузера, необходимо зарегистрировать оверлей через все тот же chrome.manifest. Добавляем в него строку</p> - -<pre class="eval">overlay <a class="external" rel="freelink">chrome://browser/content/browser.xul</a> <a class="external" rel="freelink">chrome://sample/content/sample.xul</a> -</pre> - -<p>Это говорит Firefox, что нужно объединить <code>sample.xul</code> и <code>browser.xul</code></p> - -<h3 id=".D0.A2.D0.B5.D1.81.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5" name=".D0.A2.D0.B5.D1.81.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5">Тестирование</h3> - -<p>Для начала необходимо уведомить Firefox о нашем расширении. Раньше (ещё во времена Firefox 1.0) необходимо было упаковать расширение как <a href="/en/XPI">en:XPI</a> и установить через интерфейс браузера. Теперь же достаточно просто указать Firefox, где находится папка с вашим расширением - и он будет подключать его каждый раз при загрузке.</p> - -<p>Итак, ваши действия:</p> - -<ol> - <li>Найдите папку с вашим профилем. Если вы не создавали его специально, браузер использует профиль по умолчанию.<br> - <a class="external" href="http://kb.mozillazine.org/Profile_folder">Как найти папку с профилем.</a></li> - <li>Откройте папку <code>extensions</code>. Если её нет, создайте её.</li> - <li>Создайте новый текстовый файл и поместите в него лишь путь к вашему расширению (напр., <code>C:\extensions\my_extension\</code> для Windows или <code>~/extensions/my_extension/</code> для Unix/Linux). Сохраните файл под именем, одинаковым с <code>id</code> вашего расширения.</li> -</ol> - -<p><strong>Примечания:</strong></p> - -<ul> - <li>Не забудьте завершающий слеш.</li> - <li>Возможно возникновение проблем из-за знаков нижнего подчёркивания в названии; если так вышло измените его.</li> -</ul> - -<p>Теперь вы готовы к тестированию вашего расширения. Запустите Firefox. Он увидит ссылку к вашему расширению и установит его. Если все прошло успешно, вы увидите надпись "Hello, World!" в строке статуса справа. Для внесения изменений достаточно править <code>xul</code>-файлы и перезапустить Firefox.</p> - -<h3 id=".D0.A3.D0.BF.D0.B0.D0.BA.D0.BE.D0.B2.D0.BA.D0.B0_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F" name=".D0.A3.D0.BF.D0.B0.D0.BA.D0.BE.D0.B2.D0.BA.D0.B0_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F">Упаковка расширения</h3> - -<p>Теперь можно упаковать расширение для его дальнейшего распространения и установки.</p> - -<p>Создайте zip-архив из содержания корневой папки вашего расширения (но не архивируйте саму папку). Переименуйте файл, чтобы он имел расширение <code>".xpi"</code>. Вот и все. Для установки достаточно перетащить файл на окно браузера.</p> - -<h4 id=".D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D1.81_.D0.B2.D0.B5.D0.B1-.D1.81.D1.82.D1.80.D0.B0.D0.BD.D0.B8.D1.86.D1.8B" name=".D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D1.81_.D0.B2.D0.B5.D0.B1-.D1.81.D1.82.D1.80.D0.B0.D0.BD.D0.B8.D1.86.D1.8B">Установка с веб-страницы</h4> - -<p>Есть несколько способов это сделать. Можно разместить прямую ссылку на <code>xpi</code>-файл. Однако предпочтительным является <a href="/en/Installing_Extensions_and_Themes_From_Web_Pages">InstallTrigger method</a>, как более удобный для пользователей.</p> - -<h4 id=".D0.A1.D0.B0.D0.B9.D1.82_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D0.B9_addons.mozilla.org" name=".D0.A1.D0.B0.D0.B9.D1.82_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D0.B9_addons.mozilla.org">Сайт расширений addons.mozilla.org</h4> - -<p>Сайт расширений Mozilla (<a class="external" href="http://addons.mozilla.org" rel="freelink">http://addons.mozilla.org</a>) является местом, где вы можете бесплатно разместить своё расширение. Сайт является надёжным и удобным местом для распространения своих расширений: достаточно лишь зарегистрироваться - и вы сможете загружать свои файлы на сервер.</p> - -<h4 id=".D0.A0.D0.B5.D0.B3.D0.B8.D1.81.D1.82.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F_.D0.B2_.D1.80.D0.B5.D0.B5.D1.81.D1.82.D1.80.D0.B5_Windows" name=".D0.A0.D0.B5.D0.B3.D0.B8.D1.81.D1.82.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F_.D0.B2_.D1.80.D0.B5.D0.B5.D1.81.D1.82.D1.80.D0.B5_Windows">Регистрирование расширения в реестре Windows</h4> - -<p>В Windows информация о расширении может быть добавлена в реестр. Это даёт дополнительный возможности при установке расширений. Подробнее об этом читайте здесь.</p> - -<h3 id=".D0.A3.D0.B7.D0.BD.D0.B0.D0.B9.D1.82.D0.B5_.D0.B1.D0.BE.D0.BB.D1.8C.D1.88.D0.B5_.D0.BE.D0.B1_.D0.BE.D0.B2.D0.B5.D1.80.D0.BB.D0.B5.D1.8F.D1.85_XUL" name=".D0.A3.D0.B7.D0.BD.D0.B0.D0.B9.D1.82.D0.B5_.D0.B1.D0.BE.D0.BB.D1.8C.D1.88.D0.B5_.D0.BE.D0.B1_.D0.BE.D0.B2.D0.B5.D1.80.D0.BB.D0.B5.D1.8F.D1.85_XUL">Узнайте больше об оверлеях XUL</h3> - -<p>В настоящем руководстве была затронута лишь крохотная часть всех возможностей модифицирования интерфейса с помощью XUL. Чтобы узнать больше, смотрите <a href="/ru/XUL" title="ru/XUL"> документацию XUL</a>.</p> - -<h3 id=".D0.9B.D0.BE.D0.BA.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F" name=".D0.9B.D0.BE.D0.BA.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F">Локализация</h3> - -<p>Для поддержки более чем одного языка необходимо отделить локализуемые строки от основного содержания с помощью сущностей (entities) и "свёртков строк" (string bundles). Гораздо проще делать это в течение разработки расширения, чем после.</p> - -<p>Информация о локализации хранится в подпапке <code>locale</code> папки chrome (т.е. рядом с папкой <code>content</code>). В этой папке необходимо разместить столько папок, сколько локализаций вы намерены сделать. Обычной практикой является называть папки стандартными названиями локалей: скажем, папку с английской локализацией - <code>en-US</code>, русской - <code>ru-RU</code> и т.п., что, впрочем, не является обязательным. Теперь создайте в каждой из папок файл <code>somename.ent</code> (или <code>anothername.dtd</code>) (<em>имя одинаково во всех папках локализаций</em>) и заполните его соответствующим образом (показано ниже).</p> - -<p>Локализуем наше расширение на русский и английский языки. После создания 2 папок (назовём их <code>ru-RU</code> и <code>en-US</code>), создаём в каждой из них файл (пусть <code>myStatusBar.ent</code>) Поместите в тот файл, который в папке с английской локализацией, следующую строку:</p> - -<pre class="eval"><!ENTITY statusbarpanel.label "Hello, World!"> -</pre> - -<p>А в тот, который будет локализовать на русский язык, соответственно</p> - -<pre class="eval"><!ENTITY statusbarpanel.label "Привет, мир!"> -</pre> - -<p>Сохраните оба файла. Теперь необходимо зарегистрировать локализации. Для этого добавим в <code>chrome.manifest</code> следующие строки:</p> - -<pre class="eval">locale sample en-US chrome/locale/en-US/ -locale sample ru-RU chrome/locale/ru-RU/ -</pre> - -<p>Теперь для использования локализации достаточно добавить в начало (однако после <code>xml</code>-объявления) <code>xul</code>-файла строку</p> - -<pre class="eval"><!DOCTYPE window SYSTEM "<a class="external" rel="freelink">chrome://sample/locale/myStatusBar.ent</a>"> -</pre> - -<p>где <code>window</code> - это названия корневого элемента <code>xul</code>-документа (в нашем случае это <code>overlay</code>).</p> - -<p>Для использования сущностей измените ваш <code>xul</code>-файл так, чтобы атрибут <code>label</code> у новой <code>statusbarpanel</code> был равен <code>"&statusbarpanel.label;"</code>.</p> - -<h3 id=".D0.98.D1.81.D1.81.D0.BB.D0.B5.D0.B4.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B1.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80.D0.B0" name=".D0.98.D1.81.D1.81.D0.BB.D0.B5.D0.B4.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B1.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80.D0.B0">Исследование браузера</h3> - -<p>Гораздо более простым (и эффективным) способом исследования браузера является использование <em>DOM Inspector'а</em>. Он позволяет полностью изучить структуру документа, загруженного в браузер. Так, например, можно загрузить вышеописанным способом <code>browser.xul</code>, просмотреть все его узлы и найти подходящий для наложения оверлея. Или же можно просматривать структуру своего расширения.</p> - -<h3 id=".D0.9E.D1.82.D0.BB.D0.B0.D0.B4.D0.BA.D0.B0_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D0.B9" name=".D0.9E.D1.82.D0.BB.D0.B0.D0.B4.D0.BA.D0.B0_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D0.B9">Отладка расширений</h3> - -<p><strong>Инструменты для анализа расширений</strong></p> - -<ul> - <li><a href="/en/DOM_Inspector">en:DOM Inspector</a></li> - <li><a href="/en/Venkman">en:Venkman</a> - установка точек прерываний и просмотр стеков вызова</li> - <li><code><a href="/en/Core_JavaScript_1.5_Reference/Objects/Function/arguments/callee">arguments.callee</a>.<a href="/en/Core_JavaScript_1.5_Reference/Objects/Function/caller">caller</a></code> в JavaScript - доступ к стеку функций</li> -</ul> - -<p><strong>Отладочная распечатка</strong></p> - -<ul> - <li><code><a href="/en/DOM/window.dump">dump</a>("string")</code></li> - <li><code><a href="/en/nsIConsoleService">en:nsIConsoleService</a></code></li> -</ul> - -<h3 id=".D0.94.D0.BE.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D1.8F" name=".D0.94.D0.BE.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D1.8F">Дополнительная информация</h3> - -<ul> - <li><a href="/en/Extension_FAQ">en:Extension FAQ</a></li> - <li><a href="/ru/Расширения" title="ru/Расширения">Extensions</a></li> -</ul> |