Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№116-09-2012 03:06:26

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Seamonkey 2.12

[CB] Context translate

Добавляет пункты в контекстное меню.
Работает в [firefox] и [seamonkey] (после установки требуется перезапуск браузера). В [seamonkey] замечена проблема: перевод в окне раскрывается на весь экран, так что закрывать приходится через панель задач. Проблема наблюдается не у всех.
При выделенном тексте предлагает перевод выделенного разными переводчиками и с разным способом вывода.
При отсутствии выделения предлагает перевести страницу различными переводчиками как в текущей так и в новой вкладке.
Создана okkamas_knife, здесь с косметическими изменениями.

скриншоты
меню без выделения
PKMNOSEL.PNG
меню с выделением
PKMSEL.PNG
перевод с заменой выделенного текста
PKMZ.PNG
перевод в окошке, гугл
PKMG.PNG
перевод выделенного слова - яндекс
PKMYA.PNG
остальные варианты открываются в новой вкладке

скрытый текст
Код кнопки:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EContext%20translate%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAABv0lEQVR42o3TPWhTYRTG8efeLIZaEW1LKBQ3Fb8QwdqpWupQUGh1qILoIi7qUBoQQ10dpMVBSidTyNSh6uAi4mBAUdStiB+LNC6iUqFSIrd6n79DSHtvSUKHM7wv5/w4L+e8ArQxjlmMIgqIIuK5RcWiUW764J20O8NBizOIm4gS4rXFD4t4WfAhDSWKB5D3kHEbuxwyZHHDYg7x3uJPJLwoeCEoD5ACQo8hX0DSpoK5Lng7yRogTyFPbB6YzsKD4RogPyHwIwKXaglcXW+vXgDi3094VUASvhbCTH8d+EjgBQK/WU/eCNi1++q3GtAf4PHdeP4e0mqVMFpB0TKKlhoDiTvPF/H+Dnx0Kz7Vi1SB4IvRJ6MFmgN3HsPlaXwijzsPQ1sHbOtEKkPw1AQPjYq07uD8LO4ex+EI6CSoD6kEmjG6bTQGGoFWT2DfJOzIQ8/1xBgLRleMToMOQDYLKWAlTiOFl+lF0iWjIaNDJtgOOcGgWJv7Yu4v1bO/ifPf8d1Kk1U+YpQz2YzZKxhOAO8EvxQTdy/hc00AQOEW0yXTKxhNAGXBV5lVRVgtgHocl7koc0twX+aZzGfR8Dv/B7E8d2gwtTBzAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20mainicon%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAABv0lEQVR42o3TPWhTYRTG8efeLIZaEW1LKBQ3Fb8QwdqpWupQUGh1qILoIi7qUBoQQ10dpMVBSidTyNSh6uAi4mBAUdStiB+LNC6iUqFSIrd6n79DSHtvSUKHM7wv5/w4L+e8ArQxjlmMIgqIIuK5RcWiUW764J20O8NBizOIm4gS4rXFD4t4WfAhDSWKB5D3kHEbuxwyZHHDYg7x3uJPJLwoeCEoD5ACQo8hX0DSpoK5Lng7yRogTyFPbB6YzsKD4RogPyHwIwKXaglcXW+vXgDi3094VUASvhbCTH8d+EjgBQK/WU/eCNi1++q3GtAf4PHdeP4e0mqVMFpB0TKKlhoDiTvPF/H+Dnx0Kz7Vi1SB4IvRJ6MFmgN3HsPlaXwijzsPQ1sHbOtEKkPw1AQPjYq07uD8LO4ex+EI6CSoD6kEmjG6bTQGGoFWT2DfJOzIQ8/1xBgLRleMToMOQDYLKWAlTiOFl+lF0iWjIaNDJtgOOcGgWJv7Yu4v1bO/ifPf8d1Kk1U+YpQz2YzZKxhOAO8EvxQTdy/hc00AQOEW0yXTKxhNAGXBV5lVRVgtgHocl7koc0twX+aZzGfR8Dv/B7E8d2gwtTBzAAAAAElFTkSuQmCC%22%3B%0Avar%20gt1icon%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADPElEQVR4nGWTTWhjZRSG3/uTNr39mTqTn1KacagTqyKIlYJ2ExQCUhiprgpduRVFpLvZjOCsXEgWFqRk0RZcWLopmOnCQcPUsVBiTEZbalrGTJOZJm2aNGm++92b737fcdGZTfvAuznwnMV7OBouEI/HdSHEyNzcXCwajb7r8/n6T09P99bW1u4PDw8/SiQSbHd396IGBINBJJPJQDqdvssYK0kpO0SkiIiUUlII0SqVSr8lk8n3JycnjUsLZmdnb5bL5T+klPK5RNzp0BlzyHEFKXU+cxynubKy8tXExIQJABoAzM/PB6amptYikch70DRtv3iMh5kClPQglcKzozMMXhnAh7E3EL0RhCcEX19f/6xSqSxhdHRUT6VS39i2LYUQtJ7epm9/uEdHtSZJKUkpRa0zm75fvE+f3/mRmM3JcRyqVqulmZmZl7G6uhopl8sHtm3TduEpffH1T1Srn9FFavUmnTRaJKUkx3Go0WiojY2N22aj0Yj5fL6wJyVS6R289koYVwd7L3V07aUBAICUEkopSCk1v99/Sw+Hw5NSyi7OXZQrTQwFBy6f6DlKKSil4HkeOp0ODMO4btq23S+EgFQaAAKzO1BKQdd1AICmaSAiEBGUlBBCwHVduK4LzrlpHh4e7nHOVW+vofdbPmxkHuPWB6/D6vFD13UoRfj38TPsP6mBOxJjN64gdNUC5xz1er2l5/P5XxqNBvNEByPBLmS2n+LXzQK4zcH5ebp9GkAeEksPwJgNxhhs20axWMzo7Xb7US6Xyx7Xanh7LIhXRywklh7i9z/30Wy1YNsMfT0mrG4DGoCO64Ixhlqt5uTz+UVjZ2dHDA0NFYPB4Cd9fVb3W2MhnDZb+DldwD+FCk5OWvivVEX27ycY7APevHkNouNSNpu9l8vlvtMAIBQKGfF4/Mvp6em7oVCoxzAMOB0PjAsQEfxdPvi7DBgG4Dgu5fP5vxYWFj4uFAoHBgAwxmhvby8jpTywLOsdy7IGfKah9XSb56IOeJ7A0dGxs7m5mVpeXv60Xq8fcM7Pf+EFsVhMq1Qq18fHx2ej0ehHgUAgYpqm2W63W6VSKVMsFhe3trYeVKtV/sL5HwhICaDODiyAAAAAAElFTkSuQmCC%22%3B%0Avar%20promticon%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQ0lEQVQ4jX2TX2xTdRTHT7O4GWL0gSwKmphoi3SsdFXHZiRjDExGSIxGHoTgwzDAUoM4skgEE6ckmiiEB2D8GYqbo2LLrmxZ51rWlob+W1e2ua2z2tp1ZVzrunZr161r7/3drw9TCLr4Sc7b+Zycc3IO0QNkY4M333LrD19zGbSc64aWc/VoOZepnnOZD3KuHi3nNB9rCQQcW2kl7CPjH3tPF7OUjpAxEbKDhNwEQUgSxBRBiD8GYWY/UlONzHO76YJery+4LwcmJmrHZtL5tlOVmGsjzPcQFgcIuRBBmCaIaYKYJIip18HyHiylv2Ae5wUtERGFef5ZZzQWS4sSmjgO060yzBsJi/2E3G8E4Y/lDpajDJIwDEkMwW2rHvf5fI/QlZHQFc+CBO8CQ9efOVw8s225gIewFCDkeRnEuSKwzGqw7PuQWAySlMFcrJ4NeIyv0SFv+N5nvIjdgSx2+NLYZ/Sio7nW4uTqdE7jIZ3TfFzntH6u03ON9g/aq9DQvgkftlfg5A+1aGk50EG77MHEK3cyKLHPQm6aRrkljqYu+/V/L/mNjroual0HuqwAnVeAzsix9og6Rg23xjmlLQm5OQ65OQ7FzRlstUyJtoHB7f/Ivf6+2kdNKpFMSlC3EvTjepDhBexo3tNLY+Ep9YaeyaX1tiSU9llscKSw0TOPPTecQ8FgsCgYDBZtt789Sv6NoGEVaKAU5C5F4fWSrHPIW05ERMetQxfV/fPQ+Bbw8nAWFaM5vDq6iK9tt9+77Pnu8NOz20AJDSimAd0tA4XVOGhovHR/vkgksqbqVjC5+VcBVSGGLb8zbAkxVHe642+OvpuQiSqQoAblNaClF1Hs2jQdjUbXPrSks1bHR5UjWZQPZqDxpKFyzEJ17VNckr5HIZOD2HMgUQHKrsOpn84e+c8p8zy/6qVzvZFnDJN46moYxedM+HKyGUPSCOpZI9awUjzBFCjr2+zneX7Viv/Q2tm3t+CEixWccKC68ygmhCj8wi8wCr04JnyCkruqfHd/984V5b+RnbxqbNj11VHLzrZ9kRr9O9ka614orTXseUPZvW8s39b9n/wQfr+/MBwOP+n+2V3huOOoTCQSj6+U9xeWlBixn0UlkAAAAABJRU5ErkJggg%3D%3D%22%3B%0Avar%20yndicon%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC8UlEQVQ4jY2TTWgcZQCGv1OLgkX0UlChaC8iEUo1kNJV0UiTNl1SFasYk2pELeohVkOgWkILDSTR2tWGjRILhigVoxIbf1oaWkJtIokmYWOa3253t2T/Z2dnZmfnm5nv8RZIhdIXnst7eE7vK+oH5JvPfSe5HfZ963SImxPsL9E45PD6r/KWvDYsCfaXnN2nzYp1gt2nDZqGbJqGbJrP2ixrPpZU+AoMR5GxFCNRj6Yhmxe/t6j9uji6TvDsV3kaBk1az5XQy4q0pbia8WgYNMmVFA2DJhdWXCypaPrJJPhNgere/ME1wZM9aQ78oOMrGItJlIJIyiVf8rFdxWLW4+UzBfSyImv5vDCg8URPKlf1afw+IYQQO07eIGv5jMcc+v+2OPhjnqThkbV89g9kee9njZzlM5Fw+GXOpueKwa4vU1R9dmNACCHEY91RMqbH5Ws2ZVcR01ySRY/OCwXq+5LU9yWJaS5ayeeV/hQ5y6e+L8nOkzG2dy3vEYETK8Q0l7pwgpThURdOUBdOkLc89vYmiGkug9MGe3sTRHMSWyrqwgme+fw6FccXF0XFsTl026cmFGUx7VATilITihK+lKfsKjr/yKx1CymHklTUhKIEupd4uH32H/HQRzMYZZ94XlJ2FasFyWpBcmneIFN0CYZWqO5e4vlT15CeQrM8qruXeKQ9woOHp3aKB1onieccaj9ZIKW7PNVxdY1dXfOkiy77Ty2TNVzmV21az8R59MgM93842SuEEGJzyxjVx/9Fs1xe+mKB85ECgaMRAkcj1HbOYTk+17Nl9nTNkdIljx+ZZnPLldym5j/vEUIIce+7o1R9PEWwaxbD9nA9RVqXzMRMpqImTx+bwSx7pHVJoH2aLe+Pcfc7o6+uDWnT2yNUtk1Q2TbBjsOTXJzVsKVPseRxcVYjrUtOnI1T2TbB1pbL3PXWyPop3/nGebYdGmf7B3/dkm2Hxrmj+Zyzsfn3resEGxqHOzYc+I3bonH4f3f+Dz63ssfSaOz4AAAAAElFTkSuQmCC%22%3B%0Avar%20bingicon%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABMUlEQVQ4jY2SsU7DMBCG/TJYYqpEPDojcbq0NGM7sXdnggnigYFOyVDqLLBAkRJLTIwJSwdYw8gj8AQ/Q0kaO6HNSZbPp/P332+ZkJ7hSo2uvNdFV2rwMEOVGw28UVjl5bZZaqi8hA3aqzB/KOBKDVWUrcZ6ir/dgLlSY/HxAx5mmD++d15u7jzMjDNxpcbZyzeE+mz563o4bteaY9nj2bktwP97F7upS72yUgdLfNDIA428g9SD/6APZG84SoDGwoDQeFurly3CEh+OEmBKIFgPcWwBCCHkKPJwt7nA+dvIFBg/C9wUV3VhsbnF4L4NmKYT0Fjg9HVoApgSSL/WBuBkZQKm6QQ08jDLgraF8ZPAdX6JJnCw3AFo5IHGArMs2NVsi44SYIkPlviozraFrvgFK3TyTsPvtF8AAAAASUVORK5CYII%3D%22%3B%0Avar%20lmricon%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQ0lEQVQ4jX2TX2xTdRTHT7O4GWL0gSwKmphoi3SsdFXHZiRjDExGSIxGHoTgwzDAUoM4skgEE6ckmiiEB2D8GYqbo2LLrmxZ51rWlob+W1e2ua2z2tp1ZVzrunZr161r7/3drw9TCLr4Sc7b+Zycc3IO0QNkY4M333LrD19zGbSc64aWc/VoOZepnnOZD3KuHi3nNB9rCQQcW2kl7CPjH3tPF7OUjpAxEbKDhNwEQUgSxBRBiD8GYWY/UlONzHO76YJery+4LwcmJmrHZtL5tlOVmGsjzPcQFgcIuRBBmCaIaYKYJIip18HyHiylv2Ae5wUtERGFef5ZZzQWS4sSmjgO060yzBsJi/2E3G8E4Y/lDpajDJIwDEkMwW2rHvf5fI/QlZHQFc+CBO8CQ9efOVw8s225gIewFCDkeRnEuSKwzGqw7PuQWAySlMFcrJ4NeIyv0SFv+N5nvIjdgSx2+NLYZ/Sio7nW4uTqdE7jIZ3TfFzntH6u03ON9g/aq9DQvgkftlfg5A+1aGk50EG77MHEK3cyKLHPQm6aRrkljqYu+/V/L/mNjroual0HuqwAnVeAzsix9og6Rg23xjmlLQm5OQ65OQ7FzRlstUyJtoHB7f/Ivf6+2kdNKpFMSlC3EvTjepDhBexo3tNLY+Ep9YaeyaX1tiSU9llscKSw0TOPPTecQ8FgsCgYDBZtt789Sv6NoGEVaKAU5C5F4fWSrHPIW05ERMetQxfV/fPQ+Bbw8nAWFaM5vDq6iK9tt9+77Pnu8NOz20AJDSimAd0tA4XVOGhovHR/vkgksqbqVjC5+VcBVSGGLb8zbAkxVHe642+OvpuQiSqQoAblNaClF1Hs2jQdjUbXPrSks1bHR5UjWZQPZqDxpKFyzEJ17VNckr5HIZOD2HMgUQHKrsOpn84e+c8p8zy/6qVzvZFnDJN46moYxedM+HKyGUPSCOpZI9awUjzBFCjr2+zneX7Viv/Q2tm3t+CEixWccKC68ygmhCj8wi8wCr04JnyCkruqfHd/984V5b+RnbxqbNj11VHLzrZ9kRr9O9ka614orTXseUPZvW8s39b9n/wQfr+/MBwOP+n+2V3huOOoTCQSj6+U9xeWlBixn0UlkAAAAABJRU5ErkJggg%3D%3D%22%3B%0Avar%20maillicon%3D%22data%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPeSAPt3d+9fX8kTE39xVP+wsCFiAP/hpv/Sd4NYAf/Rdf/Whf/Ufebe3v/Teo+Caf/Xh//hpEAYAHZWF/+3JtfSyf7s7P/cl//p6WolJakZD//Naf/19WJMIPBnZ/jOzoMkJPrY2P/GU+xxcU87FH9TEO+kDvv6+f+yGf39/NmzaJQyIKJMPO3554lXPm3OPP38/KSYImLKLehYWPeysvFubv+8NUa2C1a6H31EKox2SJSaOPaBgfbRhvbYnPt8fFpmFbN+FrCXY3UHB//HVjlTCf/BRf/pvG5SMq6Tk/F0dDOSAf/MZzGSAGhTKP/LZKx7Gv/dmT+JCPO3t8m3t4xhCf/x8ZsVFYEZBPyVleuWlvzd3fSSkko0DZVyK7ctJf/blJFsbIt9Ff++Pf/lsPOrq/LPiMctLfJ4eP/lsubk3v/YirOqmfauHGJQLd9CQlECAf7U1P/MzNnVzPnFV0AnAP23t//7+8leXkq8EJGFbPnBwfS3Pv+zG2NPKNSbKP+uDf+4K9K0d/yZmWFPK3o9FnRSJXZISG1dPPrS0rmyoreSR8MUEtytP+dQUNAhIfVsbN9AQNcwMP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJIALAAAAAAQABAAAAjbACUJFHghDgECdgYOrAKnjiAfACICwLJBoaQzjzJq1LijgsI7AUIm2TIDkZ4OAWhoGfihUSMQZES4nNlIhgeBGCDp3MlTpxspkgyZiUS0qNGiWcBYccS0aVMvK1ocGYFEiICrizKowFFIQhdFKcpQmPLmCiESVID42RPCSQIFX3pIYhABwZ8TE2oUGbLkwAMLEMageEGnBJ8wRH7M0dBADRQDaIwkksSFDSAYBQroWMAjUJAcTQblkTTgiRhGSphE4XDIwRo5JgamadNngI0beCzqFuiCRYzdkgICADs%3D%22%3B%0Avar%20lingvicon%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACBElEQVR42o2Sy04TYRiGJ+oFtNANKaXFTmmhB+i0DGBpNbIQ2ZpwCV6ArlwYbwA35ZDYHXFjIqh4DCalFKZIoQwWp6YxdlGSSjKLYuyiST28fP9UFPpr9Eue3fs8k0x+Qfh52uWo/P7q+MfCxRi0Y2JRvGNERw32RhkR5CORgtB6hfErn6rJ5NdGo4F/8cLj+c4F8rHot9zkJPbvTkF/9RK1chn1ev2PPO/pARfYGR7CbHs73l4YMdgdGcbexAQ+3LyB/UQCuqLgy+EharUanrlcfCAny5ihwC6FVMaQjB2ZMYjcICMMdWwM1WoVT0UnH9gKh43ASWE7zAhhK0RIErJSELquY8l5ng9s0mCmrc0QtpkQkkgKIhtkDGBzgNGPSqWCJ93dfCBDo2kKZKXTwpt+RgCZAOH3o0w/97HDwQfWacACp4SAHwpJis+HdYbXi1KphEd2Ox9I02DabDa+ovh9TYkExlpfn0G6txfFYhGLXV18YJUGcQoYgrcprJGQNvBg1cNwQ9M0LNhsfCBFg7jZ1CIQbjdSDHo8jHw+j4XOTj6w7HIdxE2m34K7Kaww6OEco6oqHlqtfGDObr+WsFg+p1qEJEMUf7GRyfy4ZbGsCH+7O4Jw5p7NdvuBw7Hx2ulsnJQZ9+fnszQ7K/zPXRKEc1MdHdfnrNblJVGsLQYCB62bI3TCqVl5ZBgZAAAAAElFTkSuQmCC%22%3B%0Avar%20pageurl%3B%0Avar%20trtext%3B%0Avar%20ctabpos%3B%20%0A//------------------------Page%20context%20menu-------------------------------------------------%20%20%0A%28function%20TranslatePage%28%29%7B%0Aconst%20kXULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0A%20%20%20%20var%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%0A%20%20%20%20var%20separator%20%3D%20document.getElementById%28%22context-viewsource%22%29%3B%0A%20%20%20%20var%20eventTarget%20%3D%20null%3B%0A%20%20%20%20var%20menu%20%3D%20document.createElementNS%28kXULNS%2C%20%22menu%22%29%3B%0A%20%20%20%20menu.id%20%3D%20%22TranslatePage%22%3B%0A%20%20%20%20menu.setAttribute%28%22label%22%2C%20%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0421%u0442%u0440%u0430%u043D%u0438%u0446%u0443%22%29%3B%0A%20%20%20%20menu.setAttribute%28%22class%22%2C%20%22menu-iconic%22%29%3B%0A%20%20%20%20menu.setAttribute%28%22image%22%2C%20mainicon%29%3B%0A%20%20%20%20menu.hidden%20%3D%20true%3B%0A%20%20%20%20contextMenu.insertBefore%28menu%2C%20separator%20%29%3B%0A%20%20%20%20var%20menuPopup%20%3D%20document.createElementNS%28kXULNS%2C%20%22menupopup%22%29%3B%0A%20%20%20%20menu.appendChild%28menuPopup%29%3B%0Avar%20lst%20%3D%20%5B%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Google%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3A%20gtr%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Agt1icon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Promt%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Apromttr%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Apromticon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Yandex%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Ayndtr%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Ayndicon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Bing%20Translator%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Abingtr%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Abingicon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22separator%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Google%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3A%20gtrnew%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Agt1icon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Promt%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Apromttrnew%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Apromticon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Yandex%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Ayndtrnew%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Ayndicon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Bing%20Translator%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Abingtrnew%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Abingicon%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20%0Afor%28var%20i%20%3D%200%2C%20m%3B%20m%20%3D%20lst%5Bi%5D%3B%20i++%29%7B%0A%20%20%20%20if%20%28m.label%3D%3D%22separator%22%29%7B%0A%20%20%20%20%20var%20menuItem%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuseparator%22%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.id%20%3D%20%22TranslatePage%22%20+%20m.label.toString%28%29%3B%0A%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20var%20menuItem%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22image%22%2C%20m.image%29%3B%0A%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22type%22%2C%20%22m.radio%22%29%3B%0A%20%20%20%20%20%20%20%20menuItem.addEventListener%28%22command%22%2C%20m.command%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20menuItem.id%20%3D%20%22TranslatePage%22%20+%20m.label.toString%28%29%3B%0A%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%7D%20%20%0A%20%20%20%20contextMenu.addEventListener%28%22popupshowing%22%2C%20setMenuDisplay%2C%20false%29%3B%0A%20%20%20%0A%20function%20setMenuDisplay%28aEvent%29%20%7B%0A%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pageurl%3DencodeURIComponent%28content.document.location.href%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28gContextMenu.isTextSelected%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%22TranslatePage%22%29.hidden%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%22TranslatePage%22%29.hidden%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%0A%0A//--------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Google--------------%0Afunction%20gtr%28%29%7B%0Avar%20url%20%3D%20%22http%3A//translate.google.com/translate%3Fhl%3Dru%26ie%3DUTF8%26prev%3D_t%26sl%3Dauto%26tl%3Dru%26u%3D%22+pageurl%3B%0AloadURI%28url%29%3B%0A%7D%0A//---------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Promt---------------%0Afunction%20promttr%28%29%7B%0Avar%20url%20%3D%20%22http%3A//www.translate.ru/siteTranslation/autolink/%3Fdirection%3Dar%26template%3DGeneral%26sourceURL%3D%22+pageurl%3B%0AloadURI%28url%29%3B%0A%7D%0A//---------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Yandex---------------%0Afunction%20yndtr%28%29%7B%0Avar%20url%20%3D%20%22http%3A//translate.yandex.net/translate_f%3Fdir%3Dauto%26lang%3Dauto-ru%26ui%3Dru%26url%3D%22+pageurl%3B%0AloadURI%28url%29%3B%0A%7D%0A//---------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Bing%20Translator---------------%0Afunction%20bingtr%28%29%7B%0Avar%20url%20%3D%20%22http%3A//www.microsofttranslator.com/bv.aspx%3Ffrom%3D%26to%3Dru%26a%3D%22+pageurl%3B%0AloadURI%28url%29%3B%0A%7D%0A//--------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Google%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435--------------%0Afunction%20gtrnew%28%29%7B%0Avar%20url%20%3D%20%22http%3A//translate.google.com/translate%3Fhl%3Dru%26ie%3DUTF8%26prev%3D_t%26sl%3Dauto%26tl%3Dru%26u%3D%22+pageurl%3B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28url%29%3B%0A%7D%0A//---------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Promt%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435---------------%0Afunction%20promttrnew%28%29%7B%0Avar%20url%20%3D%20%22http%3A//www.translate.ru/siteTranslation/autolink/%3Fdirection%3Dar%26template%3DGeneral%26sourceURL%3D%22+pageurl%3B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28url%29%3B%0A%7D%0A//---------%u041F%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Yandex%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435---------------%0Afunction%20yndtrnew%28%29%7B%0Avar%20url%20%3D%20%22http%3A//translate.yandex.net/translate_f%3Fdir%3Dauto%26lang%3Dauto-ru%26ui%3Dru%26url%3D%22+pageurl%3B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28url%29%3B%0A%7D%0A//---------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0441%20Bing%20Translator%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435---------------%0Afunction%20bingtrnew%28%29%7B%0Avar%20url%20%3D%20%22http%3A//www.microsofttranslator.com/bv.aspx%3Ffrom%3D%26to%3Dru%26a%3D%22+pageurl%3B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28url%29%3B%0A%7D%0A%0A%7D%29%28%29%3B%0A%28function%20TranslateSelected%28%29%7B%0Aconst%20kXULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0A%20%20%20%20var%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%0A%20%20%20%20var%20separator%20%3D%20document.getElementById%28%22context-searchselect%22%29%3B%0A%20%20%20%20var%20eventTarget%20%3D%20null%3B%0A%20%20%20%20var%20menu%20%3D%20document.createElementNS%28kXULNS%2C%20%22menu%22%29%3B%0A%20%20%20%20menu.id%20%3D%20%22TranslateSelected%22%3B%0A%20%20%20%20menu.setAttribute%28%22label%22%2C%20%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%22%29%3B%0A%20%20%20%20menu.setAttribute%28%22class%22%2C%20%22menu-iconic%22%29%3B%0A%20%20%20%20menu.setAttribute%28%22image%22%2C%20mainicon%29%3B%0A%20%20%20%20menu.hidden%20%3D%20true%3B%0A%20%20%20%20contextMenu.insertBefore%28menu%2C%20separator%20%29%3B%0A%20%20%20%20var%20menuPopup%20%3D%20document.createElementNS%28kXULNS%2C%20%22menupopup%22%29%3B%0A%20%20%20%20menu.appendChild%28menuPopup%29%3B%0Avar%20lst%20%3D%20%5B%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u0417%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u043E%u043C%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Atrsel01%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Agt1icon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u043E%u043A%u043D%u0435%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Atrsel02%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Agt1icon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22separator%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20Google%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Atrsel03%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Agt1icon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20PROMT%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Atrsel04%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Apromticon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20Bing%20Translator%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Atrsel05%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Abingicon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22separator%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%20%u0441%u043B%u043E%u0432%u043E%20%u0432%20%u042F%u043D%u0434%u0435%u043A%u0441%u0435%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Atrsel06%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Ayndicon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%20%u0441%u043B%u043E%u0432%u043E%20%u0432%20Lingvo%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Atrsel07%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Alingvicon%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%20%u0441%u043B%u043E%u0432%u043E%20%u0432%20Mail.ru%22%2C%0A%20%20%20%20%20%20%20%20%20%20command%3Atrsel08%2C%0A%20%20%20%20%20%20%20%20%20%20image%3Amaillicon%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20%0Afor%28var%20i%20%3D%200%2C%20m%3B%20m%20%3D%20lst%5Bi%5D%3B%20i++%29%7B%0A%20%20%20%20if%20%28m.label%3D%3D%22separator%22%29%7B%0A%20%20%20%20%20var%20menuItem%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuseparator%22%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.id%20%3D%20%22TranslateSelected%22%20+%20m.label.toString%28%29%3B%0A%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%20%20%20else%7B%0A%20%20%20%20%20%20%20%20var%20menuItem%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22image%22%2C%20m.image%29%3B%0A%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22type%22%2C%20%22m.radio%22%29%3B%0A%20%20%20%20%20%20%20%20menuItem.addEventListener%28%22command%22%2C%20m.command%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20menuItem.id%20%3D%20%22TranslateSelected%22%20+%20m.label.toString%28%29%3B%0A%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20contextMenu.addEventListener%28%22popupshowing%22%2C%20setMenuDisplay%2C%20false%29%3B%0A%20%20%20%20%20%0A%20%20%20%20function%20setMenuDisplay%28aEvent%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28gContextMenu.isTextSelected%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20trtext%20%3D%20doc.%20defaultView.%20getSelection%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ctabpos%20%3D%20gBrowser.mCurrentTab._tPos%20+1%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%22TranslateSelected%22%29.hidden%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%22TranslateSelected%22%29.hidden%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A//----------%u0417%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u043E%u043C------------%0Afunction%20trsel01%28%29%7B%0Avar%20fullUrl%20%3D%20%22http%3A//translate.google.hu/translate_t%3Ftext%3D%22+trtext+%22%26hl%3Dru%22+%22%26langpair%3Dauto%7Cru%26tbb%3D1%22%20%3B%0A%20%20%20%20%20%20%20function%20removeHTMLTags%28mitkell%29%20%7B%20%20//clean%20up%20a%20string%20from%20html%20tags%0A%20%20%20%20%20%20%20var%20strInputCode%20%3D%20mitkell%3B%0A%20%20%20%20%20%20%20var%20strTagStrippedText%20%3D%20strInputCode.replace%28/%3C%5C/%3F%5B%5E%3E%5D+%28%3E%7C%24%29/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20return%20strTagStrippedText%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20function%20infoReceived%28%29%20%7B%20%20//%20if%20there%20is%20response%20from%20Google%20then%20write%20out%20translation%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20var%20output%20%3D%20httpRequest.responseText%3B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28output.length%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20//%20Build%20the%20output%20string%20from%20Google%20Page%0A%20%20%20%20%20%20%20%20%20%20%20%20%20output%20%3D%20output.replace%28/%26quot%3B/gi%2C%27%22%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20output%20%3D%20output.replace%28/%26lt%3B/gi%2C%27%3C%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20output%20%3D%20output.replace%28/%26gt%3B/gi%2C%27%3E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20output%20%3D%20output.replace%28/%26amp%3B/gi%2C%27%26%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20output%20%3D%20output.replace%28/%27/gi%2C%22%27%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20fieldArray%20%3D%20output.split%28%27%3C/head%3E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28fieldArray%5B1%5D.search%28%27class%3D%22short_text%22%27%29%21%3D-1%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20tempResz%20%3D%20fieldArray%5B1%5D.split%28%27%3Cspan%20id%3Dresult_box%20class%3D%22short_text%22%3E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20%28fieldArray%5B1%5D.search%28%27class%3D%22medium_text%22%27%29%21%3D-1%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20tempResz%20%3D%20fieldArray%5B1%5D.split%28%27%3Cspan%20id%3Dresult_box%20class%3D%22medium_text%22%3E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20tempResz%20%3D%20fieldArray%5B1%5D.split%28%27%3Cspan%20id%3Dresult_box%20class%3D%22long_text%22%3E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20kimenet%20%3D%20tempResz%5B1%5D.split%28%27%3C/span%3E%3C/div%3E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20range%20%3D%20content.getSelection%28%29.getRangeAt%280%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20range.deleteContents%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20range.insertNode%28document.createTextNode%28removeHTMLTags%28kimenet%5B0%5D%29%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20httpRequest%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20%20%20httpRequest.open%28%22GET%22%2C%20fullUrl%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20httpRequest.onload%20%3D%20infoReceived%3B%0A%20%20%20%20%20%20%20%20httpRequest.send%28null%29%3B%0A%7D%20%20%20%20%0A%0A//----------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u043E%u043A%u043D%u0435------------%0Afunction%20trsel02%28%29%7B%0Avar%20url1%3D%22http%3A//translate.google.com/translate_t%3Fprev%3Dhp%26hl%3Dru%26js%3Dy%26text%3D%22%3B%0Avar%20url2%3D%22%26file%3D%26sl%3Den%26tl%3Dru%26history_state0%3D%23%22%3B%0Avar%20urltr%3Durl1+trtext+url2%3B%0A%0Avar%20xmlhttp%0Afunction%20gettransdata%28%29%0A%7B%0Axmlhttp%3DGetXmlHttpObject%28%29%3B%0Aif%20%28xmlhttp%3D%3Dnull%29%0A%20%20%7B%0A%20%20alert%20%28%22Your%20browser%20does%20not%20support%20AJAX%21%22%29%3B%0A%20%20return%3B%0A%20%20%7D%0A%0Axmlhttp.onreadystatechange%3DstateChanged%3B%0Axmlhttp.open%28%22GET%22%2Curltr%2Ctrue%29%3B%0Axmlhttp.send%28null%29%3B%0A%7D%0A%0Afunction%20stateChanged%28%29%0A%7B%0Aif%20%28xmlhttp.readyState%3D%3D4%29%0A%20%20%7B%0A%20%20var%20trin%3Dxmlhttp.responseText%3B%0A%0Avar%20chkpoint%3D%27%3Cspan%20id%3Dresult_box%27%3B%0Avar%20arrayOfStrings%20%3D%20trin.split%28chkpoint%29%3B%0A%0Avar%20trouttmp%3DarrayOfStrings%5B1%5D%3B%0Avar%20chkpoint%3D%27%3Cdiv%20id%3Dspell-place-holder%27%3B%0Avar%20arrayOfStrings%20%3D%20trouttmp.split%28chkpoint%29%3B%0A%0Atrouttmp1%3DarrayOfStrings%5B0%5D%3B%0Atrouttmp2%3Dtrouttmp1.replace%28/%3Cspan.+%3F%22%3E/g%2C%22%22%29%0Atrouttmp2%3Dtrouttmp2.replace%28/%3C%5C/span%3E/g%2C%22%22%29%0Atrouttmp2%3Dtrouttmp2.replace%28/class%3D%22long_text%22%3E/g%2C%22%22%29%0Atrouttmp2%3Dtrouttmp2.replace%28/class%3D%22short_text%22%3E/g%2C%22%22%29%0Atrouttmp2%3Dtrouttmp2.replace%28/class%3D%22medium_text%22%3E/g%2C%22%22%29%0Atrouttmp2%3Dtrouttmp2.replace%28/%3Cbr%3E%3C%5C/div%3E%3C%5C/div%3E/g%2C%22%22%29%0A%0Avar%20jurl%3D%27data%3Atext/html%2C%3C%21DOCTYPE%20HTML%20PUBLIC%20%22-//W3C//DTD%20HTML%204.0//EN%22%3E%3Chtml%3E%3Chead%3E%3Ctitle%3E%3C/title%3E%3Cmeta%20charset%3D%22utf-8%22%3E%3Cmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text/html%3B%20charset%3Dutf-8%22%3E%3C/head%3E%3Cbody%3E%27+trouttmp2+%27%3C/body%3E%3C/html%3E%27%3B%0A%0Avar%20sizex%20%3D%20screen.width/2.2%0Avar%20sizey%20%3D%20screen.height/2.2%0Avar%20posx%3Dscreen.width-sizex%3B%0Avar%20posy%3Dscreen.height-sizey%3B%0Avar%20wnd%20%3D%20window.open%28jurl%2C%20this.name%2C%20%22width%3D%22+%28sizex-30%29+%22%2Cheight%3D%22+%28sizey-87%29+%22%2CscreenX%3D%22+posx+%22%2CscreenY%3D%22+posy+%22%2Cstatus%3Dno%2Cscrollbars%3Dyes%2Cresizable%3Dyes%22%29%3B%0Aif%20%28wnd.focus%29%20%7B%0A%20%20wnd.focus%28%29%3B%20%7D%3B%0A%0A%20%20%7D%0A%7D%0A%0Afunction%20GetXmlHttpObject%28%29%7B%0Aif%20%28window.XMLHttpRequest%29%0A%20%20%7B%20return%20new%20XMLHttpRequest%28%29%3B%7D%0Aif%20%28window.ActiveXObject%29%0A%20%20%7B%20return%20new%20ActiveXObject%28%22Microsoft.XMLHTTP%22%29%3B%7D%0Areturn%20null%3B%0A%7D%0Agettransdata%28%29%3B%0A%0A%7D%20%20%20%20%20%0A//--------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20Google--------------%0Afunction%20trsel03%28%29%7B%0Avar%20url%3D%22http%3A//translate.google.com/translate_t%3Fhl%3Dru%23auto%7Cru%7C%22+trtext%3B%0AgBrowser.moveTabTo%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%2C%20ctabpos%29%3B%0A%7D%0A%0A//---------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20PROMT---------------%0Afunction%20trsel04%28%29%7B%0Avar%20url%3D%22http%3A//www.translate.ru/%3FExternal%3DIE8Accelerator%26formEncoding%3Dutf-8%26direction%3Dar%26prmtlang%3Dru%26status%3Dtranslate%26template%3DGeneral%26source%3D%22+trtext%3B%0AgBrowser.moveTabTo%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%2C%20ctabpos%29%3B%0A%7D%0A%0A//---------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20Bing%20Translator---------------%0Afunction%20trsel05%28%29%7B%0Avar%20url%3D%22http%3A//www.microsofttranslator.com/%3Fref%3DIE8Activity%26to%3Dru%26SourceText%3D%22+trtext%3B%0AgBrowser.moveTabTo%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%2C%20ctabpos%29%3B%0A%7D%0A//----------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u043B%u043E%u0432%u043E%20%u0432%20%u042F%u043D%u0434%u0435%u043A%u0441%u0435------------%0Afunction%20trsel06%28%29%7B%0Avar%20urltr%3D%22http%3A//translate.yandex.ru/tr.json/translate%3Fcallback%3Djson.c%286%29%26lang%3Den-ru%26text%3D%22+trtext%3B%0A%0Avar%20xmlhttp%0Afunction%20gettransdata%28%29%0A%7B%0Axmlhttp%3DGetXmlHttpObject%28%29%3B%0Aif%20%28xmlhttp%3D%3Dnull%29%0A%20%20%7B%0A%20%20alert%20%28%22Your%20browser%20does%20not%20support%20AJAX%21%22%29%3B%0A%20%20return%3B%0A%20%20%7D%0A%0Axmlhttp.onreadystatechange%3DstateChanged%3B%0Axmlhttp.open%28%22GET%22%2Curltr%2Ctrue%29%3B%0Axmlhttp.send%28null%29%3B%0A%7D%0A%0Afunction%20stateChanged%28%29%0A%7B%0Aif%20%28xmlhttp.readyState%3D%3D4%29%0A%20%20%7B%0A%20%20var%20tryain%3Dxmlhttp.responseText%3B%0Atryain%3Dtryain.replace%28/json%5C.c%5C%286%5C%29/g%2C%22%22%29%0Atryain%3Dtryain.slice%282%2C-2%29%0A%0Avar%20jurl%3D%27data%3Atext/html%2C%3C%21DOCTYPE%20HTML%20PUBLIC%20%22-//W3C//DTD%20HTML%204.0//EN%22%3E%3Chtml%3E%3Chead%3E%3Ctitle%3E%3C/title%3E%3Cmeta%20charset%3D%22utf-8%22%3E%3Cmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text/html%3B%20charset%3Dutf-8%22%3E%3C/head%3E%3Cbody%3E%27+tryain+%27%3C/body%3E%3C/html%3E%27%3B%0A%0Avar%20sizex%20%3D%20screen.width/2.2%0Avar%20sizey%20%3D%20screen.height/2.2%0Avar%20posx%3Dscreen.width-sizex%3B%0Avar%20posy%3Dscreen.height-sizey%3B%0Avar%20wnd%20%3D%20window.open%28jurl%2C%20this.name%2C%20%22width%3D%22+%28sizex-30%29+%22%2Cheight%3D%22+%28sizey-87%29+%22%2CscreenX%3D%22+posx+%22%2CscreenY%3D%22+posy+%22%2Cstatus%3Dno%2Cscrollbars%3Dyes%2Cresizable%3Dyes%22%29%3B%0Aif%20%28wnd.focus%29%20%7B%0A%20%20wnd.focus%28%29%3B%20%7D%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20GetXmlHttpObject%28%29%7B%0Aif%20%28window.XMLHttpRequest%29%0A%20%20%7B%20return%20new%20XMLHttpRequest%28%29%3B%7D%0Aif%20%28window.ActiveXObject%29%0A%20%20%7B%20return%20new%20ActiveXObject%28%22Microsoft.XMLHTTP%22%29%3B%7D%0Areturn%20null%3B%0A%7D%0Agettransdata%28%29%3B%0A%0A%7D%0A%0A//-----------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u043B%u043E%u0432%u043E%20%u0432%20Lingvo--------------%0Afunction%20trsel07%28%29%7B%0Avar%20url%3D%22http%3A//lingvopro.abbyyonline.com/ru/Search/en-ru/%22+trtext%3B%0AgBrowser.moveTabTo%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%2C%20ctabpos%29%3B%0A%7D%0A%0A//----------%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u043B%u043E%u0432%u043E%20%u0432%20Mail.ru------------%0Afunction%20trsel08%28%29%7B%0Avar%20url%3D%22http%3A//lingvo.mail.ru/%3Flang_id%3D1033%26translate%3D%26text%3D%22+trtext%3B%0AgBrowser.moveTabTo%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%2C%20ctabpos%29%3B%0A%7D%0A%0A%0A%0A%7D%29%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Инициализация:

Выделить код

Код:

var mainicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAABv0lEQVR42o3TPWhTYRTG8efeLIZaEW1LKBQ3Fb8QwdqpWupQUGh1qILoIi7qUBoQQ10dpMVBSidTyNSh6uAi4mBAUdStiB+LNC6iUqFSIrd6n79DSHtvSUKHM7wv5/w4L+e8ArQxjlmMIgqIIuK5RcWiUW764J20O8NBizOIm4gS4rXFD4t4WfAhDSWKB5D3kHEbuxwyZHHDYg7x3uJPJLwoeCEoD5ACQo8hX0DSpoK5Lng7yRogTyFPbB6YzsKD4RogPyHwIwKXaglcXW+vXgDi3094VUASvhbCTH8d+EjgBQK/WU/eCNi1++q3GtAf4PHdeP4e0mqVMFpB0TKKlhoDiTvPF/H+Dnx0Kz7Vi1SB4IvRJ6MFmgN3HsPlaXwijzsPQ1sHbOtEKkPw1AQPjYq07uD8LO4ex+EI6CSoD6kEmjG6bTQGGoFWT2DfJOzIQ8/1xBgLRleMToMOQDYLKWAlTiOFl+lF0iWjIaNDJtgOOcGgWJv7Yu4v1bO/ifPf8d1Kk1U+YpQz2YzZKxhOAO8EvxQTdy/hc00AQOEW0yXTKxhNAGXBV5lVRVgtgHocl7koc0twX+aZzGfR8Dv/B7E8d2gwtTBzAAAAAElFTkSuQmCC";
var gt1icon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADPElEQVR4nGWTTWhjZRSG3/uTNr39mTqTn1KacagTqyKIlYJ2ExQCUhiprgpduRVFpLvZjOCsXEgWFqRk0RZcWLopmOnCQcPUsVBiTEZbalrGTJOZJm2aNGm++92b737fcdGZTfvAuznwnMV7OBouEI/HdSHEyNzcXCwajb7r8/n6T09P99bW1u4PDw8/SiQSbHd396IGBINBJJPJQDqdvssYK0kpO0SkiIiUUlII0SqVSr8lk8n3JycnjUsLZmdnb5bL5T+klPK5RNzp0BlzyHEFKXU+cxynubKy8tXExIQJABoAzM/PB6amptYikch70DRtv3iMh5kClPQglcKzozMMXhnAh7E3EL0RhCcEX19f/6xSqSxhdHRUT6VS39i2LYUQtJ7epm9/uEdHtSZJKUkpRa0zm75fvE+f3/mRmM3JcRyqVqulmZmZl7G6uhopl8sHtm3TduEpffH1T1Srn9FFavUmnTRaJKUkx3Go0WiojY2N22aj0Yj5fL6wJyVS6R289koYVwd7L3V07aUBAICUEkopSCk1v99/Sw+Hw5NSyi7OXZQrTQwFBy6f6DlKKSil4HkeOp0ODMO4btq23S+EgFQaAAKzO1BKQdd1AICmaSAiEBGUlBBCwHVduK4LzrlpHh4e7nHOVW+vofdbPmxkHuPWB6/D6vFD13UoRfj38TPsP6mBOxJjN64gdNUC5xz1er2l5/P5XxqNBvNEByPBLmS2n+LXzQK4zcH5ebp9GkAeEksPwJgNxhhs20axWMzo7Xb7US6Xyx7Xanh7LIhXRywklh7i9z/30Wy1YNsMfT0mrG4DGoCO64Ixhlqt5uTz+UVjZ2dHDA0NFYPB4Cd9fVb3W2MhnDZb+DldwD+FCk5OWvivVEX27ycY7APevHkNouNSNpu9l8vlvtMAIBQKGfF4/Mvp6em7oVCoxzAMOB0PjAsQEfxdPvi7DBgG4Dgu5fP5vxYWFj4uFAoHBgAwxmhvby8jpTywLOsdy7IGfKah9XSb56IOeJ7A0dGxs7m5mVpeXv60Xq8fcM7Pf+EFsVhMq1Qq18fHx2ej0ehHgUAgYpqm2W63W6VSKVMsFhe3trYeVKtV/sL5HwhICaDODiyAAAAAAElFTkSuQmCC";
var promticon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQ0lEQVQ4jX2TX2xTdRTHT7O4GWL0gSwKmphoi3SsdFXHZiRjDExGSIxGHoTgwzDAUoM4skgEE6ckmiiEB2D8GYqbo2LLrmxZ51rWlob+W1e2ua2z2tp1ZVzrunZr161r7/3drw9TCLr4Sc7b+Zycc3IO0QNkY4M333LrD19zGbSc64aWc/VoOZepnnOZD3KuHi3nNB9rCQQcW2kl7CPjH3tPF7OUjpAxEbKDhNwEQUgSxBRBiD8GYWY/UlONzHO76YJery+4LwcmJmrHZtL5tlOVmGsjzPcQFgcIuRBBmCaIaYKYJIip18HyHiylv2Ae5wUtERGFef5ZZzQWS4sSmjgO060yzBsJi/2E3G8E4Y/lDpajDJIwDEkMwW2rHvf5fI/QlZHQFc+CBO8CQ9efOVw8s225gIewFCDkeRnEuSKwzGqw7PuQWAySlMFcrJ4NeIyv0SFv+N5nvIjdgSx2+NLYZ/Sio7nW4uTqdE7jIZ3TfFzntH6u03ON9g/aq9DQvgkftlfg5A+1aGk50EG77MHEK3cyKLHPQm6aRrkljqYu+/V/L/mNjroual0HuqwAnVeAzsix9og6Rg23xjmlLQm5OQ65OQ7FzRlstUyJtoHB7f/Ivf6+2kdNKpFMSlC3EvTjepDhBexo3tNLY+Ep9YaeyaX1tiSU9llscKSw0TOPPTecQ8FgsCgYDBZtt789Sv6NoGEVaKAU5C5F4fWSrHPIW05ERMetQxfV/fPQ+Bbw8nAWFaM5vDq6iK9tt9+77Pnu8NOz20AJDSimAd0tA4XVOGhovHR/vkgksqbqVjC5+VcBVSGGLb8zbAkxVHe642+OvpuQiSqQoAblNaClF1Hs2jQdjUbXPrSks1bHR5UjWZQPZqDxpKFyzEJ17VNckr5HIZOD2HMgUQHKrsOpn84e+c8p8zy/6qVzvZFnDJN46moYxedM+HKyGUPSCOpZI9awUjzBFCjr2+zneX7Viv/Q2tm3t+CEixWccKC68ygmhCj8wi8wCr04JnyCkruqfHd/984V5b+RnbxqbNj11VHLzrZ9kRr9O9ka614orTXseUPZvW8s39b9n/wQfr+/MBwOP+n+2V3huOOoTCQSj6+U9xeWlBixn0UlkAAAAABJRU5ErkJggg==";
var yndicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC8UlEQVQ4jY2TTWgcZQCGv1OLgkX0UlChaC8iEUo1kNJV0UiTNl1SFasYk2pELeohVkOgWkILDSTR2tWGjRILhigVoxIbf1oaWkJtIokmYWOa3253t2T/Z2dnZmfnm5nv8RZIhdIXnst7eE7vK+oH5JvPfSe5HfZ963SImxPsL9E45PD6r/KWvDYsCfaXnN2nzYp1gt2nDZqGbJqGbJrP2ixrPpZU+AoMR5GxFCNRj6Yhmxe/t6j9uji6TvDsV3kaBk1az5XQy4q0pbia8WgYNMmVFA2DJhdWXCypaPrJJPhNgere/ME1wZM9aQ78oOMrGItJlIJIyiVf8rFdxWLW4+UzBfSyImv5vDCg8URPKlf1afw+IYQQO07eIGv5jMcc+v+2OPhjnqThkbV89g9kee9njZzlM5Fw+GXOpueKwa4vU1R9dmNACCHEY91RMqbH5Ws2ZVcR01ySRY/OCwXq+5LU9yWJaS5ayeeV/hQ5y6e+L8nOkzG2dy3vEYETK8Q0l7pwgpThURdOUBdOkLc89vYmiGkug9MGe3sTRHMSWyrqwgme+fw6FccXF0XFsTl026cmFGUx7VATilITihK+lKfsKjr/yKx1CymHklTUhKIEupd4uH32H/HQRzMYZZ94XlJ2FasFyWpBcmneIFN0CYZWqO5e4vlT15CeQrM8qruXeKQ9woOHp3aKB1onieccaj9ZIKW7PNVxdY1dXfOkiy77Ty2TNVzmV21az8R59MgM93842SuEEGJzyxjVx/9Fs1xe+mKB85ECgaMRAkcj1HbOYTk+17Nl9nTNkdIljx+ZZnPLldym5j/vEUIIce+7o1R9PEWwaxbD9nA9RVqXzMRMpqImTx+bwSx7pHVJoH2aLe+Pcfc7o6+uDWnT2yNUtk1Q2TbBjsOTXJzVsKVPseRxcVYjrUtOnI1T2TbB1pbL3PXWyPop3/nGebYdGmf7B3/dkm2Hxrmj+Zyzsfn3resEGxqHOzYc+I3bonH4f3f+Dz63ssfSaOz4AAAAAElFTkSuQmCC";
var bingicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABMUlEQVQ4jY2SsU7DMBCG/TJYYqpEPDojcbq0NGM7sXdnggnigYFOyVDqLLBAkRJLTIwJSwdYw8gj8AQ/Q0kaO6HNSZbPp/P332+ZkJ7hSo2uvNdFV2rwMEOVGw28UVjl5bZZaqi8hA3aqzB/KOBKDVWUrcZ6ir/dgLlSY/HxAx5mmD++d15u7jzMjDNxpcbZyzeE+mz563o4bteaY9nj2bktwP97F7upS72yUgdLfNDIA428g9SD/6APZG84SoDGwoDQeFurly3CEh+OEmBKIFgPcWwBCCHkKPJwt7nA+dvIFBg/C9wUV3VhsbnF4L4NmKYT0Fjg9HVoApgSSL/WBuBkZQKm6QQ08jDLgraF8ZPAdX6JJnCw3AFo5IHGArMs2NVsi44SYIkPlviozraFrvgFK3TyTsPvtF8AAAAASUVORK5CYII=";
var lmricon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQ0lEQVQ4jX2TX2xTdRTHT7O4GWL0gSwKmphoi3SsdFXHZiRjDExGSIxGHoTgwzDAUoM4skgEE6ckmiiEB2D8GYqbo2LLrmxZ51rWlob+W1e2ua2z2tp1ZVzrunZr161r7/3drw9TCLr4Sc7b+Zycc3IO0QNkY4M333LrD19zGbSc64aWc/VoOZepnnOZD3KuHi3nNB9rCQQcW2kl7CPjH3tPF7OUjpAxEbKDhNwEQUgSxBRBiD8GYWY/UlONzHO76YJery+4LwcmJmrHZtL5tlOVmGsjzPcQFgcIuRBBmCaIaYKYJIip18HyHiylv2Ae5wUtERGFef5ZZzQWS4sSmjgO060yzBsJi/2E3G8E4Y/lDpajDJIwDEkMwW2rHvf5fI/QlZHQFc+CBO8CQ9efOVw8s225gIewFCDkeRnEuSKwzGqw7PuQWAySlMFcrJ4NeIyv0SFv+N5nvIjdgSx2+NLYZ/Sio7nW4uTqdE7jIZ3TfFzntH6u03ON9g/aq9DQvgkftlfg5A+1aGk50EG77MHEK3cyKLHPQm6aRrkljqYu+/V/L/mNjroual0HuqwAnVeAzsix9og6Rg23xjmlLQm5OQ65OQ7FzRlstUyJtoHB7f/Ivf6+2kdNKpFMSlC3EvTjepDhBexo3tNLY+Ep9YaeyaX1tiSU9llscKSw0TOPPTecQ8FgsCgYDBZtt789Sv6NoGEVaKAU5C5F4fWSrHPIW05ERMetQxfV/fPQ+Bbw8nAWFaM5vDq6iK9tt9+77Pnu8NOz20AJDSimAd0tA4XVOGhovHR/vkgksqbqVjC5+VcBVSGGLb8zbAkxVHe642+OvpuQiSqQoAblNaClF1Hs2jQdjUbXPrSks1bHR5UjWZQPZqDxpKFyzEJ17VNckr5HIZOD2HMgUQHKrsOpn84e+c8p8zy/6qVzvZFnDJN46moYxedM+HKyGUPSCOpZI9awUjzBFCjr2+zneX7Viv/Q2tm3t+CEixWccKC68ygmhCj8wi8wCr04JnyCkruqfHd/984V5b+RnbxqbNj11VHLzrZ9kRr9O9ka614orTXseUPZvW8s39b9n/wQfr+/MBwOP+n+2V3huOOoTCQSj6+U9xeWlBixn0UlkAAAAABJRU5ErkJggg==";
var maillicon="data:image/gif;base64,R0lGODlhEAAQAPeSAPt3d+9fX8kTE39xVP+wsCFiAP/hpv/Sd4NYAf/Rdf/Whf/Ufebe3v/Teo+Caf/Xh//hpEAYAHZWF/+3JtfSyf7s7P/cl//p6WolJakZD//Naf/19WJMIPBnZ/jOzoMkJPrY2P/GU+xxcU87FH9TEO+kDvv6+f+yGf39/NmzaJQyIKJMPO3554lXPm3OPP38/KSYImLKLehYWPeysvFubv+8NUa2C1a6H31EKox2SJSaOPaBgfbRhvbYnPt8fFpmFbN+FrCXY3UHB//HVjlTCf/BRf/pvG5SMq6Tk/F0dDOSAf/MZzGSAGhTKP/LZKx7Gv/dmT+JCPO3t8m3t4xhCf/x8ZsVFYEZBPyVleuWlvzd3fSSkko0DZVyK7ctJf/blJFsbIt9Ff++Pf/lsPOrq/LPiMctLfJ4eP/lsubk3v/YirOqmfauHGJQLd9CQlECAf7U1P/MzNnVzPnFV0AnAP23t//7+8leXkq8EJGFbPnBwfS3Pv+zG2NPKNSbKP+uDf+4K9K0d/yZmWFPK3o9FnRSJXZISG1dPPrS0rmyoreSR8MUEtytP+dQUNAhIfVsbN9AQNcwMP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJIALAAAAAAQABAAAAjbACUJFHghDgECdgYOrAKnjiAfACICwLJBoaQzjzJq1LijgsI7AUIm2TIDkZ4OAWhoGfihUSMQZES4nNlIhgeBGCDp3MlTpxspkgyZiUS0qNGiWcBYccS0aVMvK1ocGYFEiICrizKowFFIQhdFKcpQmPLmCiESVID42RPCSQIFX3pIYhABwZ8TE2oUGbLkwAMLEMageEGnBJ8wRH7M0dBADRQDaIwkksSFDSAYBQroWMAjUJAcTQblkTTgiRhGSphE4XDIwRo5JgamadNngI0beCzqFuiCRYzdkgICADs=";
var lingvicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACBElEQVR42o2Sy04TYRiGJ+oFtNANKaXFTmmhB+i0DGBpNbIQ2ZpwCV6ArlwYbwA35ZDYHXFjIqh4DCalFKZIoQwWp6YxdlGSSjKLYuyiST28fP9UFPpr9Eue3fs8k0x+Qfh52uWo/P7q+MfCxRi0Y2JRvGNERw32RhkR5CORgtB6hfErn6rJ5NdGo4F/8cLj+c4F8rHot9zkJPbvTkF/9RK1chn1ev2PPO/pARfYGR7CbHs73l4YMdgdGcbexAQ+3LyB/UQCuqLgy+EharUanrlcfCAny5ihwC6FVMaQjB2ZMYjcICMMdWwM1WoVT0UnH9gKh43ASWE7zAhhK0RIErJSELquY8l5ng9s0mCmrc0QtpkQkkgKIhtkDGBzgNGPSqWCJ93dfCBDo2kKZKXTwpt+RgCZAOH3o0w/97HDwQfWacACp4SAHwpJis+HdYbXi1KphEd2Ox9I02DabDa+ovh9TYkExlpfn0G6txfFYhGLXV18YJUGcQoYgrcprJGQNvBg1cNwQ9M0LNhsfCBFg7jZ1CIQbjdSDHo8jHw+j4XOTj6w7HIdxE2m34K7Kaww6OEco6oqHlqtfGDObr+WsFg+p1qEJEMUf7GRyfy4ZbGsCH+7O4Jw5p7NdvuBw7Hx2ulsnJQZ9+fnszQ7K/zPXRKEc1MdHdfnrNblJVGsLQYCB62bI3TCqVl5ZBgZAAAAAElFTkSuQmCC";
var pageurl;
var trtext;
var ctabpos; 
//------------------------Page context menu-------------------------------------------------  
(function TranslatePage(){
const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

    var contextMenu = document.getElementById("contentAreaContextMenu");
    var separator = document.getElementById("context-viewsource");
    var eventTarget = null;
    var menu = document.createElementNS(kXULNS, "menu");
    menu.id = "TranslatePage";
    menu.setAttribute("label", "Перевести страницу");
    menu.setAttribute("class", "menu-iconic");
    menu.setAttribute("image", mainicon);
    menu.hidden = true;
    contextMenu.insertBefore(menu, separator );
    var menuPopup = document.createElementNS(kXULNS, "menupopup");
    menu.appendChild(menuPopup);
var lst = [
       {
          label:"Перевести страницу в Google",
          command: gtr,
          image:gt1icon
        },
         {
          label:"Перевести страницу в Promt ",
          command:promttr,
          image:promticon
        },
        {
          label:"Перевести страницу в Yandex ",
          command:yndtr,
          image:yndicon
        },
        {
          label:"Перевести страницу в Bing",
          command:bingtr,
          image:bingicon
        },
       {
          label:"separator"
        },
        {
          label:"Перевести страницу в Google в новой вкладке",
          command: gtrnew,
          image:gt1icon
        },
         {
          label:"Перевести страницу в Promt в новой вкладке",
          command:promttrnew,
          image:promticon
        },
        {
          label:"Перевести страницу в Yandex в новой вкладке",
          command:yndtrnew,
          image:yndicon
        },
        {
          label:"Перевести страницу в Bing в новой вкладке",
          command:bingtrnew,
          image:bingicon
        }
        ];
   
for(var i = 0, m; m = lst[i]; i++){
    if (m.label=="separator"){
     var menuItem = document.createElementNS(kXULNS, "menuseparator");
         menuItem.id = "TranslatePage" + m.label.toString();
        menuPopup.appendChild(menuItem);
    } else {
        var menuItem = document.createElementNS(kXULNS, "menuitem");
        menuItem.setAttribute("label", m.label);
        menuItem.setAttribute("class", "menuitem-iconic");
        menuItem.setAttribute("image", m.image);
        menuItem.setAttribute("type", "m.radio");
        menuItem.addEventListener("command", m.command, false);
        menuItem.id = "TranslatePage" + m.label.toString();
        menuPopup.appendChild(menuItem);
        }
     }  
    contextMenu.addEventListener("popupshowing", setMenuDisplay, false);
   
 function setMenuDisplay(aEvent) {
 
                 pageurl=encodeURIComponent(content.document.location.href)
                 if (gContextMenu.isTextSelected)
                 {
                 document.getElementById("TranslatePage").hidden = true;
                 }
                 else
                 document.getElementById("TranslatePage").hidden = false;
                   } 
   

//--------Перевести страницу в Google--------------
function gtr(){
var url = "http://translate.google.com/translate?hl=ru&ie=UTF8&prev=_t&sl=auto&tl=ru&u="+pageurl;
loadURI(url);
}
//---------Перевести страницу в Promt---------------
function promttr(){
var url = "http://www.translate.ru/siteTranslation/autolink/?direction=ar&template=General&sourceURL="+pageurl;
loadURI(url);
}
//---------Перевести страницу в Yandex---------------
function yndtr(){
var url = "http://translate.yandex.net/translate_f?dir=auto&lang=auto-ru&ui=ru&url="+pageurl;
loadURI(url);
}
//---------Перевести страницу в Bing---------------
function bingtr(){
var url = "http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a="+pageurl;
loadURI(url);
}
//--------Перевести страницу в Google в новой вкладке--------------
function gtrnew(){
var url = "http://translate.google.com/translate?hl=ru&ie=UTF8&prev=_t&sl=auto&tl=ru&u="+pageurl;
getBrowser (). selectedTab = getBrowser (). addTab (url);
}
//---------Перевести страницу в Promt в новой вкладке---------------
function promttrnew(){
var url = "http://www.translate.ru/siteTranslation/autolink/?direction=ar&template=General&sourceURL="+pageurl;
getBrowser (). selectedTab = getBrowser (). addTab (url);
}
//---------ППеревести страницу в Yandex в новой вкладке---------------
function yndtrnew(){
var url = "http://translate.yandex.net/translate_f?dir=auto&lang=auto-ru&ui=ru&url="+pageurl;
getBrowser (). selectedTab = getBrowser (). addTab (url);
}
//---------Перевести страницу в Bing в новой вкладке---------------
function bingtrnew(){
var url = "http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a="+pageurl;
getBrowser (). selectedTab = getBrowser (). addTab (url);
}

})();
(function TranslateSelected(){
const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

    var contextMenu = document.getElementById("contentAreaContextMenu");
    var separator = document.getElementById("context-searchselect");
    var eventTarget = null;
    var menu = document.createElementNS(kXULNS, "menu");
    menu.id = "TranslateSelected";
    menu.setAttribute("label", "Перевести выделенный текст");
    menu.setAttribute("class", "menu-iconic");
    menu.setAttribute("image", mainicon);
    menu.hidden = true;
    contextMenu.insertBefore(menu, separator );
    var menuPopup = document.createElementNS(kXULNS, "menupopup");
    menu.appendChild(menuPopup);
var lst = [
       {
          label:"Заменить выделенный текст переводом",
          command:trsel01,
          image:gt1icon
        },
         {
          label:"Перевести выделенный текст в окне",
          command:trsel02,
          image:gt1icon
        },
       {
          label:"separator"
        },
        {
          label:"Перевести выделенный текст в Google",
          command:trsel03,
          image:gt1icon
        },
        {
          label:"Перевести выделенный текст в PROMT",
          command:trsel04,
          image:promticon
        },
        {
          label:"Перевести выделенный текст в Bing Translator",
          command:trsel05,
          image:bingicon
        },
        {
          label:"separator"
        },
        {
          label:"Перевести выделенное слово в Яндексе",
          command:trsel06,
          image:yndicon
        },
        {
          label:"Перевести выделенное слово в Lingvo",
          command:trsel07,
          image:lingvicon
        },
       
        {
          label:"Перевести выделенное слово в Mail.ru",
          command:trsel08,
          image:maillicon
        }
        ];
   
for(var i = 0, m; m = lst[i]; i++){
    if (m.label=="separator"){
     var menuItem = document.createElementNS(kXULNS, "menuseparator");
         menuItem.id = "TranslateSelected" + m.label.toString();
        menuPopup.appendChild(menuItem);
    }
       else{
        var menuItem = document.createElementNS(kXULNS, "menuitem");
        menuItem.setAttribute("label", m.label);
        menuItem.setAttribute("class", "menuitem-iconic");
        menuItem.setAttribute("image", m.image);
        menuItem.setAttribute("type", "m.radio");
        menuItem.addEventListener("command", m.command, false);
        menuItem.id = "TranslateSelected" + m.label.toString();
        menuPopup.appendChild(menuItem);
        }
    }
    contextMenu.addEventListener("popupshowing", setMenuDisplay, false);
     
    function setMenuDisplay(aEvent) {
                 if (gContextMenu.isTextSelected)
                 {
                 var doc = getBrowser (). contentDocument;
                 trtext = doc. defaultView. getSelection ();
                 ctabpos = gBrowser.mCurrentTab._tPos +1;
                                  document.getElementById("TranslateSelected").hidden = false;
                 }
                 else
                 document.getElementById("TranslateSelected").hidden = true;
                   } 
                   
//----------Заменить текст переводом------------
function trsel01(){
var fullUrl = "http://translate.google.hu/translate_t?text="+trtext+"&hl=ru"+"&langpair=auto|ru&tbb=1" ;
       function removeHTMLTags(mitkell) {  //clean up a string from html tags
       var strInputCode = mitkell;
       var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
       return strTagStrippedText;
                                        }
           function infoReceived() {  // if there is response from Google then write out translation
           
           var output = httpRequest.responseText;
           if (output.length) {
             // Build the output string from Google Page
             output = output.replace(/&quot;/gi,'"');
             output = output.replace(/&lt;/gi,'<');
             output = output.replace(/&gt;/gi,'>');
             output = output.replace(/&amp;/gi,'&');
             output = output.replace(/'/gi,"'");
             var fieldArray = output.split('</head>');
             if (fieldArray[1].search('class="short_text"')!=-1) {
                var tempResz = fieldArray[1].split('<span id=result_box class="short_text">');
             }
             else if (fieldArray[1].search('class="medium_text"')!=-1) {
                var tempResz = fieldArray[1].split('<span id=result_box class="medium_text">');
             }
             else {
                var tempResz = fieldArray[1].split('<span id=result_box class="long_text">');
             }
             var kimenet = tempResz[1].split('</span></div>');
             var range = content.getSelection().getRangeAt(0);
             range.deleteContents();
             range.insertNode(document.createTextNode(removeHTMLTags(kimenet[0])));
           }
        }

        httpRequest = new XMLHttpRequest();
        httpRequest.open("GET", fullUrl, true);
        httpRequest.onload = infoReceived;
        httpRequest.send(null);
}    

//----------Перевести выделенный текст в окне------------
function trsel02(){
var url1="http://translate.google.com/translate_t?prev=hp&hl=ru&js=y&text=";
var url2="&file=&sl=en&tl=ru&history_state0=#";
var urltr=url1+trtext+url2;

var xmlhttp
function gettransdata()
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }

xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",urltr,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
  {
  var trin=xmlhttp.responseText;

var chkpoint='<span id=result_box';
var arrayOfStrings = trin.split(chkpoint);

var trouttmp=arrayOfStrings[1];
var chkpoint='<div id=spell-place-holder';
var arrayOfStrings = trouttmp.split(chkpoint);

trouttmp1=arrayOfStrings[0];
trouttmp2=trouttmp1.replace(/<span.+?">/g,"")
trouttmp2=trouttmp2.replace(/<\/span>/g,"")
trouttmp2=trouttmp2.replace(/class="long_text">/g,"")
trouttmp2=trouttmp2.replace(/class="short_text">/g,"")
trouttmp2=trouttmp2.replace(/class="medium_text">/g,"")
trouttmp2=trouttmp2.replace(/<br><\/div><\/div>/g,"")

var jurl='data:text/html,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html><head><title></title><meta charset="utf-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>'+trouttmp2+'</body></html>';

var sizex = screen.width/2.2
var sizey = screen.height/2.2
var posx=screen.width-sizex;
var posy=screen.height-sizey;
var wnd = window.open(jurl, this.name, "width="+(sizex-30)+",height="+(sizey-87)+",screenX="+posx+",screenY="+posy+",status=no,scrollbars=yes,resizable=yes");
if (wnd.focus) {
  wnd.focus(); };

  }
}

function GetXmlHttpObject(){
if (window.XMLHttpRequest)
  { return new XMLHttpRequest();}
if (window.ActiveXObject)
  { return new ActiveXObject("Microsoft.XMLHTTP");}
return null;
}
gettransdata();

}     
//--------Перевести текст в Google--------------
function trsel03(){
var url="http://translate.google.com/translate_t?hl=ru#auto|ru|"+trtext;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
}

//---------Перевести текст в PROMT---------------
function trsel04(){
var url="http://www.translate.ru/?External=IE8Accelerator&formEncoding=utf-8&direction=ar&prmtlang=ru&status=translate&template=General&source="+trtext;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
}

//---------Перевести текст в Bing Translator---------------
function trsel05(){
var url="http://www.microsofttranslator.com/?ref=IE8Activity&to=ru&SourceText="+trtext;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
}
//----------Перевести слово в Яндексе------------
function trsel06(){
var urltr="http://translate.yandex.ru/tr.json/translate?callback=json.c(6)&lang=en-ru&text="+trtext;

var xmlhttp
function gettransdata()
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }

xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",urltr,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
  {
  var tryain=xmlhttp.responseText;
tryain=tryain.replace(/json\.c\(6\)/g,"")
tryain=tryain.slice(2,-2)

var jurl='data:text/html,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html><head><title></title><meta charset="utf-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>'+tryain+'</body></html>';

var sizex = screen.width/2.2
var sizey = screen.height/2.2
var posx=screen.width-sizex;
var posy=screen.height-sizey;
var wnd = window.open(jurl, this.name, "width="+(sizex-30)+",height="+(sizey-87)+",screenX="+posx+",screenY="+posy+",status=no,scrollbars=yes,resizable=yes");
if (wnd.focus) {
  wnd.focus(); };
  }
}

function GetXmlHttpObject(){
if (window.XMLHttpRequest)
  { return new XMLHttpRequest();}
if (window.ActiveXObject)
  { return new ActiveXObject("Microsoft.XMLHTTP");}
return null;
}
gettransdata();

}

//-----------Перевести слово в Lingvo--------------
function trsel07(){
var url="http://lingvopro.abbyyonline.com/ru/Search/en-ru/"+trtext;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
}

//----------Перевести слово в Mail.ru------------
function trsel08(){
var url="http://lingvo.mail.ru/?lang_id=1033&translate=&text="+trtext;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
}



})();

Отредактировано Пандёнок (16-09-2012 03:10:07)

Отсутствует

 

№216-09-2012 23:04:09

LBra
Участник
 
Группа: Members
Зарегистрирован: 20-10-2011
Сообщений: 40
UA: Firefox 10.0

Re: [CB] Context translate

Пандёнок пишет

с косметическими изменениями

Пандёнок

Я писал об этой кнопке тут и тут, там была куча недостатков. Твои косметические изменения в чем состоят? Напиши подробнее, нет времени вникать в код. Недостатки исправлены или ты только иконки заменил?...
Я пользуюсь этой кнопкой, за неимением лучшего..., после достаточно крупных изменений и сокращений...
Все руки не доходят переделать пункты ее сабменю в обычные меню, мне так удобнее...

Отсутствует

 

№316-10-2012 10:46:00

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Seamonkey 2.13

Re: [CB] Context translate

LBra
Под «косметическими изменениями» я понимаю внешние изменения. Точно помню, что поменял «Перевести Страницу» на «Перевести страницу» и хотел подправить что-то ещё. Мелочи, которые лично мне трудно было терпеть.

1. Не во всех вариантах перевода задействован автовыбор языка исходного текста так как жестко забит исходный английский
2. Нельзя перевести кирилличные тексты и слова, отображаются крокозябры.

Английский нигде не забит, везде автоматическое определение языка онлайн-переводчиками. Возможность автовыбора зависит от самих используемых онлайн-сервисов перевода. Подскажите, где был только английский. По второй проблеме пока ничего не могу сказать.

LBra пишет

нужен код, определяющий язык текста страницы, в виде  en, de, ru, fr и т.д.

В этом я не силён. Притом и язык страницы не гарантирует, что такая-то строка написана на том же языке.

Отредактировано Пандёнок (16-10-2012 11:12:51)

Отсутствует

 

№416-10-2012 11:17:19

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Seamonkey 2.13

Re: [CB] Context translate

LBra пишет

после достаточно крупных изменений и сокращений...
Все руки не доходят переделать пункты ее сабменю в обычные меню, мне так удобнее...

Мне кажется, Вам в тему «Дополнения-переводчики». Там есть хороший выбор готовых расширений.

Отсутствует

 

№503-11-2012 19:23:12

dubina1975
Участник
 
Группа: Members
Зарегистрирован: 03-11-2012
Сообщений: 1
UA: Firefox 13.0

Re: [CB] Context translate

Ребята.я вабсолютный ноль в Promt!!! Подскажите кто-нибудь,как сделать что бы при наведении курсора на слово оно мгновенно переводилось,например читая документ в Adobe. Спасибо...

Отсутствует

 

№622-10-2013 19:39:10

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

Чуть переработал эту кнопку (тестовый вариант):
- перевод в окне в Google, Яндекс, Promt, Microsoft - за оcнову взято переводчик от lex1 и его окно перевода
- при нажатии на заголовок окна открывается перевод выделенного текста в новой вкладке
- перевод в окне Яндекс, Promt, Microsoft на основе их API
- замена текста и перевод теста в окне с форматированием текста, но без сохранения стиля
- переработан перевод текста в новой вкладке Яндекс 
- перевод страницы в новой вкладке для Google, Яндекс, Promt без верхнего фрейма, Microsoft с укороченным фреймом
- в настройках можно задать язык перевода, пока только для окон
- в настройках можно задать горячие клавиши
- кнопку  можно конструировать по своему желанию удаляя ненужные переводчики и пункты

Настройки

Выделить код

Код:

/*Initialization Code*/
//--------------------------------Перевод----------------------------------------
//Здесь можно изменять параметры:
//Выбираем язык перевода:
//Google поддерживает 71 языков и auto
//Microsoft поддерживает 45 языков- "" : auto,"en","ar","bg","hu","vi","ht","nl","el","da","he","id","es","it","ca","zh-CHT","zh-CHS","tlh","tlh-Qaak","ko","lv","lt","ms","mt","de","no","fa","pl","pt","ro","ru","sk","sl","th","tr","uk","ur","fi","fr","hi","mww","cs","sv","et","ja" 
//Promt поддерживает 7 языков- "a": "auto", "e": "en", "s": "es", "i": "it", "g": "de", "p": "pt", "r": "ru", "f": "fr", 
//Яндекс поддерживает 33 языка- "": auto,"az","sq","en","hy","be","bg","hu","nl","el","da","es","it","ca","lv","lt","mk","de","no","pl","pt","ro","ru","sr","sk","sl","tr","uk","fi","fr","hr","cs","sv","et" 

//Варианты выбора языка переводчика для перевода текста в окне. Нужное разкоментировать. Остальное закоментировать.
//Google,
var langFrom_google_text = "auto";//авто
var langTo_google_text = "ru"; 
//Microsoft 
var langFrom_Microsoft_text = "";//авто 
var langTo_Microsoft_text = "ru"; 
//Promt 
var langFrom_PROMT_text = "a";//авто
var langTo_PROMT_text = "r"; 
//Яндекс 
var langFrom_yandex_text = ""; //авто
//var langFrom_yandex_text = "en-"; //английский, тире обязательно
var langTo_yandex_text = "ru";

//Назначем горяче клавиши
//Цифровые значения назначения клавиш
//http://jquery.page2page.ru/index.php5/%D0%9A%D0%BE%D0%B4%D1%8B_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2_%D0%B8_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88#.D0.9A.D0.BE.D0.B4.D1.8B_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88var Key = 112 // Клавища F1 для перевода  текста в окне
// или var key = KeyEvent.DOM_VK_F9; // Клавища F9
var Key = 112;  // Клавища F1 для перевода  текста в окне
var Key1 = 113; // Клавища F2 для перевода  страницы в той же вкладке
var Key2 = 119; // Клавища F8 замена текста переводом
//var Key3 = 120; // Клавища F9 для перевода  страницы в новой вкладке
//var Key4 = 123; // Клавища F12 для перевода текста в новой вкладке

//Варианты выбора переводчика для перевода текста в окне. Нужное разкоментировать. Остальное закоментировать.
var ujs = ujs_google_translate; //Google 
//var ujs = ujs_PROMT_translate; //PROMT 
//var ujs = ujs_yandex_translate; //Яндекс 
//var ujs = ujs_Microsoft_translate; //Microsoft          

//Варианты выбора переводчика для перевода страниц в той же вкладке. Нужное разкоментировать. Остальное закоментировать.
var ujs1 = ujs_googlePage_translate; //Google 
//var ujs1 = ujs_PromtPage_translate; //Promt 
//var ujs1 = ujs_YandexPage_translate; //Yandex
//var ujs1 = ujs_MicrosoftPage_translate; //Microsoft
 
//Варианты выбора переводчика для перевода страниц в новой вкладке. Нужное разкоментировать. Остальное закоментировать. 
//var ujs2 = ujs_GooglePageNew_translate; //Google 
//var ujs2 = ujs_PromtPageNew_translate; //Promt 
//var ujs2 = ujs_yandexPageNew_translate; //Yandex
//var ujs2 = ujs_MicrosoftPageNew_translate; //Microsoft  

//Варианты выбора переводчика для перевода теста в новой вкладке. Нужное разкоментировать. Остальное закоментировать. 
//var ujs3 = ujs_GoogleTextPageNew_translate; // Google 
//var ujs3 = ujs_PromtTextPageNew_translate; //Promt 
//var ujs3 = ujs_yandexTextPageNew_translate; //Yandex
//var ujs3 = ujs_MicrosoftTextPageNew_translate; //Microsoft    
                        
//Назначаем иконки
var mainicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUKM9VkSFOhFEQg799/CjEihWAwKDgIFwAyWHgLDjuAGfZgMCQDQkG8abtQ/z8u9A0k4rOTCez2u0GB0gCsLELbCuxLduJy0zAZgOQBBqQALEbtOQoyRgjSZLt9nOaJyf5K2zPjr01SWst8ermZtzd5euLhCQ2Y9iOHXssIvZYr1f39x/T87Ourtr7O3ZUyK6KlN5HVRaOqlxcNGACJKRItigdHFXpFdXoPVWRGmSac0suRYWUWhz7zt5/BXh65Pi6Hr7rI/IopZyqpSqldLsq9onPX3iabuHYr6o3pCVHP2Sa11nIzZdnMAmOSpyejiocVEhtjrwc15L5l4HVDgReCGTR+V9n/AAByma0J+vVwwAAAABJRU5ErkJggg==";
//var mainicon1="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAFuSURBVHjapJM/SEJRGMV/Lx9lWGoENjhkOCVBBUYRUUNZ0aBE2VbQHOLaoBA4GrRGEIoIgdLQ1GASGlTjW2oI4U06GCTRH8yQ2yKKPIdeHbj8uMN37uHjHkkIwX8kAd1AX4N6VAPeZcDi8RyV/f4Z0ul7OtF/dtjRYeD63CYBjuPjW7VQKLKw4CKXe9QwGt3sHF+SRmTAkEzeEAyuEovn8XndxON5vF43sVgOn2+K1/XdtsGuwQG+H54ADDLAxsY0qdQdK8sTJBJ5trZm27hzFdO8Xq/XQZaRAU5PswQCa5ycZNnentfwZXyxPbrVwmf5uXl3HhxciOHhfREOXwqrNahhJ1UqFQE4AZx2+56IRDLCbA6IUOhSw3Kvo+0828bEw5CrZaCqqtArVVUF4JQBSqNzmIwmRPXrd7/P2EOp+tHagaIouhMoitJMUCtPLpH5WxVqEmAB7EC/zuE3oCgBhkaRDDoN6kBN+m+dfwYAI5QcdaFOn+AAAAAASUVORK5CYII=";
var gticon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADPElEQVR4nGWTTWhjZRSG3/uTNr39mTqTn1KacagTqyKIlYJ2ExQCUhiprgpduRVFpLvZjOCsXEgWFqRk0RZcWLopmOnCQcPUsVBiTEZbalrGTJOZJm2aNGm++92b737fcdGZTfvAuznwnMV7OBouEI/HdSHEyNzcXCwajb7r8/n6T09P99bW1u4PDw8/SiQSbHd396IGBINBJJPJQDqdvssYK0kpO0SkiIiUUlII0SqVSr8lk8n3JycnjUsLZmdnb5bL5T+klPK5RNzp0BlzyHEFKXU+cxynubKy8tXExIQJABoAzM/PB6amptYikch70DRtv3iMh5kClPQglcKzozMMXhnAh7E3EL0RhCcEX19f/6xSqSxhdHRUT6VS39i2LYUQtJ7epm9/uEdHtSZJKUkpRa0zm75fvE+f3/mRmM3JcRyqVqulmZmZl7G6uhopl8sHtm3TduEpffH1T1Srn9FFavUmnTRaJKUkx3Go0WiojY2N22aj0Yj5fL6wJyVS6R289koYVwd7L3V07aUBAICUEkopSCk1v99/Sw+Hw5NSyi7OXZQrTQwFBy6f6DlKKSil4HkeOp0ODMO4btq23S+EgFQaAAKzO1BKQdd1AICmaSAiEBGUlBBCwHVduK4LzrlpHh4e7nHOVW+vofdbPmxkHuPWB6/D6vFD13UoRfj38TPsP6mBOxJjN64gdNUC5xz1er2l5/P5XxqNBvNEByPBLmS2n+LXzQK4zcH5ebp9GkAeEksPwJgNxhhs20axWMzo7Xb7US6Xyx7Xanh7LIhXRywklh7i9z/30Wy1YNsMfT0mrG4DGoCO64Ixhlqt5uTz+UVjZ2dHDA0NFYPB4Cd9fVb3W2MhnDZb+DldwD+FCk5OWvivVEX27ycY7APevHkNouNSNpu9l8vlvtMAIBQKGfF4/Mvp6em7oVCoxzAMOB0PjAsQEfxdPvi7DBgG4Dgu5fP5vxYWFj4uFAoHBgAwxmhvby8jpTywLOsdy7IGfKah9XSb56IOeJ7A0dGxs7m5mVpeXv60Xq8fcM7Pf+EFsVhMq1Qq18fHx2ej0ehHgUAgYpqm2W63W6VSKVMsFhe3trYeVKtV/sL5HwhICaDODiyAAAAAAElFTkSuQmCC";
var promticon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQ0lEQVQ4jX2TX2xTdRTHT7O4GWL0gSwKmphoi3SsdFXHZiRjDExGSIxGHoTgwzDAUoM4skgEE6ckmiiEB2D8GYqbo2LLrmxZ51rWlob+W1e2ua2z2tp1ZVzrunZr161r7/3drw9TCLr4Sc7b+Zycc3IO0QNkY4M333LrD19zGbSc64aWc/VoOZepnnOZD3KuHi3nNB9rCQQcW2kl7CPjH3tPF7OUjpAxEbKDhNwEQUgSxBRBiD8GYWY/UlONzHO76YJery+4LwcmJmrHZtL5tlOVmGsjzPcQFgcIuRBBmCaIaYKYJIip18HyHiylv2Ae5wUtERGFef5ZZzQWS4sSmjgO060yzBsJi/2E3G8E4Y/lDpajDJIwDEkMwW2rHvf5fI/QlZHQFc+CBO8CQ9efOVw8s225gIewFCDkeRnEuSKwzGqw7PuQWAySlMFcrJ4NeIyv0SFv+N5nvIjdgSx2+NLYZ/Sio7nW4uTqdE7jIZ3TfFzntH6u03ON9g/aq9DQvgkftlfg5A+1aGk50EG77MHEK3cyKLHPQm6aRrkljqYu+/V/L/mNjroual0HuqwAnVeAzsix9og6Rg23xjmlLQm5OQ65OQ7FzRlstUyJtoHB7f/Ivf6+2kdNKpFMSlC3EvTjepDhBexo3tNLY+Ep9YaeyaX1tiSU9llscKSw0TOPPTecQ8FgsCgYDBZtt789Sv6NoGEVaKAU5C5F4fWSrHPIW05ERMetQxfV/fPQ+Bbw8nAWFaM5vDq6iK9tt9+77Pnu8NOz20AJDSimAd0tA4XVOGhovHR/vkgksqbqVjC5+VcBVSGGLb8zbAkxVHe642+OvpuQiSqQoAblNaClF1Hs2jQdjUbXPrSks1bHR5UjWZQPZqDxpKFyzEJ17VNckr5HIZOD2HMgUQHKrsOpn84e+c8p8zy/6qVzvZFnDJN46moYxedM+HKyGUPSCOpZI9awUjzBFCjr2+zneX7Viv/Q2tm3t+CEixWccKC68ygmhCj8wi8wCr04JnyCkruqfHd/984V5b+RnbxqbNj11VHLzrZ9kRr9O9ka614orTXseUPZvW8s39b9n/wQfr+/MBwOP+n+2V3huOOoTCQSj6+U9xeWlBixn0UlkAAAAABJRU5ErkJggg==";
var yndicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC8UlEQVQ4jY2TTWgcZQCGv1OLgkX0UlChaC8iEUo1kNJV0UiTNl1SFasYk2pELeohVkOgWkILDSTR2tWGjRILhigVoxIbf1oaWkJtIokmYWOa3253t2T/Z2dnZmfnm5nv8RZIhdIXnst7eE7vK+oH5JvPfSe5HfZ963SImxPsL9E45PD6r/KWvDYsCfaXnN2nzYp1gt2nDZqGbJqGbJrP2ixrPpZU+AoMR5GxFCNRj6Yhmxe/t6j9uji6TvDsV3kaBk1az5XQy4q0pbia8WgYNMmVFA2DJhdWXCypaPrJJPhNgere/ME1wZM9aQ78oOMrGItJlIJIyiVf8rFdxWLW4+UzBfSyImv5vDCg8URPKlf1afw+IYQQO07eIGv5jMcc+v+2OPhjnqThkbV89g9kee9njZzlM5Fw+GXOpueKwa4vU1R9dmNACCHEY91RMqbH5Ws2ZVcR01ySRY/OCwXq+5LU9yWJaS5ayeeV/hQ5y6e+L8nOkzG2dy3vEYETK8Q0l7pwgpThURdOUBdOkLc89vYmiGkug9MGe3sTRHMSWyrqwgme+fw6FccXF0XFsTl026cmFGUx7VATilITihK+lKfsKjr/yKx1CymHklTUhKIEupd4uH32H/HQRzMYZZ94XlJ2FasFyWpBcmneIFN0CYZWqO5e4vlT15CeQrM8qruXeKQ9woOHp3aKB1onieccaj9ZIKW7PNVxdY1dXfOkiy77Ty2TNVzmV21az8R59MgM93842SuEEGJzyxjVx/9Fs1xe+mKB85ECgaMRAkcj1HbOYTk+17Nl9nTNkdIljx+ZZnPLldym5j/vEUIIce+7o1R9PEWwaxbD9nA9RVqXzMRMpqImTx+bwSx7pHVJoH2aLe+Pcfc7o6+uDWnT2yNUtk1Q2TbBjsOTXJzVsKVPseRxcVYjrUtOnI1T2TbB1pbL3PXWyPop3/nGebYdGmf7B3/dkm2Hxrmj+Zyzsfn3resEGxqHOzYc+I3bonH4f3f+Dz63ssfSaOz4AAAAAElFTkSuQmCC";
var bingicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABMUlEQVQ4jY2SsU7DMBCG/TJYYqpEPDojcbq0NGM7sXdnggnigYFOyVDqLLBAkRJLTIwJSwdYw8gj8AQ/Q0kaO6HNSZbPp/P332+ZkJ7hSo2uvNdFV2rwMEOVGw28UVjl5bZZaqi8hA3aqzB/KOBKDVWUrcZ6ir/dgLlSY/HxAx5mmD++d15u7jzMjDNxpcbZyzeE+mz563o4bteaY9nj2bktwP97F7upS72yUgdLfNDIA428g9SD/6APZG84SoDGwoDQeFurly3CEh+OEmBKIFgPcWwBCCHkKPJwt7nA+dvIFBg/C9wUV3VhsbnF4L4NmKYT0Fjg9HVoApgSSL/WBuBkZQKm6QQ08jDLgraF8ZPAdX6JJnCw3AFo5IHGArMs2NVsi44SYIkPlviozraFrvgFK3TyTsPvtF8AAAAASUVORK5CYII=";
var lmricon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQ0lEQVQ4jX2TX2xTdRTHT7O4GWL0gSwKmphoi3SsdFXHZiRjDExGSIxGHoTgwzDAUoM4skgEE6ckmiiEB2D8GYqbo2LLrmxZ51rWlob+W1e2ua2z2tp1ZVzrunZr161r7/3drw9TCLr4Sc7b+Zycc3IO0QNkY4M333LrD19zGbSc64aWc/VoOZepnnOZD3KuHi3nNB9rCQQcW2kl7CPjH3tPF7OUjpAxEbKDhNwEQUgSxBRBiD8GYWY/UlONzHO76YJery+4LwcmJmrHZtL5tlOVmGsjzPcQFgcIuRBBmCaIaYKYJIip18HyHiylv2Ae5wUtERGFef5ZZzQWS4sSmjgO060yzBsJi/2E3G8E4Y/lDpajDJIwDEkMwW2rHvf5fI/QlZHQFc+CBO8CQ9efOVw8s225gIewFCDkeRnEuSKwzGqw7PuQWAySlMFcrJ4NeIyv0SFv+N5nvIjdgSx2+NLYZ/Sio7nW4uTqdE7jIZ3TfFzntH6u03ON9g/aq9DQvgkftlfg5A+1aGk50EG77MHEK3cyKLHPQm6aRrkljqYu+/V/L/mNjroual0HuqwAnVeAzsix9og6Rg23xjmlLQm5OQ65OQ7FzRlstUyJtoHB7f/Ivf6+2kdNKpFMSlC3EvTjepDhBexo3tNLY+Ep9YaeyaX1tiSU9llscKSw0TOPPTecQ8FgsCgYDBZtt789Sv6NoGEVaKAU5C5F4fWSrHPIW05ERMetQxfV/fPQ+Bbw8nAWFaM5vDq6iK9tt9+77Pnu8NOz20AJDSimAd0tA4XVOGhovHR/vkgksqbqVjC5+VcBVSGGLb8zbAkxVHe642+OvpuQiSqQoAblNaClF1Hs2jQdjUbXPrSks1bHR5UjWZQPZqDxpKFyzEJ17VNckr5HIZOD2HMgUQHKrsOpn84e+c8p8zy/6qVzvZFnDJN46moYxedM+HKyGUPSCOpZI9awUjzBFCjr2+zneX7Viv/Q2tm3t+CEixWccKC68ygmhCj8wi8wCr04JnyCkruqfHd/984V5b+RnbxqbNj11VHLzrZ9kRr9O9ka614orTXseUPZvW8s39b9n/wQfr+/MBwOP+n+2V3huOOoTCQSj6+U9xeWlBixn0UlkAAAAABJRU5ErkJggg==";
var maillicon="data:image/gif;base64,R0lGODlhEAAQAPeSAPt3d+9fX8kTE39xVP+wsCFiAP/hpv/Sd4NYAf/Rdf/Whf/Ufebe3v/Teo+Caf/Xh//hpEAYAHZWF/+3JtfSyf7s7P/cl//p6WolJakZD//Naf/19WJMIPBnZ/jOzoMkJPrY2P/GU+xxcU87FH9TEO+kDvv6+f+yGf39/NmzaJQyIKJMPO3554lXPm3OPP38/KSYImLKLehYWPeysvFubv+8NUa2C1a6H31EKox2SJSaOPaBgfbRhvbYnPt8fFpmFbN+FrCXY3UHB//HVjlTCf/BRf/pvG5SMq6Tk/F0dDOSAf/MZzGSAGhTKP/LZKx7Gv/dmT+JCPO3t8m3t4xhCf/x8ZsVFYEZBPyVleuWlvzd3fSSkko0DZVyK7ctJf/blJFsbIt9Ff++Pf/lsPOrq/LPiMctLfJ4eP/lsubk3v/YirOqmfauHGJQLd9CQlECAf7U1P/MzNnVzPnFV0AnAP23t//7+8leXkq8EJGFbPnBwfS3Pv+zG2NPKNSbKP+uDf+4K9K0d/yZmWFPK3o9FnRSJXZISG1dPPrS0rmyoreSR8MUEtytP+dQUNAhIfVsbN9AQNcwMP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJIALAAAAAAQABAAAAjbACUJFHghDgECdgYOrAKnjiAfACICwLJBoaQzjzJq1LijgsI7AUIm2TIDkZ4OAWhoGfihUSMQZES4nNlIhgeBGCDp3MlTpxspkgyZiUS0qNGiWcBYccS0aVMvK1ocGYFEiICrizKowFFIQhdFKcpQmPLmCiESVID42RPCSQIFX3pIYhABwZ8TE2oUGbLkwAMLEMageEGnBJ8wRH7M0dBADRQDaIwkksSFDSAYBQroWMAjUJAcTQblkTTgiRhGSphE4XDIwRo5JgamadNngI0beCzqFuiCRYzdkgICADs=";
var lingvicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACBElEQVR42o2Sy04TYRiGJ+oFtNANKaXFTmmhB+i0DGBpNbIQ2ZpwCV6ArlwYbwA35ZDYHXFjIqh4DCalFKZIoQwWp6YxdlGSSjKLYuyiST28fP9UFPpr9Eue3fs8k0x+Qfh52uWo/P7q+MfCxRi0Y2JRvGNERw32RhkR5CORgtB6hfErn6rJ5NdGo4F/8cLj+c4F8rHot9zkJPbvTkF/9RK1chn1ev2PPO/pARfYGR7CbHs73l4YMdgdGcbexAQ+3LyB/UQCuqLgy+EharUanrlcfCAny5ihwC6FVMaQjB2ZMYjcICMMdWwM1WoVT0UnH9gKh43ASWE7zAhhK0RIErJSELquY8l5ng9s0mCmrc0QtpkQkkgKIhtkDGBzgNGPSqWCJ93dfCBDo2kKZKXTwpt+RgCZAOH3o0w/97HDwQfWacACp4SAHwpJis+HdYbXi1KphEd2Ox9I02DabDa+ovh9TYkExlpfn0G6txfFYhGLXV18YJUGcQoYgrcprJGQNvBg1cNwQ9M0LNhsfCBFg7jZ1CIQbjdSDHo8jHw+j4XOTj6w7HIdxE2m34K7Kaww6OEco6oqHlqtfGDObr+WsFg+p1qEJEMUf7GRyfy4ZbGsCH+7O4Jw5p7NdvuBw7Hx2ulsnJQZ9+fnszQ7K/zPXRKEc1MdHdfnrNblJVGsLQYCB62bI3TCqVl5ZBgZAAAAAElFTkSuQmCC";


Общие функции

Выделить код

Код:

//Функция для горячих клавиш
addEventListener('keydown', function(e){
    if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == Key) ujs();
    if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == Key1) ujs1();
        if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == Key2) ujs_TexReplace_translate();
        //if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == Key3) ujs2();
        //if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == Key4) ujs3();
        }, false);
       
var btn = this;
btn.lastClick = {
    X: 0,
    Y: 0
};
addEventListener("mouseup", function(e) {
    if (e && e.button == 0 && e.view.top == content) {
        var lc = btn.lastClick;
        lc.X = e.clientX;
        lc.Y = e.clientY;
    }
}, false);

var safeHTMLParser = function(code) {
    var gUnescapeHTML = Cc["@mozilla.org/feed-unescapehtml;1"].getService(Ci.nsIScriptableUnescapeHTML);
    var doc = document.implementation.createDocument(xhtmlns, "html", null);
    var body = document.createElementNS(xhtmlns, "body");
    doc.documentElement.appendChild(body);
    body.appendChild(gUnescapeHTML.parseFragment(code, false, null, body));
    return doc;
};

//Создаем окно для перевода
var createWindow = function(text, status, title, id, pos, size){
    var win = document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content;
    var doc = win.document, wId = 'ujs_window'+(id || ''), w = doc.getElementById(wId);
    var keyDown = function(e){if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 27)doc.getElementById(wId).closeWin()};
    if(w)w.closeWin();
    w = doc.createElement('div');
    w.setAttribute('style', 'position:fixed;display:block;visibility:hidden;left:0;top:0;width:auto;height:auto;border:1px solid gray;padding:3px;margin:0;z-index:99999;overflow:hidden;cursor:move;'+(typeof w.style.borderRadius === 'string' ? 'background-color:#f3f5f7;padding-top:4px;border-radius:4px;box-shadow:0 0 12px rgba(0,0,0,.4);' : 'background:-o-skin("Window Skin");'));
    w.id = wId;
    w.closeWin = function(){
        doc.removeEventListener('keydown', keyDown, false);
        this.parentNode.removeChild(this);
    };
    w.addEle = function(str, style){
        var ele = doc.createElement('div');
        ele.setAttribute('style', style);
        if(str){
            ele.innerHTML = str;
            for(var el, all = ele.getElementsByTagName('*'), i = all.length; i--;){
                el = all[i];
                if(/^(script|frame|iframe|applet|embed|object)$/i.test(el.nodeName)){
                    el.parentNode.removeChild(el);
                }else{
                    for(var att = el.attributes, j = att.length; j--;){
                        if(/^on[a-z]+$/i.test(att[j].name))att[j].value = '';
                    }
                }
            }
        };
        return this.appendChild(ele);
    };
    var img = doc.createElement('div');
    img.setAttribute('style', 'display:block;float:right;width:18px;height:18px;padding:0;margin:0;border:none;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=");background:-o-skin("Caption Close Button Skin");');
    img.title = (win.navigator.language.indexOf('ru') == 0) ? '\u0417\u0430\u043A\u0440\u044B\u0442\u044C' : 'Close';
    img.addEventListener('click', function(){this.parentNode.closeWin()}, false);
    w.appendChild(img);
    w.addEle(title, 'display:table;color:#000;font:16px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;');
    var cnt = w.addEle(text, 'display:block;border:1px solid #aaa;margin:2px 0 1px 0;padding:4px;background-color:#fafcfe;color:#000;font:14px Times New Roman;width:240px;height:120px;overflow:auto;cursor:text;');
    w.addEle(status, 'display:table;color:#555;font:10px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;');
    w.addEventListener('mousedown', function(e){
        if(e.target == w){
            e.preventDefault();
            var grabX = e.clientX, grabY = e.clientY, origX = parseInt(w.style.left), origY = parseInt(w.style.top);
            var mouseMove = function(ev){
                w.style.left = origX+ev.clientX-grabX+'px';
                w.style.top = origY+ev.clientY-grabY+'px';
            };
            doc.addEventListener('mousemove', mouseMove, false);
            doc.addEventListener('mouseup', function(){doc.removeEventListener('mousemove', mouseMove, false)}, false);
        }
    }, false);
    doc.documentElement.appendChild(w);

    if(size){
        cnt.style.height = size.height;
        cnt.style.width = size.width;
    }else{
        for(var i = 3; i < 10; i++){
            if(cnt.scrollHeight > cnt.offsetHeight || cnt.scrollWidth > cnt.offsetWidth){
                cnt.style.height = 50*i+'px';
                cnt.style.width = 100*i+'px';
            }else break;
        }
    };
    var docEle = doc.compatMode == 'CSS1Compat' ? doc.documentElement : doc.body;
    var mX = docEle.clientWidth-w.offsetWidth, mY = docEle.clientHeight-w.offsetHeight;
    if(mX < 0){cnt.style.width = parseInt(cnt.style.width)+mX+'px'; mX = 0};
    if(mY < 0){cnt.style.height = parseInt(cnt.style.height)+mY+'px'; mY =0};
    var hW = parseInt(w.offsetWidth/2);
    w.style.left = (pos && pos.X < mX+hW ? (pos.X > hW ? pos.X-hW : 0) : mX)+'px';
    w.style.top = (pos && pos.Y+10 < mY ? pos.Y+10 : mY)+'px';
    w.style.visibility = 'visible';
    doc.addEventListener('keydown', keyDown, false);
};

//Функия выделения текста
var getSel = function (w) {
    var s, d = w.document;
    if (d.selection) {
        var r = d.selection.createRange();
        s = r ? r.text : ''
    } else {
        //s = d.getSelection().toString();
        s = d.getSelection();
        if (!s) {
            var e, t = d.getElementsByTagName('textarea'), u = d.getElementsByTagName('input'), i = t.length;
            while(e = (i > 0) ? t[--i] : u[-i--])try{
                if (e.offsetHeight > 0 && (s = e.value.substring(e.selectionStart, e.selectionEnd))) break
            }catch(x){}
        }
    };
    if (!s) for (var j = 0, f; f = w.frames[j]; j++) {
        try {
            if (s = getSel(f)) break
        } catch(x) {}
    };
    return s
};

function GetXmlHttpObject(){
         if (window.XMLHttpRequest){ return new XMLHttpRequest();}
         if (window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP");}
        return null;
        };


Вариатны переводчиков

Выделить код

Код:

//----------Перевести выделенный текст в окне Google------------
function ujs_google_translate() {
    var win = content, txt = getSel(win);
    if (txt) { 
        var xhr = new XMLHttpRequest();
        var encTxt = 'text=' + encodeURIComponent(txt), post = encTxt.length > 1024;
        var url="http://translate.google.com/translate_t?"+ (post ? '' : encTxt + '&')+"&sl="+langFrom_google_text+"&tl="+langTo_google_text+"&hl=ru&eotf=0&ujs=gtt";
        xhr.open(post ? 'POST' : 'GET', url, true);
        if(post)xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.onreadystatechange = function() {
            try{
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var result = '', status = '', tmp = safeHTMLParser(xhr.responseText);
                   var r = tmp.querySelector('#result_box');
 
                        result = r.innerHTML;
                    
                    var sl = tmp.querySelector('#nc_sl'), dl = tmp.querySelector('#nc_dl'), tl = tmp.querySelector('#nc_tl');
                    if(sl && dl && tl){
                        status = ((dl.value || sl.value)+' -\u203A '+tl.value).toUpperCase();
                    };
                    createWindow(result, status, '<a href="'+url.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Google Translate</a>', '_gt', btn.lastClick);
                }
            } catch (x){};
        };
        xhr.send(post ? encTxt : null);
        };
};


//----------Перевести выделенный текст в окне Microsoft------------
function ujs_Microsoft_translate() {
      var win = content, txt = getSel(win);
    if (txt) { 
        var xhr = new XMLHttpRequest();
        var encTxt = encodeURIComponent(txt), post = encTxt.length > 1024;
        var urlt = 'http://www.bing.com/translator/?from='+langFrom_Microsoft_text+'&to='+langTo_Microsoft_text+'&SourceText=' + encTxt;       
        var keyus = "4A3CABC2D69C013FAB95D4E92B66F1AC2D6D2E11"; 
        var uridetect = "http://api.microsofttranslator.com/V2/Ajax.svc/Detect?appId="+keyus+"&text="+ encTxt;
        var url="http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId="+keyus+"&from="+langFrom_Microsoft_text+"&to="+langTo_Microsoft_text+"&text="+ encTxt;
 
        if (txt && location. hostname != 'http://api.microsofttranslator.com/')
         { var result="Подождите идет перевод", status="";
            createWindow(result, status,'<a href="'+url.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Bing</a>', '_gt', btn.lastClick);
         }
        function gettransdata(){
           xmlhttp=GetXmlHttpObject();
           xmlhttp.onreadystatechange=stateChanged;
           xmlhttp.open(post ? 'POST' : 'GET', url, true);
           if(post)xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
           xmlhttp.send(post ? encTxt : null);
           xmlhttp1=GetXmlHttpObject();
           xmlhttp1.onreadystatechange=stateChanged;
           xmlhttp1.open('GET', uridetect, true);
           xmlhttp1.send(null);
        }
       function stateChanged(){
         if (xmlhttp.readyState==4 && xmlhttp1.readyState==4)
         {
           var tryain=xmlhttp.responseText;
           tryain=tryain.replace(/\"/g, '').replace(/\\u000d/g, " ").replace(/\\u000a/g, "<br />").replace(/\//g, '');
           var tryain1=xmlhttp1.responseText;
           tryain1=tryain1.replace(/\"/g, '');
           var result = tryain;
           var status =(tryain1 +' -\u203A '+ "ru").toUpperCase();
           createWindow(result, status, '<a href="'+urlt.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Bing</a>', '_gt', btn.lastClick);
         }
       }  
      gettransdata();
   } 
};

//----------Перевести текст в окне Яндекс------------
function ujs_yandex_translate() {
       var win = content, txt = getSel(win);
     if (txt) { 
        var xhr = new XMLHttpRequest();
        var encTxt = encodeURIComponent(txt);
        var keyuser = "trnsl.1.1.20130831T054804Z.3af58fbf2907f106.1b447e5894ddab0c2ec8625793c42e25f7526d35";
        var url ="https://translate.yandex.net/api/v1.5/tr.json/translate?key="+keyuser+"&lang="+langFrom_yandex_text+langTo_yandex_text+"&text=" + encTxt;

        function gettransdata(){
           xmlhttp=GetXmlHttpObject();
           xmlhttp.onreadystatechange=stateChanged;
           xmlhttp.open('GET', url, true);
           xmlhttp.send(null);
        }
        function stateChanged(){
          if (xmlhttp.readyState==4)
           {
           var tryain=xmlhttp.responseText;
           tryain=tryain.replace(/\\n/g, "<br />");
           var data = JSON.parse( tryain );
           var result = data.text;
           var status1 = data.lang;  
           var status =(status1.replace(/\-/g, "-\u203A")).toUpperCase();
           var urlt = 'http://translate.yandex.ru/?text=' + encTxt + '&lang=' + status1;
           createWindow(result, status, '<a href="'+urlt.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Яндекс</a>', '_gt', btn.lastClick);
           }
        }  
        gettransdata();
    } 
};

//----------Перевести выделенный текст в окне PROMT------------
function ujs_PROMT_translate() {
      var win = content, lng = win.navigator.language.slice(0, 2), txt = getSel(win);
    if (txt) { 
        var xhr = new XMLHttpRequest();
        var encTxt = encodeURIComponent(txt); 
        var url = 'http://www.translate.ru/?External=prmtlang=ru&status=translate&source=' + encTxt;

        function gettransdata(){
           xmlhttp=GetXmlHttpObject();
           xmlhttp.onreadystatechange = stateChanged;
           xmlhttp.open( "POST", "http://www.translate.ru/services/TranslationService.asmx/GetTranslation", true );

       var post = {};
       post.dirCode = "";
       post.template = "General";
       post.text = encTxt;
       post.lang = "ru";    
       post.limit = 3000;
       post.useAutoDetect = true;
       post.key = "";
       post.ts = "MainSite";
       post.tid = "";
 
       post.dirCode += langFrom_PROMT_text;
       post.dirCode += langTo_PROMT_text;

       post = JSON.stringify(post);

       xmlhttp.setRequestHeader("Referer", "http://www.translate.ru/");
       xmlhttp.setRequestHeader("Content-type", "application/json; charset=utf-8");
       xmlhttp.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
       xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
       xmlhttp.setRequestHeader("DNT", "1");
       xmlhttp.setRequestHeader("Content-Length", post.length);
       xmlhttp.send( post );
       }
       function stateChanged(){
         if (xmlhttp.readyState==4)
          {
           var tryain=xmlhttp.responseText;
           var data = JSON.parse( tryain );
           var result1 = data.result;
           result1 = result1.replace (/Загружаем.../g, " ").replace(/Показать полную словарную статью/g, " ").replace(/Список сокращений/g, " ").replace(/powered by/g, " ");
           var status1 = data.dirNames;        
           status1=status1.replace(/определен автоматически/g, " ").replace(/выполнен/g, " ").replace(/\(/g, '').replace(/\)/g, '');
           status=(status1).toUpperCase();
           createWindow(result1, status, '<a href="'+url.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Промт</a>', '_gt', btn.lastClick);
          }
       }
        gettransdata();
    } 
};
 
//----------Заменить текст переводом------------ 
function ujs_TexReplace_translate() {
        var win = content, txt = getSel(win);  
        if (txt) {
        var httpRequest = null;
        var baseUrl = "http://translate.google.hu/translate_t";
        var urlParams = "text=" + encodeURIComponent(txt) + "&hl==ru&langpair=auto|ru&tbb=1";

        function removeHTMLTags(mitkell) {
        var strTagStrippedText = mitkell.replace(/this.style.backgroundColor='#fff'/ig, "").replace(/this.style.backgroundColor='#ebeff9'/ig, "");
                return strTagStrippedText;
            }

        function infoReceived() { 
           var output = httpRequest.responseText;
           if (txt[0] == " ") {
                    var kezdospace = " ";
                } else {
                    var kezdospace = "";
                }
                if (txt[txt.length - 1] == " ") {
                    var vegespace = " ";
                } else {
                    var vegespace = "";
                }
           if (output.length) {
             output = output.replace(/&quot;/gi,'"');
             output = output.replace(/&lt;/gi,'<');
             output = output.replace(/&gt;/gi,'>');
             output = output.replace(/&amp;/gi,'&');
             output = output.replace(/'/gi,"'");
             var fieldArray = output.split('</head>');
             if (fieldArray[1].search('class="short_text"')!=-1) {
                var tempResz = fieldArray[1].split('<span id=result_box class="short_text">');
             }
             else if (fieldArray[1].search('class="medium_text"')!=-1) {
                var tempResz = fieldArray[1].split('<span id=result_box class="medium_text">');
             }
             else {
                var tempResz = fieldArray[1].split('<span id=result_box class="long_text">');
             }

             var kimenet = tempResz[1].split('</span></div>');
             var range = content.getSelection().getRangeAt(0);
             
             range.deleteContents();
          
             range.insertNode(range. createContextualFragment(kezdospace + removeHTMLTags(kimenet[0])+ vegespace));
           }
        }

                httpRequest = new XMLHttpRequest();
                httpRequest.open("POST", baseUrl, true);
                httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                httpRequest.setRequestHeader("Content-length", urlParams.length);
                httpRequest.setRequestHeader("Connection", "close");
                httpRequest.onload = infoReceived;
                httpRequest.send(urlParams);
    }
};  


//--------Перевести страницу с Google--------------
function ujs_googlePage_translate() {
var tab = document.getElementById('content');
var win = tab.selectedBrowser.contentWindow.top.window;
d=win.document;b=d.body;o=d.createElement('scri'+'pt');o.setAttribute('src','http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit&hl=ru');o.setAttribute('type','text/javascript');b.appendChild(o);v=b.insertBefore(d.createElement('div'),b.firstChild);v.id='google_translate_element';v.style.display='none';p=d.createElement('scri'+'pt');p.text='function googleTranslateElementInit(){var tElem = new google.translate.TranslateElement({pageLanguage:""},"google_translate_element");setTimeout(function() { tElem.showBanner(true); },100);}';p.setAttribute('type','text/javascript');b.appendChild(p);
};

//---------Перевести страницу с Promt---------------
function ujs_PromtPage_translate() {
var urlt = content.document.location.href;
var url = "http://www.translate.ru/siteTranslation/autolink/?direction=ar&template=General&sourceURL="+encodeURIComponent(urlt);
loadURI(url);
};
//---------Перевести страницу с Yandex---------------
function ujs_YandexPage_translate() {
var urlt = content.document.location.href;
var url = "http://translate.yandex.net/translate_f?dir=auto&lang=en-ru&ui=ru&url="+encodeURIComponent(urlt);
loadURI(url);
};
//---------Перевести страницу с Microsoft---------------
function ujs_MicrosoftPage_translate() {
var urlt = content.document.location.href;
var url = "http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a="+encodeURIComponent(urlt);
loadURI(url);
};

//---------Перевести страницу с Yandex в новой вкладке без фрейма---------------
function ujs_yandexPageNew_translate() {
   var urllink = content.location.href.replace(/^https:/, '').replace(/^http:/, '').replace(/\/\//, '');
   var url = "http://translate.yandex.net/tr-url/ru.ru/"+urllink;
   var ctabpos = gBrowser.mCurrentTab._tPos +1;
   gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);

   var css = '@-moz-document domain("translate.yandex.net") {\
   #yandexTranslateWarning { display: none !important; }\
   }';
   var uri = makeURI("data:text/css," + encodeURIComponent(css));
   var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService);
   try { sss.unregisterSheet(uri, sss.AGENT_SHEET) }
   catch(e) { sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET) };  
};

//---------Перевести страницу с Microsoft в новой вкладке с укороченным фреймом---------------
function ujs_MicrosoftPageNew_translate() {              
   if ( "noscriptUtil" in window ) {
        var autoReload = custombuttons.getPrefs("noscript.autoReload");
        if ( autoReload ) custombuttons.setPrefs("noscript.autoReload", false);
        noscriptOverlay.allowPage();
        if ( autoReload ) setTimeout(function() { custombuttons.setPrefs("noscript.autoReload", true) }, 10)
        }
        var newTab = gBrowser.duplicateTab(gBrowser.mCurrentTab);
        ++gBrowser.tabContainer.selectedIndex;
        gBrowser.selectedTab = newTab
        gBrowser.addEventListener("pageshow", function(event) {
        gBrowser.removeEventListener("pageshow", arguments.callee, true);
        content.document.location = "javascript:var s = content.document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; content.document.body.insertBefore(s, document.body.firstChild); void(0);";
}, true);
};

//---------Перевести страницу с Promt в новой вкладке без фрейма---------------
function ujs_PromtPageNew_translate() {                 
        var newTab = gBrowser.duplicateTab(gBrowser.mCurrentTab);
          ++gBrowser.tabContainer.selectedIndex;
          gBrowser.selectedTab = newTab
      gBrowser.addEventListener("pageshow", function(event) {
      gBrowser.removeEventListener("pageshow", arguments.callee, true);
          if ( "noscriptUtil" in window ) {
              noscriptOverlay.allowPage();
              BrowserStop();
              }
    content.document.location = "javascript:location=(location.hostname=='www.translate.ru'?unescape(location.search.split('url=')[1].split('&')[0]):'http://www.translate.ru/rus/url/tran_url.php?direction=er&template=General&url='+escape(location))";
    }, true);
};

//--------Перевести страницу с Google в новой вкладке без фрейма--------------
function ujs_GooglePageNew_translate() {  
var urlt = content.document.location.href;
    var url = "http://translate.google.com/translate?hl=ru&sl=auto&tl=ru&u="+ encodeURIComponent(urlt) + "&sandbox=1";
    setTimeout(function() { 
           gBrowser.selectedTab = gBrowser.duplicateTab( gBrowser.mCurrentTab );           
           gBrowser.addEventListener("pageshow", function(e) {
              this.removeEventListener("pageshow", arguments.callee, true);
              content.document.location = url;
              }, true);
         }, 50) 
       var css = '@-moz-document domain("translate.google.com") {\
       #gb, #gt-c:not([class="g-section"]) { display: none !important; }\
       #contentframe { top: 0 !important; }\
               }';
       var uri = makeURI("data:text/css," + encodeURIComponent(css));
       var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService);
       try { sss.unregisterSheet(uri, sss.AGENT_SHEET) }
       catch(e) { sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET) };  
 };

//--------Перевести текст в Google в новой вкладке--------------
function ujs_GoogleTextPageNew_translate() { 
var win = content, txt = getSel(win), encTxt = encodeURIComponent(txt);
var ctabpos = gBrowser.mCurrentTab._tPos +1;
var url="http://translate.google.com/translate_t?text="+encTxt+"&sl=auto&tl=ru&hl=ru&eotf=0&ujs=gtt";
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
};

//--------Перевести текст в Яндексе в новой вкладке--------------
function ujs_yandexTextPageNew_translate() { 
       var win = content, txt = getSel(win), encTxt = encodeURIComponent(txt), post = encTxt.length > 1024;
       var ctabpos = gBrowser.mCurrentTab._tPos +1;
     if (txt) { 
        var xhr = new XMLHttpRequest();
        var keyuser = "trnsl.1.1.20130831T054804Z.3af58fbf2907f106.1b447e5894ddab0c2ec8625793c42e25f7526d35";
        var url ="https://translate.yandex.net/api/v1.5/tr.json/detect?key="+keyuser+"&lang=ru&text=" + (post ? '' : encTxt);

        function gettransdata(){
           xmlhttp=GetXmlHttpObject();
           xmlhttp.onreadystatechange=stateChanged;
           xmlhttp.open(post ? 'POST' : 'GET', url, true);
           if(post)xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
           xmlhttp.send(post ? encTxt : null);
        }
        function stateChanged(){
          if (xmlhttp.readyState==4)
           {
           var tryain=xmlhttp.responseText;
           var data = JSON.parse( tryain );
           var status1 = data.lang;
           var urlt="http://translate.yandex.ru/?text=" + encTxt + "&lang=" + status1 + "-ru";
           gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(urlt), ctabpos);
           }
        }  
        gettransdata();
    } 
};

//---------Перевести текст в PROMT в новой вкладке---------------
function ujs_PROMTTextPageNew_translate(){ 
var win = content, txt = getSel(win), encTxt = encodeURIComponent(txt);
var ctabpos = gBrowser.mCurrentTab._tPos +1;
var url="http://www.translate.ru/?External=prmtlang=ru&status=translate&source="+encTxt;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
};

//---------Перевести текст в Microsoft в новой вкладке---------------
function ujs_MicrosoftTextPageNew_translate(){
var ctabpos = gBrowser.mCurrentTab._tPos +1;
var win = content, txt = getSel(win), encTxt = encodeURIComponent(txt);
var url="http://www.bing.com/translator/?to=ru&SourceText="+encTxt;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
};


//----------Перевести слово в Яндексе------------
function ujs_yandexWord_translate(){
var ctabpos = gBrowser.mCurrentTab._tPos +1;
var win = content, txt = getSel(win), encTxt = encodeURIComponent(txt);
var url="http://slovari.yandex.ru/"+encTxt;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
};

//-----------Перевести слово в Lingvo--------------
function ujs_LingvoWord_translate(){
var ctabpos = gBrowser.mCurrentTab._tPos +1;
var win = content, txt = getSel(win), encTxt = encodeURIComponent(txt);
var url="http://lingvopro.abbyyonline.com/ru/Search/en-ru/"+encTxt;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
};

//----------Перевести слово в Mail.ru------------
function ujs_MailWord_translate(){
var ctabpos = gBrowser.mCurrentTab._tPos +1;
var win = content, txt = getSel(win), encTxt = encodeURIComponent(txt);
var url="http://lingvo.mail.ru/?lang_id=1033&translate=&text="+encTxt;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), ctabpos);
};


Создание контекстного меню

Выделить код

Код:

//Контекстное меню для перевода страниц-------------------------------------------  
(function () {
  if ( document.getElementById("TranslatePage") ) return; 
  
  var menu = document.createElement("menu");  
  var menuPopup = document.createElement("menupopup");
  var contextMenu = document.getElementById("contentAreaContextMenu");  
  
    menu.id = "TranslatePage";
    menu.setAttribute("label", "Перевести страницу");
    menu.setAttribute("class", "menu-iconic");
    menu.setAttribute("image", mainicon);
   
  contextMenu.insertBefore(menu, document.getElementById("context-sep-properties") ); 
  menu.appendChild( menuPopup );
  addDestructor(function() { contextMenu.removeChild( menu ) }); 
    var array = [
        {label:"Google", func: ujs_googlePage_translate, image:gticon},
        {label:"Promt ", func: ujs_PromtPage_translate, image:promticon},
        {label:"Yandex ", func: ujs_YandexPage_translate, image:yndicon},
        {label:"Microsoft", func: ujs_MicrosoftPage_translate, image:bingicon},
        { separator: '' },
        {label:"Google в новой вкладке", func: ujs_GooglePageNew_translate, image:gticon},
        {label:"Promt в новой вкладке", func: ujs_PromtPageNew_translate, image:promticon},
        {label:"Yandex в новой вкладке", func: ujs_yandexPageNew_translate, image:yndicon},
        {label:"Microsoft в новой вкладке", func: ujs_MicrosoftPageNew_translate, image:bingicon}
        ];
        
   array.forEach(function( m ) {  
       if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return };
       var mItem = document.createElement("menuitem");
       mItem.setAttribute("label", m.label);
       mItem.setAttribute("class", "menuitem-iconic");
       mItem.setAttribute("image", m.image);
       mItem.addEventListener("command", m.func, false);
       menuPopup.appendChild( mItem );
       });
   
     addEventListener("popupshowing", function() {
     menu.hidden = gContextMenu.isTextSelected || gContextMenu.onImage || gContextMenu.onTextInput ; 
  }, true, contextMenu );
})();

 //Контекстное меню для перевода текста-------------------------------------------  
(function () {
  if ( document.getElementById("TranslateSelected") ) return; 
  
  var menu = document.createElement("menu");  
  var menuPopup = document.createElement("menupopup");
  var contextMenu = document.getElementById("contentAreaContextMenu");  
      
    menu.id = "TranslateSelected";
    menu.setAttribute("label", "Перевести выделенный текст");
    menu.setAttribute("class", "menu-iconic");
    menu.setAttribute("image", mainicon);

  contextMenu.insertBefore(menu, document.getElementById("context-sep-properties") ); 
  menu.appendChild( menuPopup );
  addDestructor(function() { contextMenu.removeChild( menu ) });
  
  var array = [
        {label:"Заменить текст переводом", func: ujs_TexReplace_translate, image:gticon},
        { separator: ''},
        {label:"В окне Google", func: ujs_google_translate, image:gticon},
        {label:"В окне Яндекс", func: ujs_yandex_translate, image:yndicon},
        {label:"В окне PROMT", func: ujs_PROMT_translate, image:promticon},
        {label:"В окне Microsoft", func: ujs_Microsoft_translate, image:bingicon},
        { separator: ''},
        {label:"В Google в новой вкладке", func: ujs_GoogleTextPageNew_translate, image:gticon},
        {label:"В Яндексе в новой вкладке", func: ujs_yandexTextPageNew_translate, image:yndicon},
        {label:"В PROMT в новой вкладке", func: ujs_PROMTTextPageNew_translate, image:promticon},
        {label:"В Microsoft в новой вкладке", func: ujs_MicrosoftTextPageNew_translate, image:bingicon},
        { separator: ''},
        {label:"Слово в Яндексе в новой вкладке", func: ujs_yandexWord_translate, image:yndicon},
        {label:"Слово в Lingvo в новой вкладке", func: ujs_LingvoWord_translate, image:lingvicon},
        {label:"Слово в Mail.ru в новой вкладке", func: ujs_MailWord_translate, image:maillicon}
              ];
  array.forEach(function( m ) {  
       if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return };
       var mItem = document.createElement("menuitem");
       mItem.setAttribute("label", m.label);
       mItem.setAttribute("class", "menuitem-iconic");
       mItem.setAttribute("image", m.image);
       mItem.addEventListener("command", m.func, false);
       menuPopup.appendChild( mItem );
       });
 
 addEventListener("popupshowing", function() {
     menu.hidden = !gContextMenu.isTextSelected; 
  }, false, contextMenu );     
 })();


Пожелания, исправления, улучшения кода приветствуются.

Отредактировано Andrey_Krropotkin (22-10-2013 23:18:03)

Отсутствует

 

№722-10-2013 20:33:50

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

okkamas_knife можно создать, это не проблема, взять любую кнопку со сниппетами из вашей темы и подставить свой текст.
Функции этой кнопки еще не доработаны до конца.
В частности отсутствует система предупреждения об ошибках: например некоторые не поддерживают перевод  например ru-ru или некоторые языки или превышение лимита теста, забанивание ключа API и т.д.
Можно добавить звуковое сопровождение и т.д.
Когда все доработается, тогда можно и говорить о создании нормального конструктора.

Отсутствует

 

№822-10-2013 20:41:49

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: [CB] Context translate

Andrey_Krropotkin пишет

Создание контекстного меню

Такой код меню при каждом открытии настройки панелей или обновлении кнопки будет дублировать меню, вот что показывает DOM инспектор:
if4m.jpg

Отсутствует

 

№922-10-2013 20:45:36

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

bunda1 Посмотрел, согласен, предложи варианты.

Отсутствует

 

№1022-10-2013 20:50:56

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: [CB] Context translate

Andrey_Krropotkin
Вопрос, этот код только для Сustom Buttons?

Отсутствует

 

№1122-10-2013 20:54:20

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

bunda1 В смысле? Собирал и проверял только на Сustom Buttons.

Отсутствует

 

№1222-10-2013 20:57:10

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: [CB] Context translate

Andrey_Krropotkin
Ну в коде меню лишний код и я подумал что это что то значит.

Добавлено 22-10-2013 21:02:49
Andrey_Krropotkin
Вот пример кода меню который не дублируется и компактней:

Выделить код

Код:

// Добавляем подменю в контекстного меню на странице для выделенного текста ................................
(function () {
  
  var menu = document.createElement("menu");  
  var menuPopup = document.createElement("menupopup");
  var contextMenu = document.getElementById("contentAreaContextMenu");  
      
  menu.setAttribute("label", "Find");
  
  contextMenu.insertBefore(menu, document.getElementById("context-sep-properties") ); 
  menu.appendChild( menuPopup );
  addDestructor(function() { contextMenu.removeChild( menu ) });
  
  var array = [
              { label:"Найти на странице", func: findToContex },
              { label:"Поиск по сайту(google)", func: searchToSite },
              { label:"Выделить текст на странице", func: highlightSel },
              { label:"Автовыделение, добавить текст", func: addSel }
              ];
  array.forEach(function( m ) {  
       var mItem = document.createElement("menuitem");
       mItem.setAttribute("label", m.label);
       mItem.addEventListener("command", m.func, false);
       menuPopup.appendChild( mItem );
       });
       
  contextMenu.addEventListener("popupshowing", function() {
     menu.hidden = !gContextMenu.isTextSelected; 
  }, false);
         
   function findToContex() {
      alert("Найти на странице");
         };
         
   function searchToSite() {
      alert("Поиск по сайту(google)");
        };
        
   function highlightSel() {
      alert("Выделить текст на странице");
        };
        
   function addSel() {
      alert("Автовыделение, добавить текст");
        }             
})();

Отредактировано bunda1 (22-10-2013 21:02:49)

Отсутствует

 

№1322-10-2013 21:06:17

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

bunda1 Спасибо, если ты про  блок var menuId = "context-ext-google-translate" - забыл удалить, был пункт в контекстном меню перевод на английский от кнопки Lex1. Сейчас удалю. Попробую переделать по твоему варианту. Спасибо.

Отредактировано Andrey_Krropotkin (22-10-2013 21:09:10)

Отсутствует

 

№1422-10-2013 21:14:36

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: [CB] Context translate

Andrey_Krropotkin
Вот с сепаратором:

Выделить код

Код:

// Добавляем подменю в контекстного меню на странице для выделенного текста ................................
(function () {
  
  var menu = document.createElement("menu");  
  var menuPopup = document.createElement("menupopup");
  var contextMenu = document.getElementById("contentAreaContextMenu");  
      
  menu.setAttribute("label", "Find");
  
  contextMenu.insertBefore(menu, document.getElementById("context-sep-properties") ); 
  menu.appendChild( menuPopup );
  addDestructor(function() { contextMenu.removeChild( menu ) });
  
  var array = [
              { label:"Найти на странице", func: findToContex },
              { label:"Поиск по сайту(google)", func: searchToSite },
              { separator: '' },
              { label:"Выделить текст на странице", func: highlightSel },
              { label:"Автовыделение, добавить текст", func: addSel }
              ];
  array.forEach(function( m ) {
       if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return };
       var mItem = document.createElement("menuitem");
       mItem.setAttribute("label", m.label);
       mItem.addEventListener("command", m.func, false);
       menuPopup.appendChild( mItem );
       });
       
  addEventListener("popupshowing", function() {
     menu.hidden = !gContextMenu.isTextSelected; 
  }, false, contextMenu );
         
   function findToContex() {
      alert("Найти на странице");
         };
         
   function searchToSite() {
      alert("Поиск по сайту(google)");
        };
        
   function highlightSel() {
      alert("Выделить текст на странице");
        };
        
   function addSel() {
      alert("Автовыделение, добавить текст");
        }             
})();

Отредактировано bunda1 (22-10-2013 22:21:46)

Отсутствует

 

№1522-10-2013 22:58:18

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

bunda1 подправил меню.

Отредактировано Andrey_Krropotkin (22-10-2013 23:03:23)

Отсутствует

 

№1622-10-2013 23:11:06

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: [CB] Context translate

Andrey_Krropotkin
Я допустил ошибку, исправь:

Выделить код

Код:

contextMenu.addEventListener("popupshowing", function() {
.........................
  }, false);

на:

Выделить код

Код:

addEventListener("popupshowing", function() {
.........................
  }, false, contextMenu );

Отсутствует

 

№1722-10-2013 23:18:52

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

bunda1 исправил

Отсутствует

 

№1823-10-2013 19:55:28

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: [CB] Context translate

Andrey_Krropotkin пишет

Создание контекстного меню

Мне кажется это лишний код:

Выделить код

Код:

if ( document.getElementById("TranslatePage") ) return;

и

Выделить код

Код:

if ( document.getElementById("TranslateSelected") ) return;

не влияет ни на что.

Отсутствует

 

№1923-10-2013 21:07:48

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

bunda1 Если есть этот код, то не двоится меню. У меня по крайней мере. Перестраховка.

Отсутствует

 

№2023-10-2013 21:19:24

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: [CB] Context translate

Andrey_Krropotkin
Он не должен двоится, для этого там addDestructor(function() { contextMenu.removeChild( menu ) });
У меня не дублируется :/, попробуй без if ( document.getElementById(........

Отсутствует

 

№2123-10-2013 21:31:11

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 24.0

Re: [CB] Context translate

bunda1 попробовал даже  на чистом профиле - все равно двоится без этого кода.  Может это только у меня.
Да, еще заметил, если открыть кнопку для редактирования и потом закрыть - остается одно меню, но после перезагрузки браузера опять два.

Отредактировано Andrey_Krropotkin (23-10-2013 22:00:32)

Отсутствует

 

№2223-10-2013 22:17:38

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: [CB] Context translate

Andrey_Krropotkin пишет

bunda1 Если есть этот код, то не двоится меню. У меня по крайней мере. Перестраховка.

Мистика однако.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]