>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Подскажите как перевести расширение на голом JS http://forum.mozilla-russia.org/viewtopic.php?id=59615 |
Dadom > 07-07-2013 13:28:25 |
Не могу найти готового примера и знаний не хватает.... Для примера дополнение Capture & Print https://addons.mozilla.org/ru/firefox/a … ure-print/ Все текстовые строки там в файле JS.... Причем там же строки типа "Services.prompt.alert(window,addon.name,'Area is now available on the clipboard.');" т.е. если даже в install.rdf поменять имя на русское (ну надо), то тоже все ломается, видимо из-за этого "addon.name" Или еще такой вот кусок: Выделить код Код:gNavToolbox.palette.appendChild(e('toolbarbutton',{ id:m,label:addon.name,class:'toolbarbutton-1', tooltiptext:addon.name+'\n' + 'LMB: Capture Area to Printer.\n' + 'MMB: Capture Whole Page to Clipboard.\n' + 'RMB: Capture Visible Area to Clipboard.', Мозгов не хвататет, как это локализовать.... Разумеется, простой перевод строк и сохранение в UTF-8 не помогает как в других расширениях... ( |
hydrolizer > 08-07-2013 11:16:56 |
Взят неудачный пример - в нем вообще нет поддержки локализации. Сейчас джетпаки уже могут работать со стандартным механизмом локализации через string bundles. Теорию можете посмотреть здесь, в качестве практического примера можно взять ABP. |
Dadom > 08-07-2013 12:24:57 |
hydrolizer пишет
Взят неудачный ответ Интересует как раз локализация дополнения в котором "вообще нет поддержки локализации".. Документ по ссылке читал ранее, но не смог разобраться и написал сюда.. |
hydrolizer > 08-07-2013 13:32:13 |
Dadom |
Dadom > 08-07-2013 15:25:48 |
hydrolizer пишет
Спрашиваю потому, что не могу САМ сделать... В тексте по ссылке мож и есть ответ, но не владея JS повторить не получается... |
hydrolizer > 08-07-2013 16:30:18 |
Dadom где locale_id - идентификатор локали (см.выше), chrome_package_name - имя chrome package расширения (произвольное удобочитаемое). Выделить код Код:let stringBundle = Services.strings.createBundle("chrome://chrome_package_name/locale/имя_файла.properties"); var myStr = stringBundle.GetStringFromName("имя_строки"); Ввиду бага 719376 у джетпаков следует делать как-то так: Выделить код Код:let stringBundle = Services.strings.createBundle("chrome://adblockplus/locale/global.properties?" + Math.random()); Utils.getString = function(name) { return stringBundle.GetStringFromName(name); } return Utils.getString(name); (взято из кода ABP). |
Dadom > 08-07-2013 18:20:34 |
Ниасилил.... ( Все-равно не понятно как из текста JS ... с помощью Выделить код Код:let stringBundle = Services.strings.createBundle("chrome://chrome_package_name/locale/имя_файла.properties"); var myStr = stringBundle.GetStringFromName("имя_строки"); превратить в До 4 пункта-то понятно, а потом..... нужно уметь писать на JS.... ) Выделить код Код:addon.name+'\n' + 'LMB: Capture Area to Printer.\n' + 'MMB: Capture Whole Page to Clipboard.\n' + 'RMB: Capture Visible Area to Clipboard.', Сколько тут переменных корячить? Чувствую себя уродом.. ) |
hydrolizer > 09-07-2013 06:41:19 |
Dadom пишет
Чего ж тут уметь? в коде: Выделить код Код:let stringBundle = Services.strings.createBundle("chrome://my_extension/locale/my_extension.properties"); .... var myStr = stringBundle.GetStringFromName("some.message"); Services.prompt.alert(null, "my extension", myStr); результат: |
Dadom > 09-07-2013 15:20:10 |
hydrolizer пишет
Так на пианино тоже просто играть! Просто нажимай нужные клавиши в нужное время... (с) Не работает... ( В chrome.manifest строка В chrome\locale\ru\captureandprint.properties В начале файла JS Выделить код Код:let stringBundle = Services.strings.createBundle("chrome://captureandprint/locale/captureandprint.properties"); Позже в файле этом же файле вместо вписал В итоге, дополнение устанавливается, виднО в списке установленных дополнений, но нет нужной кнопки панели инструментов в списке доступных.... |