├── _locales ├── _reviewneeded │ ├── ar │ │ └── messages.json │ ├── bg │ │ └── messages.json │ ├── da │ │ └── messages.json │ ├── el │ │ └── messages.json │ ├── fa │ │ └── messages.json │ ├── fi │ │ └── messages.json │ ├── fil │ │ └── messages.json │ ├── hr │ │ └── messages.json │ ├── id │ │ └── messages.json │ ├── is │ │ └── messages.json │ ├── lb │ │ └── messages.json │ ├── lt │ │ └── messages.json │ ├── mn │ │ └── messages.json │ ├── ms │ │ └── messages.json │ ├── ne │ │ └── messages.json │ ├── no │ │ └── messages.json │ ├── pt_BR │ │ └── messages.json │ ├── pt_PT │ │ └── messages.json │ ├── sk │ │ └── messages.json │ ├── sl │ │ └── messages.json │ ├── sr │ │ └── messages.json │ ├── ta │ │ └── messages.json │ ├── th │ │ └── messages.json │ ├── tr │ │ └── messages.json │ ├── uk │ │ └── messages.json │ ├── ur │ │ └── messages.json │ └── vi │ │ └── messages.json ├── cs │ └── messages.json ├── de │ └── messages.json ├── en │ └── messages.json ├── en_GB │ └── messages.json ├── en_US │ └── messages.json ├── es │ └── messages.json ├── fr │ └── messages.json ├── hu │ └── messages.json ├── it │ └── messages.json ├── ja │ └── messages.json ├── ko │ └── messages.json ├── lv │ └── messages.json ├── nl │ └── messages.json ├── pl │ └── messages.json ├── ro │ └── messages.json ├── ru │ └── messages.json ├── sv │ └── messages.json ├── zh_CN │ └── messages.json └── zh_TW │ └── messages.json ├── css ├── bootstrap-theme.min.css ├── bootstrap.min.css ├── glyph.css ├── options.css ├── popup.css └── recents.css ├── fonts ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2 ├── gpl.txt ├── html ├── background.html ├── options.html ├── popup.html ├── recents.html └── updated.html ├── img ├── IconAllowed.png ├── IconDisabled.png ├── IconForbidden.png ├── IconTemp.png ├── heartbig.png ├── heartsmall.png ├── icon128.png ├── icon16.png ├── icon24.png ├── icon32.png └── icon48.png ├── js ├── bootstrap.min.js ├── common.js ├── jquery.js ├── options.js ├── pako.js ├── popup.js ├── recents.js ├── scriptsafe.js ├── ss.js ├── updated.js ├── webrtctest.js └── yoyo.js ├── manifest.json └── readme.md /_locales/ja/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appdescription": { 3 | "description": "Regain control of the web and surf more securely.", 4 | "message": "より安全にウェブやサーフィンの制御を取り戻します。" 5 | }, 6 | "alldomains": { 7 | "description": "On All Domains", 8 | "message": "すべてのドメイン上の" 9 | }, 10 | "allow": { 11 | "description": "Allow", 12 | "message": "許可" 13 | }, 14 | "alloweditems": { 15 | "description": "Allowed Items", 16 | "message": "許可されたアイテム" 17 | }, 18 | "blockeditems": { 19 | "description": "Blocked Items", 20 | "message": "ブロックされたアイテム" 21 | }, 22 | "allowallblocked": { 23 | "description": "Allow All Blocked For Session", 24 | "message": "ブロックされたセッションをすべて許可" 25 | }, 26 | "annoyances": { 27 | "description": "Block Unwanted Content:", 28 | "message": "不要なコンテンツをブロックします:" 29 | }, 30 | "annoyancesdesc": { 31 | "description": "remove unwanted content from known ad / malware domains; domains gathered from MVPS HOSTS, hpHOSTS (ad / tracking servers), Peter Lowe's HOSTS Project, MalwareDomainList.com", 32 | "message": "知られている広告/マルウェアのドメインから不要なコンテンツを削除します。ドメインはMVPSのHOSTShpHOSTS(広告/追跡サーバ)から収集した、ピーター・ロウズHOSTSプロジェクトMalwareDomainList.com" 33 | }, 34 | "annoyancesmode": { 35 | "description": "Unwanted Content Mode:", 36 | "message": "不要なコンテンツモード:" 37 | }, 38 | "annoyancesmodedesc": { 39 | "description": "Relaxed = whitelisted domains will not be blocked; Strict = domains in the unwanted domain list will be blocked even if whitelisted", 40 | "message": "寛容=ホワイトリストに登録されたドメインはブロックされません。厳格=不要なドメインは、ホワイトリストに登録されていてもブロックされます" 41 | }, 42 | "antisocialpopup": { 43 | "description": "Antisocial", 44 | "message": "SNS 拒否/ブロック" 45 | }, 46 | "antisocial": { 47 | "description": "Antisocial Mode:", 48 | "message": "SNS 拒否/ブロックモード:" 49 | }, 50 | "antisocialdesc": { 51 | "description": "always remove social widgets/buttons, even if whitelisted", 52 | "message": "常にホワイトリストに登録しても、SNS ウィジェット/ボタンを削除" 53 | }, 54 | "antisocialdesc2": { 55 | "description": "For more comprehensive blocking, check out Privacy Badger, Disconnect, Blur, and/or uBlock Origin with all of the subscription lists on the Fanboy site", 56 | "message": "より包括的なブロッキングについては、Privacy BadgerDisconnectBluruBlock Origin および Fanboy site上のサブスクリプションリストをチェックしてください" 57 | }, 58 | "audioblock": { 59 | "description": "Block Audio Fingerprinting:", 60 | "message": "ブロックオーディオフィンガープリント:" 61 | }, 62 | "audioblockdesc": { 63 | "description": "prevent fingerprinting via the AudioContext API", 64 | "message": "AudioContext APIを介してフィンガープリントを防ぎます" 65 | }, 66 | "battery": { 67 | "description": "Block Battery Fingerprinting:", 68 | "message": "ブロックバッテリーフィンガープリント:" 69 | }, 70 | "batterydesc": { 71 | "description": "prevent fingerprinting via the Battery API", 72 | "message": "バッテリーのAPIを介してフィンガープリントを防ぎます" 73 | }, 74 | "behavior": { 75 | "description": "Behaviour Settings", 76 | "message": "行動の設定" 77 | }, 78 | "blockrec": { 79 | "description": "Block (recommended)", 80 | "message": "ブロック(推奨)" 81 | }, 82 | "block": { 83 | "description": "Block", 84 | "message": "ブロック" 85 | }, 86 | "blocked": { 87 | "description": "Blocked", 88 | "message": "ブロックされました" 89 | }, 90 | "blockallallowed": { 91 | "description": "Block All Allowed For Session", 92 | "message": "許可したすべてのセッションをブロック" 93 | }, 94 | "bluetooth": { 95 | "description": "Block Bluetooth Enumeration:", 96 | "message": "ブロックBluetooth列挙:" 97 | }, 98 | "bluetoothdesc": { 99 | "description": "prevent having devices detected via the Bluetooth API", 100 | "message": "Bluetooth APIを介して検出されたデバイスを防ぎます" 101 | }, 102 | "bulkimport": { 103 | "description": "bulk import", 104 | "message": "一括インポート" 105 | }, 106 | "bulkbtn": { 107 | "description": "Import to List", 108 | "message": "リストにインポート" 109 | }, 110 | "bulkimportcap": { 111 | "description": "Bulk Import", 112 | "message": "一括インポート" 113 | }, 114 | "bulkimportcapdesc": { 115 | "description": "Copy and paste domains into the box below. Each domain should be on a separate line.", 116 | "message": "下のボックスにコピー&ペーストドメイン。各ドメインは、別の行にする必要があります。" 117 | }, 118 | "canvas": { 119 | "description": "Canvas Fingerprint Protection:", 120 | "message": "キャンバスフィンガープリント保護:" 121 | }, 122 | "cannotprocess": { 123 | "description": "ScriptSafe cannot process this page.

Please try visiting a website.", 124 | "message": "ScriptSafeは、このページを処理することはできません。

ウェブサイトを訪問してみてください。" 125 | }, 126 | "canvasblank": { 127 | "description": "Blank Readout", 128 | "message": "空白を読み出し" 129 | }, 130 | "canvasrandom": { 131 | "description": "Random Readout", 132 | "message": "ランダム読み出し" 133 | }, 134 | "canvasblock": { 135 | "description": "Completely Block Readout", 136 | "message": "読み出しを完全にブロック" 137 | }, 138 | "canvasdesc": { 139 | "description": "protect against fingerprinting attempts through <canvas> elements", 140 | "message": "<canvas>要素を介して、フィンガープリントの試みに対する保護" 141 | }, 142 | "canvasfont": { 143 | "description": "Block Canvas Font Access:", 144 | "message": "ブロックキャンバスフォントのアクセス:" 145 | }, 146 | "canvasfontdesc": { 147 | "description": "prevent system fonts from being enumerated through <canvas> elements. May interfere with Google Docs.", 148 | "message": "<canvas>要素を介して列挙されることからシステムフォントを防ぎます。 Googleドキュメントに干渉することがあります。" 149 | }, 150 | "classicoptions": { 151 | "description": "Classic Options Mode:", 152 | "message": "クラシックオプションモード:" 153 | }, 154 | "classicoptionsdesc": { 155 | "description": "if ticked, closes tab options everytime an option is clicked", 156 | "message": "チェックが入っている場合、毎回オ​​プションをクリックすると、タブのオプションを閉じ" 157 | }, 158 | "clear": { 159 | "description": "Clear", 160 | "message": "消去" 161 | }, 162 | "clearlow": { 163 | "description": "clear", 164 | "message": "消去" 165 | }, 166 | "clientrects": { 167 | "description": "Block Client Rectangles:", 168 | "message": "ブロッククライアントレクタングル:" 169 | }, 170 | "clientrectsdesc": { 171 | "description": "prevent fingerprinting through calculating element rectangles. May interfere with some dropdowns.", 172 | "message": "要素のレクタングルを計算を通じてフィンガープリントを防ぎます。いくつかのドロップダウンを妨げる可能性があります。" 173 | }, 174 | "clipboard": { 175 | "description": "Prevent Clipboard Interference:", 176 | "message": "クリップボードの干渉を防ぎます。" 177 | }, 178 | "clipboarddesc": { 179 | "description": "prevent pages from interfering with clipboard actions", 180 | "message": "クリップボードの操作に干渉からページを防ぎます" 181 | }, 182 | "close": { 183 | "description": "Close", 184 | "message": "閉じる" 185 | }, 186 | "cookies": { 187 | "description": "Block Unwanted Cookies:", 188 | "message": "不要なクッキーをブロックします:" 189 | }, 190 | "cookiesdesc": { 191 | "description": "blocks cookies from known ad / malware domains; below mode applies to this as well", 192 | "message": "知られている広告/マルウェアのドメインからブロッククッキー。モードの下だけでなく、これに適用されます" 193 | }, 194 | "custom": { 195 | "description": "Custom", 196 | "message": "カスタム" 197 | }, 198 | "default": { 199 | "description": "Default", 200 | "message": "デフォルト" 201 | }, 202 | "default_public_interface_only": { 203 | "description": "Protect Local IP", 204 | "message": "ローカルIPを保護します" 205 | }, 206 | "deny": { 207 | "description": "Deny", 208 | "message": "拒否" 209 | }, 210 | "disable_non_proxied_udp": { 211 | "description": "Protect Local and Public IPs", 212 | "message": "ローカルおよびパブリックIPを保護します" 213 | }, 214 | "disable": { 215 | "description": "Disable", 216 | "message": "無効にします" 217 | }, 218 | "disabled": { 219 | "description": "disabled", 220 | "message": "使用禁止" 221 | }, 222 | "disabledcap": { 223 | "description": "Disabled", 224 | "message": "使用禁止" 225 | }, 226 | "disabledsync": { 227 | "description": "Syncing is disabled.\r\nFeel free to go to the Options page at any time to sync your settings (make a backup of your settings if necessary).", 228 | "message": "同期が無効になっています。\r\nあなたの設定を同期する任意の時点で[オプション]ページに移動してお気軽に(必要に応じて、設定のバックアップを作成)。" 229 | }, 230 | "disableremove": { 231 | "description": "Disable and Remove:", 232 | "message": "無効にして削除します。" 233 | }, 234 | "distrust": { 235 | "description": "Distrust", 236 | "message": "不審" 237 | }, 238 | "distrustlow": { 239 | "description": "distrust", 240 | "message": "不審" 241 | }, 242 | "domain": { 243 | "description": "Same Domain", 244 | "message": "同じドメイン" 245 | }, 246 | "domainsort": { 247 | "description": "Sort by Domain:", 248 | "message": "ドメインで並べ替え:" 249 | }, 250 | "domaininfo": { 251 | "description": "Help", 252 | "message": "ヘルプ" 253 | }, 254 | "domaininvalid": { 255 | "description": "Invalid domain/address", 256 | "message": "無効なドメイン/アドレス" 257 | }, 258 | "domaininvalid2": { 259 | "description": "The domain or address must contain some letters/numbers", 260 | "message": "ドメインまたはアドレスは、いくつかの文字/数字を含める必要があります" 261 | }, 262 | "domaininvalid3": { 263 | "description": "Domain cannot be added as it is a provider of unwanted content (see Block Unwanted Content and/or Antisocial Mode)", 264 | "message": "それが不要なコンテンツの提供者であるとして、ドメインを追加することはできません(ブロック不要なコンテンツおよび/またはSNS 拒否/ブロックモードを参照してください)" 265 | }, 266 | "domainsortdesc": { 267 | "description": "sorts URL lists by domains on this page and in the panel", 268 | "message": "このページ上のドメインにより、パネルにURLリストをソート" 269 | }, 270 | "domaintip": { 271 | "description": "Tip: press CTRL+F to search the lists", 272 | "message": "ヒント:Ctrl + Fキーを押しリストを検索します" 273 | }, 274 | "dontshowpage": { 275 | "description": "Don't Show This Page Again", 276 | "message": "このページは表示しません" 277 | }, 278 | "enable": { 279 | "description": "Enable:", 280 | "message": "有効にします:" 281 | }, 282 | "enabled": { 283 | "description": "enabled", 284 | "message": "使用可能" 285 | }, 286 | "enabless": { 287 | "description": "Enable ScriptSafe", 288 | "message": "ScriptSafeを有効にします" 289 | }, 290 | "enablesyncing": { 291 | "description": "Enable Syncing:", 292 | "message": "同期を有効にします:" 293 | }, 294 | "export": { 295 | "description": "Export", 296 | "message": "エクスポート" 297 | }, 298 | "exportsuccess": { 299 | "description": "Your settings have been successfully synced!", 300 | "message": "お使いの設定が正常に同期されています!" 301 | }, 302 | "exportsuccesstitle": { 303 | "description": "Settings Synced!", 304 | "message": "設定が同期!" 305 | }, 306 | "fingerprint": { 307 | "description": "Fingerprint Protection", 308 | "message": "フィンガープリント保護" 309 | }, 310 | "fingerprintdesc": { 311 | "description": "Fingerprint Protection (may break sites)", 312 | "message": "フィンガープリント保護(サイトを壊す場合があります)" 313 | }, 314 | "firstsync": { 315 | "description": "It appears you haven't synced your settings to your Google account yet.\r\nScriptSafe is about to sync your current settings to your Google account.\r\nClick on 'OK' if you want to continue.\r\nIf not, click 'Cancel', and on the other device with your preferred settings, update ScriptSafe and click on OK when you are presented with this message.", 316 | "message": "あなたがまだGoogleアカウントに設定を同期していない表示されます。\r\nScriptSafeは、Googleアカウントに現在の設定を同期しようとしています。\r\n続行する場合は「OK」をクリックします。\r\nない場合は、クリックして「キャンセル」、そしてお好みの設定で他のデバイス上で、ScriptSafeを更新しますが、このメッセージが表示されたら、[OK]をクリックします。" 317 | }, 318 | "forcesyncexport": { 319 | "description": "Do you want to sync your current settings to your Google Account?\r\nNote: please do not press this frequently; there is a limit of 10 per minute and 1,000 per hour.", 320 | "message": "Googleアカウントに現在の設定を同期してもよろしいですか?\r\n注:これを頻繁に押さないでください。毎分10と毎時千の限界があります。" 321 | }, 322 | "forcesyncimport": { 323 | "description": "Do you want to import the synced settings from your Google Account to this device?", 324 | "message": "あなたは、このデバイスにGoogleアカウントから同期設定をインポートしますか?" 325 | }, 326 | "forever": { 327 | "description": "Forever", 328 | "message": "Forever" 329 | }, 330 | "hotkeys": { 331 | "description": "Hotkeys:", 332 | "message": "ホットキー:" 333 | }, 334 | "generalsettings": { 335 | "description": "General Settings", 336 | "message": "一般設定" 337 | }, 338 | "gamepad": { 339 | "description": "Block Gamepad Enumeration:", 340 | "message": "ブロックゲームパッド列挙:" 341 | }, 342 | "gamepaddesc": { 343 | "description": "prevent having devices detected via the Gamepad API", 344 | "message": "ゲームパッドAPIを介して検出されたデバイスを防ぎます" 345 | }, 346 | "availablehotkeys": { 347 | "description": "Available hotkey actions", 348 | "message": "利用可能なホットキーアクション" 349 | }, 350 | "hotkeystoggle": { 351 | "description": "Temporarily allow/block all resources for a current tab", 352 | "message": "一時的に許可する/現在のタブのすべてのリソースをブロック" 353 | }, 354 | "hotkeysremove": { 355 | "description": "Remove temporary permissions for a current tab", 356 | "message": "現在のタブのための一時的なアクセス権を削除する" 357 | }, 358 | "hotkeysremoveall": { 359 | "description": "Remove all temporary permissions", 360 | "message": "すべての一時的な権限を削除する" 361 | }, 362 | "hotkeyspage": { 363 | "description": "Configure ScriptSafe hotkeys", 364 | "message": "ScriptSafeのホットキーを設定します" 365 | }, 366 | "hotkeysinst": { 367 | "description": "click on Keyboard Shortcuts", 368 | "message": "キーボードショートカットをクリックしてください" 369 | }, 370 | "listallsettings": { 371 | "description": "List All Settings", 372 | "message": "すべての設定を一覧表示" 373 | }, 374 | "ignoredallow": { 375 | "description": "Ignored Allow", 376 | "message": "許可を無視" 377 | }, 378 | "importsuccess": { 379 | "description": "The latest settings have been successfully downloaded!", 380 | "message": "最新の設定が正常にダウンロードされています!" 381 | }, 382 | "importsuccesstitle": { 383 | "description": "Settings Downloaded!", 384 | "message": "設定のダウンロード!" 385 | }, 386 | "groupallsettings": { 387 | "description": "Group All Settings", 388 | "message": "グループのすべての設定" 389 | }, 390 | "hashchecking": { 391 | "description": "Remove Possible Hash Tracking:", 392 | "message": "可能なハッシュトラッキングを削除します。" 393 | }, 394 | "hashcheckingdesc": { 395 | "description": "remove possible tracking tokens passed using hash, where there is an attribute and value (e.g. #xtor=RSS-1)", 396 | "message": "属性と値があるハッシュを使用して渡さ可能な追跡トークンを削除する(例えば#xtor=RSS-1)" 397 | }, 398 | "hide": { 399 | "description": "Hide", 400 | "message": "隠す" 401 | }, 402 | "import": { 403 | "description": "Import", 404 | "message": "インポート" 405 | }, 406 | "importexport": { 407 | "description": "Import / Restore Settings", 408 | "message": "インポート/復元の設定" 409 | }, 410 | "importsuccessoptions": { 411 | "description": "Settings imported successfully", 412 | "message": "正常にインポート設定" 413 | }, 414 | "importsuccesscond": { 415 | "description": "Settings imported successfully, except the following (empty value or unrecognized name):", 416 | "message": "以下の(空の値または認識されない名前)を除いて、正常にインポートセッティング:" 417 | }, 418 | "importsuccesssync": { 419 | "description": "Settings imported successfully and syncing in 10 seconds", 420 | "message": "設定が正常にインポートし、10秒で同期" 421 | }, 422 | "interval": { 423 | "description": "Every x Minutes", 424 | "message": "Every x Minutes" 425 | }, 426 | "keyboard": { 427 | "description": "Reduce Keyboard Fingerprinting (for advanced users):", 428 | "message": "キーボードフィンガープリントを削減 (上級ユーザー向け):" 429 | }, 430 | "keyboarddesc": { 431 | "description": "make keypress timings more random to increase anonymity (NOTE: adds a random delay between keypresses; disable this setting if unacceptable)", 432 | "message": "匿名性を高めるためにキー入力タイミングがよりランダムにします (注:キーの押下の間のランダムな遅延を追加します。この設定が受け入れられない無効)" 433 | }, 434 | "browserplugins": { 435 | "description": "Block Browser Plugin Enumeration:", 436 | "message": "Block Browser Plugin Enumeration:" 437 | }, 438 | "browserpluginsdesc": { 439 | "description": "prevent sites from reading your browser plugin details", 440 | "message": "prevent sites from reading your browser plugin details" 441 | }, 442 | "linktarget": { 443 | "description": "Page Link Opening Behaviour:", 444 | "message": "行動を開くページリンク:" 445 | }, 446 | "linktargetdesc": { 447 | "description": "modifies how all links are opened", 448 | "message": "すべてのリンクが開いているか修正" 449 | }, 450 | "loosesamedomain": { 451 | "description": "Loose - allow same domain and subdomains", 452 | "message": "ルース - 同じドメインおよびサブドメインを許可します" 453 | }, 454 | "minutes": { 455 | "description": "Minutes", 456 | "message": "Minutes" 457 | }, 458 | "mode": { 459 | "description": "Default Mode", 460 | "message": "デフォルトモード" 461 | }, 462 | "newtab": { 463 | "description": "New Tab", 464 | "message": "新しいタブ" 465 | }, 466 | "noexternal": { 467 | "description": "This tab has loaded no external resources", 468 | "message": "このタブには外部リソースをロードしていません" 469 | }, 470 | "notfiltered": { 471 | "description": "Not filtered", 472 | "message": "フィルタリングされません" 473 | }, 474 | "nowebrtc": { 475 | "description": "This browser does not support WebRTC protection", 476 | "message": "このブラウザはWebRTCの保護をサポートしていません。" 477 | }, 478 | "off": { 479 | "description": "-Off-", 480 | "message": "-オフ-" 481 | }, 482 | "onlyunwhitelisted": { 483 | "description": "Only on Unwhitelisted Domains", 484 | "message": "Unwhitelistedドメインでのみ" 485 | }, 486 | "options": { 487 | "description": "Options", 488 | "message": "オプション" 489 | }, 490 | "paranoia": { 491 | "description": "Paranoia Mode:", 492 | "message": "パラノイアモード:" 493 | }, 494 | "paranoiadesc": { 495 | "description": "block allowed domains on unlisted domains", 496 | "message": "非上場のドメイン上のブロック許可されているドメイン" 497 | }, 498 | "pastesettings": { 499 | "description": "Paste in settings and try again", 500 | "message": "設定に貼り付けて再試行してください" 501 | }, 502 | "preservesamedomain": { 503 | "description": "Respect Same-Domain:", 504 | "message": "同じドメインを尊重します:" 505 | }, 506 | "preservesamedomaindesc": { 507 | "description": "preserve same-domain elements", 508 | "message": "同じドメイン要素を保持します" 509 | }, 510 | "privacy": { 511 | "description": "Privacy Settings", 512 | "message": "プライバシー設定" 513 | }, 514 | "random": { 515 | "description": "Random", 516 | "message": "ランダム" 517 | }, 518 | "rating": { 519 | "description": "Show Rating Button:", 520 | "message": "評価ボタンを表示:" 521 | }, 522 | "ratingbtn": { 523 | "description": "Rating", 524 | "message": "評価" 525 | }, 526 | "ratingdesc": { 527 | "description": "if ticked, adds rating button under domains in tab popup", 528 | "message": "チェックが入っている場合、タブのポップアップ内のドメインの下に評価ボタンが追加されます" 529 | }, 530 | "recentlyupdated": { 531 | "description": "ScriptSafe was recently updated/reloaded.

You will need to either refresh this tab, create a new tab, or restart your browser in order for ScriptSafe to work.", 532 | "message": "ScriptSafeは最近、再読み込み/更新されました。

あなたは、このタブを更新し、新しいタブを作成したり、ScriptSafeが機能するためには、ブラウザを再起動するのいずれかが必要になります。" 533 | }, 534 | "referrer": { 535 | "description": "Block Click-Through Referrer:", 536 | "message": "クリックスルーリファラーをブロックします:" 537 | }, 538 | "referrerdesc": { 539 | "description": "blocks referrer information when clicking on third-party links (note: setting this to On All Domains may cause issues (e.g. thumbnails in Tweetdeck))", 540 | "message": "サードパーティのリンクをクリックするブロックリファラー情報(注:すべてのドメイン上にこれを設定するTweetdeckの中の問題(例えば、サムネイルを引き起こす可能性があります)" 541 | }, 542 | "referrerspoof": { 543 | "description": "Referrer Spoof:", 544 | "message": "リファラー偽装:" 545 | }, 546 | "referrerspoofdesc": { 547 | "description": "warning: if enabled, may break some sites (e.g. logging in)", 548 | "message": "警告: 有効にした場合、いくつかのサイトを破ることができる(例えば、ログイン)" 549 | }, 550 | "refresh": { 551 | "description": "Auto-Refresh Page:", 552 | "message": "オートリフレッシュページ:" 553 | }, 554 | "refreshdesc": { 555 | "description": "auto-refresh page after list change", 556 | "message": "リスト変更後のオートリフレッシュページ" 557 | }, 558 | "relaxed": { 559 | "description": "Relaxed", 560 | "message": "寛容" 561 | }, 562 | "request": { 563 | "description": "Every Request", 564 | "message": "Every Request" 565 | }, 566 | "restoredefault": { 567 | "description": "Restore Default Settings", 568 | "message": "Restore Default Settings" 569 | }, 570 | "restoredefault2": { 571 | "description": "Restore Default Settings + Clear All Lists", 572 | "message": "Restore Default Settings + Clear All Lists" 573 | }, 574 | "restoredefaultconfirm": { 575 | "description": "Are you sure you want to restore the default settings? This will NOT clear your lists.", 576 | "message": "Are you sure you want to restore the default settings? This will NOT clear your lists." 577 | }, 578 | "restoredefaultconfirm2": { 579 | "description": "Are you sure you want to restore the default settings AND clear all of your lists?", 580 | "message": "Are you sure you want to restore the default settings AND clear all of your lists?" 581 | }, 582 | "revoketemp": { 583 | "description": "Revoke Page Temporary Permissions", 584 | "message": "一時的な許可の取り消し" 585 | }, 586 | "revoketempall": { 587 | "description": "Revoke All Temporary", 588 | "message": "一時的な許可をすべて取り消し" 589 | }, 590 | "same": { 591 | "description": "Same Document", 592 | "message": "同じドキュメント" 593 | }, 594 | "sametab": { 595 | "description": "Same Tab", 596 | "message": "同じタブ" 597 | }, 598 | "save": { 599 | "description": "Save", 600 | "message": "セーブ" 601 | }, 602 | "savetxt": { 603 | "description": "Save as Text File", 604 | "message": "テキストフ​​ァイルとして保存します" 605 | }, 606 | "sections": { 607 | "description": "Sections", 608 | "message": "セクション" 609 | }, 610 | "settingsall": { 611 | "description": "select all", 612 | "message": "すべて選択" 613 | }, 614 | "settingsimport": { 615 | "description": "Copy and paste the settings you want to import into ScriptSafe into this box then click on the Import button.", 616 | "message": "あなたはこのボックスにScriptSafeにインポートする設定は、[インポート]ボタンをクリックしてコピーして貼り付けます。" 617 | }, 618 | "settingssave": { 619 | "description": "Settings saved", 620 | "message": "設定が保存されました" 621 | }, 622 | "settingssavesync": { 623 | "description": "Settings saved and syncing in 10 seconds", 624 | "message": "10秒での設定保存と同期" 625 | }, 626 | "showcontext": { 627 | "description": "Show in Context Menu:", 628 | "message": "コンテキストメニューを表示:" 629 | }, 630 | "ssdisabled": { 631 | "description": "ScriptSafe is disabled", 632 | "message": "ScriptSafeは無効になっています" 633 | }, 634 | "strict": { 635 | "description": "Strict", 636 | "message": "厳格" 637 | }, 638 | "strictsamedomain": { 639 | "description": "Strict - allow same domain only", 640 | "message": "厳格 - 同じドメインのみ許可します" 641 | }, 642 | "support": { 643 | "description": "To support development, click the heart :)", 644 | "message": "開発をサポートするために、ハートアイコンをクリックして :)" 645 | }, 646 | "syncdisable": { 647 | "description": "You have enabled auto-syncing. In order to prevent erasing your previously synced data (if any), please click on Sync Settings FROM Google Account.", 648 | "message": "あなたは、自動同期を有効にしています。 (もしあれば)あなたの以前に同期されたデータを消去しないようにするためには、Googleアカウントの同期設定]をクリックしてください。" 649 | }, 650 | "syncimport": { 651 | "description": "Sync Settings FROM Google Account", 652 | "message": "Googleアカウントから同期設定" 653 | }, 654 | "syncexport": { 655 | "description": "Sync Settings TO Google Account", 656 | "message": "Googleアカウントに同期設定" 657 | }, 658 | "syncdetect": { 659 | "description": "ScriptSafe has detected that you have settings synced on your Google account!\r\nClick on 'OK' if you want to import the settings from your Google Account.", 660 | "message": "ScriptSafeはGoogleアカウントに同期する設定を持っていることを検出しました!\r\nGoogleアカウントから設定をインポートしたい場合は、「OK」をクリックします。" 661 | }, 662 | "syncdisabled": { 663 | "description": "Syncing has been disabled to prevent overwriting your already synced data.\r\nFeel free to go to the Options page at any time to sync your settings (make a backup of your settings if necessary).", 664 | "message": "同期は既に同期されたデータを上書きを防止するために無効にされています。\r\nあなたの設定を同期する任意の時点で[オプション]ページに移動してお気軽に(必要に応じて、設定のバックアップを作成)。" 665 | }, 666 | "syncfromnotify": { 667 | "description": "Show Import Sync Notification:", 668 | "message": "インポート同期の通知を表示します:" 669 | }, 670 | "syncfromnotifydesc": { 671 | "description": "show popup when settings synced from your Google Account", 672 | "message": "設定は、Googleアカウントから同期されたときにポップアップを表示" 673 | }, 674 | "syncnotify": { 675 | "description": "Show Sync Notification:", 676 | "message": "同期通知を表示:" 677 | }, 678 | "syncnotifydesc": { 679 | "description": "show popup when settings synced to your Google Account", 680 | "message": "設定はGoogleアカウントに同期するときにポップアップを表示" 681 | }, 682 | "syncnotsupported": { 683 | "description": "Your current version of Google Chrome does not support settings syncing. Please try updating your Chrome version and try again.", 684 | "message": "Google Chromeののあなたの現在のバージョンでは、同期の設定をサポートしていません。お使いのChromeのバージョンを更新しようとしてから、もう一度お試しください。" 685 | }, 686 | "temp": { 687 | "description": "Temporary", 688 | "message": "一時的" 689 | }, 690 | "timezone": { 691 | "description": "Spoof Timezone:", 692 | "message": "偽装タイムゾーン:" 693 | }, 694 | "timezonedesc": { 695 | "description": "spoof or randomize your timezone. NOTE: if enabled, it may interfere with replying to emails in Gmail.", 696 | "message": "あなたのタイムゾーンをスプーフィングまたはランダム化します。注:有効にした場合、それは、Gmailのメールに返信を妨げる可能性があります。" 697 | }, 698 | "trust": { 699 | "description": "Trust", 700 | "message": "信頼" 701 | }, 702 | "trustlow": { 703 | "description": "trust", 704 | "message": "信頼" 705 | }, 706 | "uaspoofallow": { 707 | "description": "Apply to whitelisted domains as well", 708 | "message": "同様にホワイトリストに登録されたドメインに適用されます" 709 | }, 710 | "updatedisable": { 711 | "description": "Are you sure you want to disable any future update notifications like this one from appearing?\r\nYou can always re-allow update notifications by going to the ScriptSafe Options page and ticking the box beside Show Update Popup.", 712 | "message": "あなたが表示されてから、このように任意の将来のアップデート通知を無効にしてもよろしいですか?\r\nあなたはいつもScriptSafeオプション]ページに移動して表示を更新ポップアップの横のボックスを刻むことにより、更新通知を再許可することができます。" 713 | }, 714 | "updatedisablemessage": { 715 | "description": "Update notifications disabled", 716 | "message": "更新通知は無効" 717 | }, 718 | "updatenotify": { 719 | "description": "Show Changelog on Update:", 720 | "message": "アップデートの変更を表示します:" 721 | }, 722 | "unwanted": { 723 | "description": "Unwanted", 724 | "message": "不要な" 725 | }, 726 | "updatenotifydesc": { 727 | "description": "show changelog page when ScriptSafe is updated", 728 | "message": "ScriptSafeが更新されたときに更新履歴ページを表示" 729 | }, 730 | "url": { 731 | "description": "Domain", 732 | "message": "ドメイン" 733 | }, 734 | "urldesc": { 735 | "description": "Enter a domain or expression (click 'Help' for more info)", 736 | "message": "ドメインまたは式を入力します(詳細は[ヘルプ]をクリックします)" 737 | }, 738 | "useragentspoof": { 739 | "description": "User-Agent Spoof:", 740 | "message": "ユーザーエージェント偽装:" 741 | }, 742 | "useragentspoofdesc": { 743 | "description": "spoofs your user-agent (browser and OS)", 744 | "message": "あなたのユーザーエージェント(ブラウザとOS)を偽装" 745 | }, 746 | "userref": { 747 | "description": "Enter an address to set as your referrer value for all sites", 748 | "message": "すべてのサイトのリファラー値として設定するアドレスを入力してください" 749 | }, 750 | "utm": { 751 | "description": "Remove Google Analytics (UTM) Tracking:", 752 | "message": "Googleアナリティクス(UTM)の追跡を削除します。" 753 | }, 754 | "utmdesc": { 755 | "description": "remove Google Analytics (UTM) tracking tokens", 756 | "message": "Googleアナリティクス(UTM)の追跡トークンを削除" 757 | }, 758 | "webbugs": { 759 | "description": "Remove Webbugs:", 760 | "message": "Webbugsを削除します。" 761 | }, 762 | "webbugsdesc": { 763 | "description": "remove invisible third-party elements", 764 | "message": "目に見えない、サードパーティ製の要素を削除" 765 | }, 766 | "webgl": { 767 | "description": "Block WebGL Fingerprinting:", 768 | "message": "ブロックWebGLのフィンガープリント:" 769 | }, 770 | "webgldesc": { 771 | "description": "prevent fingerprinting via the WebGL API", 772 | "message": "WebGLのAPIを介してフィンガープリントを防ぎます" 773 | }, 774 | "webrtcdevice": { 775 | "description": "Block Device Enumeration:", 776 | "message": "ブロックデバイスの列挙:" 777 | }, 778 | "webrtcdevicedesc": { 779 | "description": "prevent having hardware devices detected via the WebRTC API", 780 | "message": "WebRTC APIを介して検出されたハードウェアデバイスを持つ防ぎます" 781 | }, 782 | "webrtc": { 783 | "description": "WebRTC Protection:", 784 | "message": "WebRTCの保護:" 785 | }, 786 | "webrtcdesc": { 787 | "description": "prevent IP address leakage", 788 | "message": "IPアドレス漏れを防止" 789 | }, 790 | "webvr": { 791 | "description": "Block WebVR Enumeration:", 792 | "message": "ブロックWebVR列挙:" 793 | }, 794 | "webvrdesc": { 795 | "description": "prevent having devices detected via the WebVR API", 796 | "message": "WebVR APIを介して検出されたデバイスを防ぎます" 797 | }, 798 | "blackbind": { 799 | "description": "+ Blacklist", 800 | "message": "+ブラックリスト" 801 | }, 802 | "whitebind": { 803 | "description": "+ Whitelist", 804 | "message": "+ホワイトリスト" 805 | }, 806 | "blacklist": { 807 | "description": "Blacklist", 808 | "message": "ブラックリスト" 809 | }, 810 | "whitelist": { 811 | "description": "Whitelist", 812 | "message": "ホワイトリスト" 813 | }, 814 | "blacklisted": { 815 | "description": "Blacklisted", 816 | "message": "ブラックリストに載って" 817 | }, 818 | "whitelisted": { 819 | "description": "Whitelisted", 820 | "message": "ホワイトリストに登録" 821 | }, 822 | "blacklistlow": { 823 | "description": "blacklist", 824 | "message": "ブラックリスト" 825 | }, 826 | "whitelistlow": { 827 | "description": "whitelist", 828 | "message": "ホワイトリスト" 829 | }, 830 | "blacklistmove": { 831 | "description": "Move to Blacklist", 832 | "message": "ブラックリストに移動" 833 | }, 834 | "whitelistmove": { 835 | "description": "Move to Whitelist", 836 | "message": "ホワイトリストに移動" 837 | }, 838 | "whitelistblacklist": { 839 | "description": "Whitelist / Blacklist", 840 | "message": "ホワイトリスト/ブラックリスト" 841 | }, 842 | "xml": { 843 | "description": "XML HTTP Request Handling:", 844 | "message": "XML HTTPリクエストの処理:" 845 | }, 846 | "xmlall": { 847 | "description": "Control All Requests", 848 | "message": "すべての要求を制御します" 849 | }, 850 | "xmlcross": { 851 | "description": "Control Cross-Domain Requests (allow Same-Domain)", 852 | "message": "コントロールクロスドメインリクエスト(同じドメインを許可)" 853 | }, 854 | "xmldesc": { 855 | "description": "control XML HTTP Requests", 856 | "message": "コントロールのXML HTTP要求" 857 | } 858 | } -------------------------------------------------------------------------------- /_locales/ko/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appdescription": { 3 | "description": "Regain control of the web and surf more securely.", 4 | "message": "보다 안전하게 웹 서핑을 제어 합니다." 5 | }, 6 | "alldomains": { 7 | "description": "On All Domains", 8 | "message": "모든 도메인에서" 9 | }, 10 | "allow": { 11 | "description": "Allow", 12 | "message": "허용" 13 | }, 14 | "alloweditems": { 15 | "description": "Allowed Items", 16 | "message": "허용 된 항목" 17 | }, 18 | "blockeditems": { 19 | "description": "Blocked Items", 20 | "message": "차단 된 항목" 21 | }, 22 | "allowallblocked": { 23 | "description": "Allow All Blocked For Session", 24 | "message": "차단 된 세션을 모두 허용" 25 | }, 26 | "annoyances": { 27 | "description": "Block Unwanted Content:", 28 | "message": "불필요한 콘텐츠 차단 :" 29 | }, 30 | "annoyancesdesc": { 31 | "description": "remove unwanted content from known ad / malware domains; domains gathered from MVPS HOSTS, hpHOSTS (ad / tracking servers), Peter Lowe's HOSTS Project, MalwareDomainList.com", 32 | "message": "원치 않는 광고 / 악성 도메인을 차단합니다; 차단 목록은 MVPS HOSTS, hpHOSTS(광고 / 추적 서버), Peter Lowe's HOSTS Project, MalwareDomainList.com 에서 가져옵니다." 33 | }, 34 | "annoyancesmode": { 35 | "description": "Unwanted Content Mode:", 36 | "message": "불필요한 콘텐츠 모드 :" 37 | }, 38 | "annoyancesmodedesc": { 39 | "description": "Relaxed = whitelisted domains will not be blocked; Strict = domains in the unwanted domain list will be blocked even if whitelisted", 40 | "message": "Relaxed = 화이트리스트에 등록 된 도메인은 차단되지 않습니다; Strict = 화이트리스트에 등록 된 도메인이라도 차단됩니다." 41 | }, 42 | "antisocialpopup": { 43 | "description": "Antisocial", 44 | "message": "SNS 차단" 45 | }, 46 | "antisocial": { 47 | "description": "Antisocial Mode:", 48 | "message": "SNS 차단 모드 :" 49 | }, 50 | "antisocialdesc": { 51 | "description": "always remove social widgets/buttons, even if whitelisted", 52 | "message": "화이트리스트에 등록 된 경우라도 SNS 위젯 / 버튼은 항상 차단" 53 | }, 54 | "antisocialdesc2": { 55 | "description": "For more comprehensive blocking, check out Privacy Badger, Disconnect, Blur, and/or uBlock Origin with all of the subscription lists on the Fanboy site", 56 | "message": "보다 자세한 차단 내용은Privacy Badger, Disconnect, Blur, uBlock Origin의 구독목록과 Fanboy site를 확인하세요." 57 | }, 58 | "audioblock": { 59 | "description": "Block Audio Fingerprinting:", 60 | "message": "오디오 Fingerprinting 차단 :" 61 | }, 62 | "audioblockdesc": { 63 | "description": "prevent fingerprinting via the AudioContext API", 64 | "message": "AudioContext API를 통한 fingerprinting을 방지합니다." 65 | }, 66 | "battery": { 67 | "description": "Block Battery Fingerprinting:", 68 | "message": "배터리 Fingerprinting 차단 :" 69 | }, 70 | "batterydesc": { 71 | "description": "prevent fingerprinting via the Battery API", 72 | "message": "Battery API를 통한 fingerprinting을 방지합니다." 73 | }, 74 | "behavior": { 75 | "description": "Behaviour Settings", 76 | "message": "동작 설정" 77 | }, 78 | "blockrec": { 79 | "description": "Block (recommended)", 80 | "message": "차단 (권장)" 81 | }, 82 | "block": { 83 | "description": "Block", 84 | "message": "차단" 85 | }, 86 | "blocked": { 87 | "description": "Blocked", 88 | "message": "차단 됨" 89 | }, 90 | "blockallallowed": { 91 | "description": "Block All Allowed For Session", 92 | "message": "허용 된 모든 세션을 차단" 93 | }, 94 | "bluetooth": { 95 | "description": "Block Bluetooth Enumeration:", 96 | "message": "Bluetooth Enumeration 차단 :" 97 | }, 98 | "bluetoothdesc": { 99 | "description": "prevent having devices detected via the Bluetooth API", 100 | "message": "Bluetooth API를 통한 장치 감지를 방지합니다" 101 | }, 102 | "bulkimport": { 103 | "description": "bulk import", 104 | "message": "대량 가져오기" 105 | }, 106 | "bulkbtn": { 107 | "description": "Import to List", 108 | "message": "목록에서 가져오기" 109 | }, 110 | "bulkimportcap": { 111 | "description": "Bulk Import", 112 | "message": "대량 가져오기" 113 | }, 114 | "bulkimportcapdesc": { 115 | "description": "Copy and paste domains into the box below. Each domain should be on a separate line.", 116 | "message": "아래의 상자에 복사 및 붙여 넣으세요. 각 도메인은 별도의 행으로 분리되어야 합니다." 117 | }, 118 | "canvas": { 119 | "description": "Canvas Fingerprint Protection:", 120 | "message": "Canvas Fingerprint 보호 :" 121 | }, 122 | "cannotprocess": { 123 | "description": "ScriptSafe cannot process this page.

Please try visiting a website.", 124 | "message": "이 페이지에서는 ScriptSafe가 작동되지 않습니다.​​

웹 사이트를 방문해보세요." 125 | }, 126 | "canvasblank": { 127 | "description": "Blank Readout", 128 | "message": "공백으로 표시" 129 | }, 130 | "canvasrandom": { 131 | "description": "Random Readout", 132 | "message": "랜덤으로 표시" 133 | }, 134 | "canvasblock": { 135 | "description": "Completely Block Readout", 136 | "message": "완전히 차단" 137 | }, 138 | "canvasdesc": { 139 | "description": "protect against fingerprinting attempts through <canvas> elements", 140 | "message": "<canvas> 요소를 통한 fingerprinting 시도에 대한 보호" 141 | }, 142 | "canvasfont": { 143 | "description": "Block Canvas Font Access:", 144 | "message": "글꼴 액세스 Canvas 차단:" 145 | }, 146 | "canvasfontdesc": { 147 | "description": "prevent system fonts from being enumerated through <canvas> elements. May interfere with Google Docs.", 148 | "message": "<canvas>요소를 통해 열거되는 시스템 글꼴을 방지합니다. Google 문서 도구 사용시 문제가 생길 수 있습니다." 149 | }, 150 | "classicoptions": { 151 | "description": "Classic Options Mode:", 152 | "message": "클래식 옵션 모드 :" 153 | }, 154 | "classicoptionsdesc": { 155 | "description": "if ticked, closes tab options everytime an option is clicked", 156 | "message": "체크가 되어있는 경우, 옵션을 클릭할 때마다 아이콘 옵션탭이 닫힙니다." 157 | }, 158 | "clear": { 159 | "description": "Clear", 160 | "message": "삭제" 161 | }, 162 | "clearlow": { 163 | "description": "clear", 164 | "message": "삭제" 165 | }, 166 | "clientrects": { 167 | "description": "Block Client Rectangles:", 168 | "message": "Client Rectangles 차단 :" 169 | }, 170 | "clientrectsdesc": { 171 | "description": "prevent fingerprinting through calculating element rectangles. May interfere with some dropdowns.", 172 | "message": "요소의 사각형 계산을 통한 fingerprinting을 방지합니다. 일부 드롭다운 메뉴에 문제가 생길 수 있습니다." 173 | }, 174 | "clipboard": { 175 | "description": "Prevent Clipboard Interference:", 176 | "message": "클립 보드의 간섭을 방지합니다:" 177 | }, 178 | "clipboarddesc": { 179 | "description": "prevent pages from interfering with clipboard actions", 180 | "message": "페이지의 클립 보드 작업 간섭을 방지합니다" 181 | }, 182 | "close": { 183 | "description": "Close", 184 | "message": "닫기" 185 | }, 186 | "cookies": { 187 | "description": "Block Unwanted Cookies:", 188 | "message": "불필요한 쿠키 차단 :" 189 | }, 190 | "cookiesdesc": { 191 | "description": "blocks cookies from known ad / malware domains; below mode applies to this as well", 192 | "message": "원치 않는 광고 / 악성 도메인의 쿠키를 차단합니다." 193 | }, 194 | "custom": { 195 | "description": "Custom", 196 | "message": "사용자 정의" 197 | }, 198 | "default": { 199 | "description": "Default", 200 | "message": "기본" 201 | }, 202 | "default_public_interface_only": { 203 | "description": "Protect Local IP", 204 | "message": "로컬 IP를 보호합니다" 205 | }, 206 | "deny": { 207 | "description": "Deny", 208 | "message": "거부" 209 | }, 210 | "disable_non_proxied_udp": { 211 | "description": "Protect Local and Public IPs", 212 | "message": "로컬 및 공용 ​​IP를 보호합니다" 213 | }, 214 | "disable": { 215 | "description": "Disable", 216 | "message": "사용 중지" 217 | }, 218 | "disabled": { 219 | "description": "disabled", 220 | "message": "사용 중지" 221 | }, 222 | "disabledcap": { 223 | "description": "Disabled", 224 | "message": "사용 중지" 225 | }, 226 | "disabledsync": { 227 | "description": "Syncing is disabled.\r\nFeel free to go to the Options page at any time to sync your settings (make a backup of your settings if necessary).", 228 | "message": "동기화가 사용 중지 되어 있습니다. \r\n설정을 동기화 하려면 언제든 옵션 페이지에서 선택가능합니다. (필요한 경우 설정 백업 가능)" 229 | }, 230 | "disableremove": { 231 | "description": "Disable and Remove:", 232 | "message": "사용 중지하고 삭제:" 233 | }, 234 | "distrust": { 235 | "description": "Distrust", 236 | "message": "불신" 237 | }, 238 | "distrustlow": { 239 | "description": "distrust", 240 | "message": "불신" 241 | }, 242 | "domain": { 243 | "description": "Same Domain", 244 | "message": "동일한 도메인" 245 | }, 246 | "domainsort": { 247 | "description": "Sort by Domain:", 248 | "message": "도메인 정렬 :" 249 | }, 250 | "domaininfo": { 251 | "description": "Help", 252 | "message": "도움말" 253 | }, 254 | "domaininvalid": { 255 | "description": "Invalid domain/address", 256 | "message": "잘못된 도메인 / 주소" 257 | }, 258 | "domaininvalid2": { 259 | "description": "The domain or address must contain some letters/numbers", 260 | "message": "도메인 또는 주소는 일부 문자 / 숫자를 포함해야 합니다." 261 | }, 262 | "domaininvalid3": { 263 | "description": "Domain cannot be added as it is a provider of unwanted content (see Block Unwanted Content and/or Antisocial Mode)", 264 | "message": "불필요한 컨텐츠 공급자이기 때문에 도메인을 추가 할 수 없습니다. (불필요한 콘텐츠 차단 / SNS 차단 모드 참조)" 265 | }, 266 | "domainsortdesc": { 267 | "description": "sorts URL lists by domains on this page and in the panel", 268 | "message": "이 페이지에서 도메인을 통한 URL 목록으로 패널 정렬" 269 | }, 270 | "domaintip": { 271 | "description": "Tip: press CTRL+F to search the lists", 272 | "message": "팁 : Ctrl + F를 눌러 목록을 검색합니다." 273 | }, 274 | "dontshowpage": { 275 | "description": "Don't Show This Page Again", 276 | "message": "이 페이지는 다시 표시하지 않습니다." 277 | }, 278 | "enable": { 279 | "description": "Enable:", 280 | "message": "사용 :" 281 | }, 282 | "enabled": { 283 | "description": "enabled", 284 | "message": "사용" 285 | }, 286 | "enabless": { 287 | "description": "Enable ScriptSafe", 288 | "message": "ScriptSafe 사용" 289 | }, 290 | "enablesyncing": { 291 | "description": "Enable Syncing:", 292 | "message": "동기화 사용 :" 293 | }, 294 | "export": { 295 | "description": "Export", 296 | "message": "내보내기" 297 | }, 298 | "exportsuccess": { 299 | "description": "Your settings have been successfully synced!", 300 | "message": "설정이 성공적으로 동기화되어 있습니다!" 301 | }, 302 | "exportsuccesstitle": { 303 | "description": "Settings Synced!", 304 | "message": "설정이 동기화 되었습니다!" 305 | }, 306 | "fingerprint": { 307 | "description": "Fingerprint Protection", 308 | "message": "Fingerprint 보호" 309 | }, 310 | "fingerprintdesc": { 311 | "description": "Fingerprint Protection (may break sites)", 312 | "message": "Fingerprint 보호 (일부 사이트가 작동되지 않을 수 있습니다)" 313 | }, 314 | "firstsync": { 315 | "description": "It appears you haven't synced your settings to your Google account yet.\r\nScriptSafe is about to sync your current settings to your Google account.\r\nClick on 'OK' if you want to continue.\r\nIf not, click 'Cancel', and on the other device with your preferred settings, update ScriptSafe and click on OK when you are presented with this message.", 316 | "message": "아직 Google 계정에 설정을 동기화하지 않았습니다.\r\nScriptSafe는 Google 계정에 현재 설정을 동기화하려 합니다.\r\n계속하려면 'OK'를 취소하려면 'Cancel'을 클릭하세요.\r\n다른 장치에 ScriptSafe의 현재 설정을 적용하려면 이 메시지가 표시되었을때 OK를 클릭하세요." 317 | }, 318 | "forcesyncexport": { 319 | "description": "Do you want to sync your current settings to your Google Account?\r\nNote: please do not press this frequently; there is a limit of 10 per minute and 1,000 per hour.", 320 | "message": "Google 계정에 현재 설정을 동기화하겠습니까?\r\n주의 : 이것을 자주 누르지 마세요; 분당 10번, 시간당 1,000번의 제한이 있습니다." 321 | }, 322 | "forcesyncimport": { 323 | "description": "Do you want to import the synced settings from your Google Account to this device?", 324 | "message": "Google 계정에서 동기화 설정을 이 장치에 가져 오시겠습니까?" 325 | }, 326 | "forever": { 327 | "description": "Forever", 328 | "message": "Forever" 329 | }, 330 | "hotkeys": { 331 | "description": "Hotkeys:", 332 | "message": "단축키 :" 333 | }, 334 | "generalsettings": { 335 | "description": "General Settings", 336 | "message": "일반 설정" 337 | }, 338 | "gamepad": { 339 | "description": "Block Gamepad Enumeration:", 340 | "message": "Gamepad Enumeration 차단 :" 341 | }, 342 | "gamepaddesc": { 343 | "description": "prevent having devices detected via the Gamepad API", 344 | "message": "Gamepad API를 통한 장치 감지를 방지합니다" 345 | }, 346 | "availablehotkeys": { 347 | "description": "Available hotkey actions", 348 | "message": "사용 가능한 단축키 액션" 349 | }, 350 | "hotkeystoggle": { 351 | "description": "Temporarily allow/block all resources for a current tab", 352 | "message": "일시적으로 현재 탭의 모든 리소스를 허용 / 차단" 353 | }, 354 | "hotkeysremove": { 355 | "description": "Remove temporary permissions for a current tab", 356 | "message": "현재 탭에 대한 일시적 허용 제거" 357 | }, 358 | "hotkeysremoveall": { 359 | "description": "Remove all temporary permissions", 360 | "message": "모든 일시적 허용 제거" 361 | }, 362 | "hotkeyspage": { 363 | "description": "Configure ScriptSafe hotkeys", 364 | "message": "ScriptSafe 단축키 설정" 365 | }, 366 | "hotkeysinst": { 367 | "description": "click on Keyboard Shortcuts", 368 | "message": "키보드 단축키를 클릭하세요" 369 | }, 370 | "listallsettings": { 371 | "description": "List All Settings", 372 | "message": "모든 설정을 나열" 373 | }, 374 | "ignoredallow": { 375 | "description": "Ignored Allow", 376 | "message": "허용을 무시" 377 | }, 378 | "importsuccess": { 379 | "description": "The latest settings have been successfully downloaded!", 380 | "message": "최근 설정이 성공적으로 다운로드 되고 있습니다!" 381 | }, 382 | "importsuccesstitle": { 383 | "description": "Settings Downloaded!", 384 | "message": "설정 다운로드!" 385 | }, 386 | "groupallsettings": { 387 | "description": "Group All Settings", 388 | "message": "그룹의 모든 설정" 389 | }, 390 | "hashchecking": { 391 | "description": "Remove Possible Hash Tracking:", 392 | "message": "추적이 가능한 해시 삭제 :" 393 | }, 394 | "hashcheckingdesc": { 395 | "description": "remove possible tracking tokens passed using hash, where there is an attribute and value (e.g. #xtor=RSS-1)", 396 | "message": "해시를 사용하여 전달 한 속성 값 추적 토큰을 제거 (e.g.#xtor=RSS-1)" 397 | }, 398 | "hide": { 399 | "description": "Hide", 400 | "message": "숨기기" 401 | }, 402 | "import": { 403 | "description": "Import", 404 | "message": "가져오기" 405 | }, 406 | "importexport": { 407 | "description": "Import / Restore Settings", 408 | "message": "가져오기 / 복원 설정" 409 | }, 410 | "importsuccessoptions": { 411 | "description": "Settings imported successfully", 412 | "message": "성공적으로 설정을 가져왔습니다." 413 | }, 414 | "importsuccesscond": { 415 | "description": "Settings imported successfully, except the following (empty value or unrecognized name):", 416 | "message": "다음 값(비었거나 인식되지 않는 이름)을 제외하고 성공적으로 설정을 가져왔습니다:" 417 | }, 418 | "importsuccesssync": { 419 | "description": "Settings imported successfully and syncing in 10 seconds", 420 | "message": "설정을 성공적으로 가져왔으며 10 초내로 동기화됩니다." 421 | }, 422 | "interval": { 423 | "description": "Every x Minutes", 424 | "message": "Every x Minutes" 425 | }, 426 | "keyboard": { 427 | "description": "Reduce Keyboard Fingerprinting (for advanced users):", 428 | "message": "키보드 Fingerprinting 방지 (고급 사용자 전용):" 429 | }, 430 | "keyboarddesc": { 431 | "description": "make keypress timings more random to increase anonymity (NOTE: adds a random delay between keypresses; disable this setting if unacceptable)", 432 | "message": "익명성을 높이기 위해 키 입력 타이밍을 랜덤으로 합니다.(주의 : 키를 눌렀을때 임의의 지연을 추가합니다. 받아 들여지지 않는 경우 사용 중지 하세요)" 433 | }, 434 | "browserplugins": { 435 | "description": "Block Browser Plugin Enumeration:", 436 | "message": "Block Browser Plugin Enumeration:" 437 | }, 438 | "browserpluginsdesc": { 439 | "description": "prevent sites from reading your browser plugin details", 440 | "message": "prevent sites from reading your browser plugin details" 441 | }, 442 | "linktarget": { 443 | "description": "Page Link Opening Behaviour:", 444 | "message": "페이지 링크를 열 때 동작 :" 445 | }, 446 | "linktargetdesc": { 447 | "description": "modifies how all links are opened", 448 | "message": "모든 링크를 여는 방법 수정" 449 | }, 450 | "loosesamedomain": { 451 | "description": "Loose - allow same domain and subdomains", 452 | "message": "Loose - 같은 도메인 및 하위 도메인을 허용" 453 | }, 454 | "minutes": { 455 | "description": "Minutes", 456 | "message": "Minutes" 457 | }, 458 | "mode": { 459 | "description": "Default Mode", 460 | "message": "기본 모드" 461 | }, 462 | "newtab": { 463 | "description": "New Tab", 464 | "message": "새 탭" 465 | }, 466 | "noexternal": { 467 | "description": "This tab has loaded no external resources", 468 | "message": "이 탭에서는 외부 리소스를 로드하지 않았습니다." 469 | }, 470 | "notfiltered": { 471 | "description": "Not filtered", 472 | "message": "필터링되지 않았습니다" 473 | }, 474 | "nowebrtc": { 475 | "description": "This browser does not support WebRTC protection", 476 | "message": "이 브라우저는 WebRTC 보호를 지원하지 않습니다." 477 | }, 478 | "off": { 479 | "description": "-Off-", 480 | "message": "-끄기-" 481 | }, 482 | "onlyunwhitelisted": { 483 | "description": "Only on Unwhitelisted Domains", 484 | "message": "Unwhitelisted 도메인에서만" 485 | }, 486 | "options": { 487 | "description": "Options", 488 | "message": "옵션" 489 | }, 490 | "paranoia": { 491 | "description": "Paranoia Mode:", 492 | "message": "Paranoia 모드 :" 493 | }, 494 | "paranoiadesc": { 495 | "description": "block allowed domains on unlisted domains", 496 | "message": "목록에 없는 도메인에서는 허용된 도메인들도 차단" 497 | }, 498 | "pastesettings": { 499 | "description": "Paste in settings and try again", 500 | "message": "설정에 붙여넣어 다시 시도하십시오" 501 | }, 502 | "preservesamedomain": { 503 | "description": "Respect Same-Domain:", 504 | "message": "같은 도메인 관계 :" 505 | }, 506 | "preservesamedomaindesc": { 507 | "description": "preserve same-domain elements", 508 | "message": "같은 도메인 요소를 유지합니다" 509 | }, 510 | "privacy": { 511 | "description": "Privacy Settings", 512 | "message": "개인 정보 설정" 513 | }, 514 | "random": { 515 | "description": "Random", 516 | "message": "랜덤" 517 | }, 518 | "rating": { 519 | "description": "Show Rating Button:", 520 | "message": "평가 버튼을 표시 :" 521 | }, 522 | "ratingbtn": { 523 | "description": "Rating", 524 | "message": "평가" 525 | }, 526 | "ratingdesc": { 527 | "description": "if ticked, adds rating button under domains in tab popup", 528 | "message": "체크가 되어있는 경우 아이콘 팝업의 도메인 아래에 평가 버튼이 추가됩니다" 529 | }, 530 | "recentlyupdated": { 531 | "description": "ScriptSafe was recently updated/reloaded.

You will need to either refresh this tab, create a new tab, or restart your browser in order for ScriptSafe to work.", 532 | "message": "ScriptSafe가 최근 업데이트 / 리로드 되었습니다.

ScriptSafe가 정상 작동하기 위해서는 탭을 새로고침 하거나 새 탭을 만들거나 브라우저를 다시 시작해야 합니다." 533 | }, 534 | "referrer": { 535 | "description": "Block Click-Through Referrer:", 536 | "message": "클릭을 통한 Referrer 차단 :" 537 | }, 538 | "referrerdesc": { 539 | "description": "blocks referrer information when clicking on third-party links (note: setting this to On All Domains may cause issues (e.g. thumbnails in Tweetdeck))", 540 | "message": "제 3자의 링크를 클릭할때 제공되는 referrer 정보 차단(주의 : 모든 도메인에 이를 설정하면 문제가 발생할 수 있습니다. (e.g. Tweetdeck에서 미리보기 등)" 541 | }, 542 | "referrerspoof": { 543 | "description": "Referrer Spoof:", 544 | "message": "가짜 Referrer:" 545 | }, 546 | "referrerspoofdesc": { 547 | "description": "warning: if enabled, may break some sites (e.g. logging in)", 548 | "message": "경고 : 사용 설정 시 여러 사이트에서 문제가 생길 수 있습니다. (e.g. 로그인 등)" 549 | }, 550 | "refresh": { 551 | "description": "Auto-Refresh Page:", 552 | "message": "페이지 자동 새로고침 :" 553 | }, 554 | "refreshdesc": { 555 | "description": "auto-refresh page after list change", 556 | "message": "목록 변경 후 페이지 자동 새로고침" 557 | }, 558 | "relaxed": { 559 | "description": "Relaxed", 560 | "message": "Relaxed" 561 | }, 562 | "request": { 563 | "description": "Every Request", 564 | "message": "Every Request" 565 | }, 566 | "restoredefault": { 567 | "description": "Restore Default Settings", 568 | "message": "Restore Default Settings" 569 | }, 570 | "restoredefault2": { 571 | "description": "Restore Default Settings + Clear All Lists", 572 | "message": "Restore Default Settings + Clear All Lists" 573 | }, 574 | "restoredefaultconfirm": { 575 | "description": "Are you sure you want to restore the default settings? This will NOT clear your lists.", 576 | "message": "Are you sure you want to restore the default settings? This will NOT clear your lists." 577 | }, 578 | "restoredefaultconfirm2": { 579 | "description": "Are you sure you want to restore the default settings AND clear all of your lists?", 580 | "message": "Are you sure you want to restore the default settings AND clear all of your lists?" 581 | }, 582 | "revoketemp": { 583 | "description": "Revoke Page Temporary Permissions", 584 | "message": "페이지의 일시적 허용을 취소" 585 | }, 586 | "revoketempall": { 587 | "description": "Revoke All Temporary", 588 | "message": "모든 일시적 허용을 취소" 589 | }, 590 | "same": { 591 | "description": "Same Document", 592 | "message": "동일한 문서" 593 | }, 594 | "sametab": { 595 | "description": "Same Tab", 596 | "message": "동일한 탭" 597 | }, 598 | "save": { 599 | "description": "Save", 600 | "message": "저장" 601 | }, 602 | "savetxt": { 603 | "description": "Save as Text File", 604 | "message": "텍스트 파일로 저장합니다." 605 | }, 606 | "sections": { 607 | "description": "Sections", 608 | "message": "섹션" 609 | }, 610 | "settingsall": { 611 | "description": "select all", 612 | "message": "모두 선택" 613 | }, 614 | "settingsimport": { 615 | "description": "Copy and paste the settings you want to import into ScriptSafe into this box then click on the Import button.", 616 | "message": "ScriptSafe로 가져올 설정을 이 상자에 복사 붙여넣기 한 다음 가져오기 버튼을 클릭합니다." 617 | }, 618 | "settingssave": { 619 | "description": "Settings saved", 620 | "message": "설정이 저장되었습니다." 621 | }, 622 | "settingssavesync": { 623 | "description": "Settings saved and syncing in 10 seconds", 624 | "message": "설정이 저장되었으며 10 초내에 동기화 됩니다." 625 | }, 626 | "showcontext": { 627 | "description": "Show in Context Menu:", 628 | "message": "컨텍스트 메뉴에 표시:" 629 | }, 630 | "ssdisabled": { 631 | "description": "ScriptSafe is disabled", 632 | "message": "ScriptSafe는 사용 중지 되어 있습니다." 633 | }, 634 | "strict": { 635 | "description": "Strict", 636 | "message": "Strict" 637 | }, 638 | "strictsamedomain": { 639 | "description": "Strict - allow same domain only", 640 | "message": "Strict - 같은 도메인만 허용" 641 | }, 642 | "support": { 643 | "description": "To support development, click the heart :)", 644 | "message": "개발을 지원해 주시려면, 하트 아이콘을 클릭해주세요 :)" 645 | }, 646 | "syncdisable": { 647 | "description": "You have enabled auto-syncing. In order to prevent erasing your previously synced data (if any), please click on Sync Settings FROM Google Account.", 648 | "message": "현재 자동 동기화를 사용하고 있습니다. 당신의 이전 동기화 된 데이터를 삭제하지 않도록 하려면 Google 계정의 동기화 설정을 클릭하세요." 649 | }, 650 | "syncimport": { 651 | "description": "Sync Settings FROM Google Account", 652 | "message": "Google 계정에서 동기화 설정 가져오기" 653 | }, 654 | "syncexport": { 655 | "description": "Sync Settings TO Google Account", 656 | "message": "Google 계정으로 동기화 설정 내보내기" 657 | }, 658 | "syncdetect": { 659 | "description": "ScriptSafe has detected that you have settings synced on your Google account!\r\nClick on 'OK' if you want to import the settings from your Google Account.", 660 | "message": "Google 계정에서 ScriptSafe 동기화 설정을 발견했습니다!\r\nGoogle 계정에서 설정을 가져 오려면 'OK'를 클릭하세요." 661 | }, 662 | "syncdisabled": { 663 | "description": "Syncing has been disabled to prevent overwriting your already synced data.\r\nFeel free to go to the Options page at any time to sync your settings (make a backup of your settings if necessary).", 664 | "message": "동기화는 이미 동기화 된 데이터를 덮어 쓰는 것을 방지하기 위해 사용 중지 되어 있습니다.\r\n동기화로 변경하려면 언제든지 옵션 페이지에서 설정 가능합니다. (필요한 경우 설정 백업 가능)" 665 | }, 666 | "syncfromnotify": { 667 | "description": "Show Import Sync Notification:", 668 | "message": "가져오기 된 동기화 알림 표시 :" 669 | }, 670 | "syncfromnotifydesc": { 671 | "description": "show popup when settings synced from your Google Account", 672 | "message": " 설정이 Google 계정에서 가져오기 된 경우 팝업 알림" 673 | }, 674 | "syncnotify": { 675 | "description": "Show Sync Notification:", 676 | "message": "동기화 알림 표시 :" 677 | }, 678 | "syncnotifydesc": { 679 | "description": "show popup when settings synced to your Google Account", 680 | "message": "설정이 Google 계정으로 내보내기 된 경우 팝업 알림" 681 | }, 682 | "syncnotsupported": { 683 | "description": "Your current version of Google Chrome does not support settings syncing. Please try updating your Chrome version and try again.", 684 | "message": "Google Chrome의 현재 버전이 동기화 설정을 지원하지 않습니다. Chrome 버전을 업데이트하고 다시 시도하십시오." 685 | }, 686 | "temp": { 687 | "description": "Temporary", 688 | "message": "일시적 허용" 689 | }, 690 | "timezone": { 691 | "description": "Spoof Timezone:", 692 | "message": "가짜 시간대 :" 693 | }, 694 | "timezonedesc": { 695 | "description": "spoof or randomize your timezone. NOTE: if enabled, it may interfere with replying to emails in Gmail.", 696 | "message": "현재 시간대를 속이거나 랜덤화 합니다. 주의 : 사용 설정 시 Gmail 등 이메일 답장에 문제가 생길 수 있습니다." 697 | }, 698 | "trust": { 699 | "description": "Trust", 700 | "message": "신뢰" 701 | }, 702 | "trustlow": { 703 | "description": "trust", 704 | "message": "신뢰" 705 | }, 706 | "uaspoofallow": { 707 | "description": "Apply to whitelisted domains as well", 708 | "message": "화이트리스트에 등록 된 도메인에 적용됩니다." 709 | }, 710 | "updatedisable": { 711 | "description": "Are you sure you want to disable any future update notifications like this one from appearing?\r\nYou can always re-allow update notifications by going to the ScriptSafe Options page and ticking the box beside Show Update Popup.", 712 | "message": "이 같은 향후 업데이트 알림을 해제 하시겠습니까?\r\n당신은 언제든지 ScriptSafe 옵션 페이지로 이동하여 업데이트 팝업 상자를 체크해 업데이트 알림을 다시 허용 할 수 있습니다." 713 | }, 714 | "updatedisablemessage": { 715 | "description": "Update notifications disabled", 716 | "message": "업데이트 알림이 사용 중지 됨" 717 | }, 718 | "updatenotify": { 719 | "description": "Show Changelog on Update:", 720 | "message": "업데이트 변경 내용 표시 :" 721 | }, 722 | "unwanted": { 723 | "description": "Unwanted", 724 | "message": "불필요" 725 | }, 726 | "updatenotifydesc": { 727 | "description": "show changelog page when ScriptSafe is updated", 728 | "message": "ScriptSafe가 업데이트 될 때 업데이트 내역 페이지를 표시" 729 | }, 730 | "url": { 731 | "description": "Domain", 732 | "message": "도메인" 733 | }, 734 | "urldesc": { 735 | "description": "Enter a domain or expression (click 'Help' for more info)", 736 | "message": "도메인 또는 수식을 입력합니다. (자세한 내용은 '도움말'을 클릭하세요)" 737 | }, 738 | "useragentspoof": { 739 | "description": "User-Agent Spoof:", 740 | "message": "가짜 User-Agent :" 741 | }, 742 | "useragentspoofdesc": { 743 | "description": "spoofs your user-agent (browser and OS)", 744 | "message": "User-Agent (브라우저와 OS)를 속입니다." 745 | }, 746 | "userref": { 747 | "description": "Enter an address to set as your referrer value for all sites", 748 | "message": "모든 사이트의 referrer 값 설정 주소를 입력하세요" 749 | }, 750 | "utm": { 751 | "description": "Remove Google Analytics (UTM) Tracking:", 752 | "message": "Google 웹 로그 분석 (UTM) 추적 삭제 :" 753 | }, 754 | "utmdesc": { 755 | "description": "remove Google Analytics (UTM) tracking tokens", 756 | "message": "Google 웹 로그 분석 (UTM)의 추적 토큰을 삭제합니다." 757 | }, 758 | "webbugs": { 759 | "description": "Remove Webbugs:", 760 | "message": "Webbugs 삭제 :" 761 | }, 762 | "webbugsdesc": { 763 | "description": "remove invisible third-party elements", 764 | "message": "눈에 보이지 않는 제 3자 요소를 제거" 765 | }, 766 | "webgl": { 767 | "description": "Block WebGL Fingerprinting:", 768 | "message": "WebGL Fingerprinting 차단 :" 769 | }, 770 | "webgldesc": { 771 | "description": "prevent fingerprinting via the WebGL API", 772 | "message": "WebGL API를 통한 fingerprinting을 방지합니다." 773 | }, 774 | "webrtcdevice": { 775 | "description": "Block Device Enumeration:", 776 | "message": "Device Enumeration 차단 :" 777 | }, 778 | "webrtcdevicedesc": { 779 | "description": "prevent having hardware devices detected via the WebRTC API", 780 | "message": "WebRTC API를 통한 하드웨어 장치 감지를 방지합니다" 781 | }, 782 | "webrtc": { 783 | "description": "WebRTC Protection:", 784 | "message": "WebRTC 보호 :" 785 | }, 786 | "webrtcdesc": { 787 | "description": "prevent IP address leakage", 788 | "message": "IP 주소 누출을 방지" 789 | }, 790 | "webvr": { 791 | "description": "Block WebVR Enumeration:", 792 | "message": "WebVR Enumeration 차단 :" 793 | }, 794 | "webvrdesc": { 795 | "description": "prevent having devices detected via the WebVR API", 796 | "message": "WebVR API를 통한 장치 감지를 방지합니다" 797 | }, 798 | "blackbind": { 799 | "description": "+ Blacklist", 800 | "message": "+ 블랙리스트" 801 | }, 802 | "whitebind": { 803 | "description": "+ Whitelist", 804 | "message": "+ 화이트리스트" 805 | }, 806 | "blacklist": { 807 | "description": "Blacklist", 808 | "message": "블랙리스트" 809 | }, 810 | "whitelist": { 811 | "description": "Whitelist", 812 | "message": "화이트리스트" 813 | }, 814 | "blacklisted": { 815 | "description": "Blacklisted", 816 | "message": "블랙리스트에 등록 됨" 817 | }, 818 | "whitelisted": { 819 | "description": "Whitelisted", 820 | "message": "화이트리스트에 등록 됨" 821 | }, 822 | "blacklistlow": { 823 | "description": "blacklist", 824 | "message": "블랙리스트" 825 | }, 826 | "whitelistlow": { 827 | "description": "whitelist", 828 | "message": "화이트리스트" 829 | }, 830 | "blacklistmove": { 831 | "description": "Move to Blacklist", 832 | "message": "블랙리스트로 이동" 833 | }, 834 | "whitelistmove": { 835 | "description": "Move to Whitelist", 836 | "message": "화이트리스트로 이동" 837 | }, 838 | "whitelistblacklist": { 839 | "description": "Whitelist / Blacklist", 840 | "message": "화이트리스트 / 블랙리스트" 841 | }, 842 | "xml": { 843 | "description": "XML HTTP Request Handling:", 844 | "message": "XML HTTP 요청 처리 :" 845 | }, 846 | "xmlall": { 847 | "description": "Control All Requests", 848 | "message": "모든 요청을 제어" 849 | }, 850 | "xmlcross": { 851 | "description": "Control Cross-Domain Requests (allow Same-Domain)", 852 | "message": "Cross-Domain 요청 제어 (동일한 도메인 허용)" 853 | }, 854 | "xmldesc": { 855 | "description": "control XML HTTP Requests", 856 | "message": "XML HTTP 요청을 제어합니다." 857 | } 858 | } -------------------------------------------------------------------------------- /_locales/zh_CN/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appdescription": { 3 | "description": "Regain control of the web and surf more securely.", 4 | "message": "让您的上网更安全" 5 | }, 6 | "alldomains": { 7 | "description": "On All Domains", 8 | "message": "对所有域名有效" 9 | }, 10 | "allow": { 11 | "description": "Allow", 12 | "message": "允许" 13 | }, 14 | "alloweditems": { 15 | "description": "Allowed Items", 16 | "message": "已允许项目" 17 | }, 18 | "blockeditems": { 19 | "description": "Blocked Items", 20 | "message": "已阻挡项目" 21 | }, 22 | "allowallblocked": { 23 | "description": "Allow All Blocked For Session", 24 | "message": "在此会话允许所有已阻挡的项目" 25 | }, 26 | "annoyances": { 27 | "description": "Block Unwanted Content:", 28 | "message": "反广告及反跟踪列表:" 29 | }, 30 | "annoyancesdesc": { 31 | "description": "remove unwanted content from known ad / malware domains; domains gathered from MVPS HOSTS, hpHOSTS (ad / tracking servers), Peter Lowe's HOSTS Project, MalwareDomainList.com", 32 | "message": "从以下HOSTS聚集网站导入反广告及反跟踪列表MVPS HOSTS hpHOSTS (ad / tracking servers) Peter Lowe's HOSTS Project, MalwareDomainList.com" 33 | }, 34 | "annoyancesmode": { 35 | "description": "Unwanted Content Mode:", 36 | "message": "拦截模式:" 37 | }, 38 | "annoyancesmodedesc": { 39 | "description": "Relaxed = whitelisted domains will not be blocked; Strict = domains in the unwanted domain list will be blocked even if whitelisted", 40 | "message": "一般模式=允许白名单里的域名;严格模式=阻挡白名单里的域名" 41 | }, 42 | "antisocialpopup": { 43 | "description": "Antisocial", 44 | "message": "清净模式" 45 | }, 46 | "antisocial": { 47 | "description": "Antisocial Mode:", 48 | "message": "清净模式:" 49 | }, 50 | "antisocialdesc": { 51 | "description": "always remove social widgets/buttons, even if whitelisted", 52 | "message": "移除白名单里的社交网站小部件" 53 | }, 54 | "antisocialdesc2": { 55 | "description": "For more comprehensive blocking, check out Privacy Badger, Disconnect, Blur, and/or uBlock Origin with all of the subscription lists on the Fanboy site", 56 | "message": "想得到更好的效果,可使用以下插件Privacy Badger, Disconnect, Blur, uBlock Origin 并订阅Fanboy的列表" 57 | }, 58 | "audioblock": { 59 | "description": "Block Audio Fingerprinting:", 60 | "message": "不允许通过音频API接口收集用户信息:" 61 | }, 62 | "audioblockdesc": { 63 | "description": "prevent fingerprinting via the AudioContext API", 64 | "message": "禁止调用AudioContext API" 65 | }, 66 | "battery": { 67 | "description": "Block Battery Fingerprinting:", 68 | "message": "不允许通过电池API接口收集用户信息:" 69 | }, 70 | "batterydesc": { 71 | "description": "prevent fingerprinting via the Battery API", 72 | "message": "禁止调用Battery API" 73 | }, 74 | "behavior": { 75 | "description": "Behaviour Settings", 76 | "message": "行为设置" 77 | }, 78 | "blockrec": { 79 | "description": "Block (recommended)", 80 | "message": "不允许加载脚本(推荐)" 81 | }, 82 | "block": { 83 | "description": "Block", 84 | "message": "阻挡" 85 | }, 86 | "blocked": { 87 | "description": "Blocked", 88 | "message": "已阻挡" 89 | }, 90 | "blockallallowed": { 91 | "description": "Block All Allowed For Session", 92 | "message": "在此会话阻挡所有已允许的项目" 93 | }, 94 | "bluetooth": { 95 | "description": "Block Bluetooth Enumeration:", 96 | "message": "不允许Bluetooth设备:" 97 | }, 98 | "bluetoothdesc": { 99 | "description": "prevent having hardware devices detected via the Bluetooth API", 100 | "message": "禁止调用Bluetooth API以检测硬件设备" 101 | }, 102 | "bulkimport": { 103 | "description": "bulk import", 104 | "message": "批量导入" 105 | }, 106 | "bulkbtn": { 107 | "description": "Import to List", 108 | "message": "导入到列表" 109 | }, 110 | "bulkimportcap": { 111 | "description": "Bulk Import", 112 | "message": "批量导入" 113 | }, 114 | "bulkimportcapdesc": { 115 | "description": "Copy and paste domains into the box below. Each domain should be on a separate line.", 116 | "message": "复制和粘贴域名到下面的框中,一行只允许输入一个域名。" 117 | }, 118 | "canvas": { 119 | "description": "Canvas Fingerprint Protection:", 120 | "message": "Canvas元素识别保护:" 121 | }, 122 | "cannotprocess": { 123 | "description": "ScriptSafe cannot process this page.

Please try visiting a website.", 124 | "message": "本页面不启用ScriptSafe。

请访问别的网站。" 125 | }, 126 | "canvasblank": { 127 | "description": "Blank Readout", 128 | "message": "清空Canvas内容" 129 | }, 130 | "canvasrandom": { 131 | "description": "Random Readout", 132 | "message": "清空Canvas内容并使用随机尺寸" 133 | }, 134 | "canvasblock": { 135 | "description": "Completely Block Readout", 136 | "message": "不提供内容及尺寸" 137 | }, 138 | "canvasdesc": { 139 | "description": "protect against fingerprinting attempts through <canvas> elements", 140 | "message": "不允许通过Canvas元素收集用户信息" 141 | }, 142 | "canvasfont": { 143 | "description": "Block Canvas Font Access:", 144 | "message": "不允许通过Canvas元素读取用户字体:" 145 | }, 146 | "canvasfontdesc": { 147 | "description": "prevent system fonts from being enumerated through <canvas> elements. May interfere with Google Docs.", 148 | "message": "不允许通过Canvas元素列举用户系统字体,可能与Google Docs有冲突。" 149 | }, 150 | "classicoptions": { 151 | "description": "Classic Options Mode:", 152 | "message": "传统模式:" 153 | }, 154 | "classicoptionsdesc": { 155 | "description": "if ticked, closes tab options everytime an option is clicked", 156 | "message": "如启用,弹出式选项卡会在每次点击后关闭;如不启用,则需手动关闭弹出式选项卡" 157 | }, 158 | "clear": { 159 | "description": "Clear", 160 | "message": "清除" 161 | }, 162 | "clearlow": { 163 | "description": "clear", 164 | "message": "清除" 165 | }, 166 | "clientrects": { 167 | "description": "Block Client Rectangles:", 168 | "message": "不允许通过Rectangles元素收集用户信息:" 169 | }, 170 | "clientrectsdesc": { 171 | "description": "prevent fingerprinting through calculating element rectangles. May interfere with some dropdowns.", 172 | "message": "防止通过点算Rectangles元素进行识别,可能会与某些下拉菜单有冲突。" 173 | }, 174 | "clipboard": { 175 | "description": "Prevent Clipboard Interference:", 176 | "message": "破解网页禁止复制粘贴的脚本:" 177 | }, 178 | "clipboarddesc": { 179 | "description": "prevent pages from interfering with clipboard actions", 180 | "message": "" 181 | }, 182 | "close": { 183 | "description": "Close", 184 | "message": "关闭" 185 | }, 186 | "cookies": { 187 | "description": "Block Unwanted Cookies:", 188 | "message": "拦截跟踪用户的Cookies:" 189 | }, 190 | "cookiesdesc": { 191 | "description": "blocks cookies from known ad / malware domains; below mode applies to this as well", 192 | "message": "从聚集网站导入反广告及反跟踪列表;下面几个选项也是从同样的聚集网站取得列表" 193 | }, 194 | "custom": { 195 | "description": "Custom", 196 | "message": "自定义" 197 | }, 198 | "default": { 199 | "description": "Default", 200 | "message": "默认" 201 | }, 202 | "default_public_interface_only": { 203 | "description": "Protect Local IP", 204 | "message": "保护本地IP" 205 | }, 206 | "deny": { 207 | "description": "Deny", 208 | "message": "拒绝" 209 | }, 210 | "disable_non_proxied_udp": { 211 | "description": "Protect Local and Public IPs", 212 | "message": "保护本地和公网IP" 213 | }, 214 | "disable": { 215 | "description": "Disable", 216 | "message": "禁用" 217 | }, 218 | "disabled": { 219 | "description": "disabled", 220 | "message": "未启用" 221 | }, 222 | "disabledcap": { 223 | "description": "Disabled", 224 | "message": "未启用" 225 | }, 226 | "disabledsync": { 227 | "description": "Syncing is disabled.\r\nFeel free to go to the Options page at any time to sync your settings (make a backup of your settings if necessary).", 228 | "message": "已禁用同步功能。\r\n可到选项页面启用并同步你的设置(为以防万一,可提前备份您的设置)。" 229 | }, 230 | "disableremove": { 231 | "description": "Disable and Remove:", 232 | "message": "禁用并删除:" 233 | }, 234 | "distrust": { 235 | "description": "Distrust", 236 | "message": "不信任" 237 | }, 238 | "distrustlow": { 239 | "description": "distrust", 240 | "message": "不信任" 241 | }, 242 | "domain": { 243 | "description": "Same Domain", 244 | "message": "同一个域名" 245 | }, 246 | "domainsort": { 247 | "description": "Sort by Domain:", 248 | "message": "按域名排序:" 249 | }, 250 | "domaininfo": { 251 | "description": "Help", 252 | "message": "帮助" 253 | }, 254 | "domaininvalid": { 255 | "description": "Invalid domain/address", 256 | "message": "无效的域名或地址" 257 | }, 258 | "domaininvalid2": { 259 | "description": "The domain or address must contain some letters/numbers", 260 | "message": "该域名或地址必须包含字母或数字" 261 | }, 262 | "domaininvalid3": { 263 | "description": "Domain cannot be added as it is a provider of unwanted content (see Block Unwanted Content and/or Antisocial Mode)", 264 | "message": "不能添加此域名,因为它与“阻止不需要的内容”和“清净模式”有冲突" 265 | }, 266 | "domainsortdesc": { 267 | "description": "sorts URL lists by domains on this page and in the panel", 268 | "message": "将网址列表按域名排序" 269 | }, 270 | "domaintip": { 271 | "description": "Tip: press CTRL+F to search the lists", 272 | "message": "提示:按Ctrl + F搜索列表" 273 | }, 274 | "dontshowpage": { 275 | "description": "Don't Show This Page Again", 276 | "message": "不要再显示此页" 277 | }, 278 | "enable": { 279 | "description": "Enable:", 280 | "message": "启用:" 281 | }, 282 | "enabled": { 283 | "description": "enabled", 284 | "message": "已启用" 285 | }, 286 | "enabless": { 287 | "description": "Enable ScriptSafe", 288 | "message": "启用S​​criptSafe" 289 | }, 290 | "enablesyncing": { 291 | "description": "Enable Syncing:", 292 | "message": "启用同步:" 293 | }, 294 | "export": { 295 | "description": "Export", 296 | "message": "导出" 297 | }, 298 | "exportsuccess": { 299 | "description": "Your settings have been successfully synced!", 300 | "message": "您的设置已成功同步!" 301 | }, 302 | "exportsuccesstitle": { 303 | "description": "Settings Synced!", 304 | "message": "设置已同步!" 305 | }, 306 | "fingerprint": { 307 | "description": "Fingerprint Protection", 308 | "message": "用户识别与跟踪" 309 | }, 310 | "fingerprintdesc": { 311 | "description": "Fingerprint Protection (may break sites)", 312 | "message": "防止用户信息被收集和识别(可能会影响您浏览的网站的部分功能)" 313 | }, 314 | "firstsync": { 315 | "description": "It appears you haven't synced your settings to your Google account yet.\r\nScriptSafe is about to sync your current settings to your Google account.\r\nClick on 'OK' if you want to continue.\r\nIf not, click 'Cancel', and on the other device with your preferred settings, update ScriptSafe and click on OK when you are presented with this message.", 316 | "message": "您的设置还没有同步到Google帐户。\r\nScriptSafe正准备把当前设置同步到您的谷歌帐户。\r\n如果同意,请点击“确认”。\r\n如果不同意,请单击“取消”。您也可以在其它设备上通过此对话框同步您的设置。" 317 | }, 318 | "forcesyncexport": { 319 | "description": "Do you want to sync your current settings to your Google Account?\r\nNote: please do not press this frequently; there is a limit of 10 per minute and 1,000 per hour.", 320 | "message": "需要同步当前设置到您的谷歌帐户吗?\r\n注意:请不要频繁地同步(每分钟限10次和每小时限1000次)。" 321 | }, 322 | "forcesyncimport": { 323 | "description": "Do you want to import the synced settings from your Google Account to this device?", 324 | "message": "需要从您的谷歌帐户导入设置到此设备吗?" 325 | }, 326 | "forever": { 327 | "description": "Forever", 328 | "message": "Forever" 329 | }, 330 | "hotkeys": { 331 | "description": "Hotkeys:", 332 | "message": "热键:" 333 | }, 334 | "generalsettings": { 335 | "description": "General Settings", 336 | "message": "一般设置" 337 | }, 338 | "gamepad": { 339 | "description": "Block Gamepad Enumeration:", 340 | "message": "不允许列举连接到系统的手柄:" 341 | }, 342 | "gamepaddesc": { 343 | "description": "prevent having devices detected via the Gamepad API", 344 | "message": "禁止调用手柄API" 345 | }, 346 | "availablehotkeys": { 347 | "description": "Available hotkey actions", 348 | "message": "已设置的热键" 349 | }, 350 | "hotkeystoggle": { 351 | "description": "Temporarily allow/block all resources for a current tab", 352 | "message": "暂时允许/阻挡当前标签页的所有脚本" 353 | }, 354 | "hotkeysremove": { 355 | "description": "Remove temporary permissions for a current tab", 356 | "message": "取消当前标签页的临时权限" 357 | }, 358 | "hotkeysremoveall": { 359 | "description": "Remove all temporary permissions", 360 | "message": "取消所有临时权限" 361 | }, 362 | "hotkeyspage": { 363 | "description": "Configure ScriptSafe hotkeys", 364 | "message": "设置ScriptSafe热键" 365 | }, 366 | "hotkeysinst": { 367 | "description": "click on Keyboard Shortcuts", 368 | "message": "点击键盘快捷键" 369 | }, 370 | "listallsettings": { 371 | "description": "List All Settings", 372 | "message": "列出所有设置" 373 | }, 374 | "ignoredallow": { 375 | "description": "Ignored Allow", 376 | "message": "忽略已允许的" 377 | }, 378 | "importsuccess": { 379 | "description": "The latest settings have been successfully downloaded!", 380 | "message": "已成功下载最新的设置!" 381 | }, 382 | "importsuccesstitle": { 383 | "description": "Settings Downloaded!", 384 | "message": "设置已下载!" 385 | }, 386 | "groupallsettings": { 387 | "description": "Group All Settings", 388 | "message": "设置分类显示" 389 | }, 390 | "hashchecking": { 391 | "description": "Remove Possible Hash Tracking:", 392 | "message": "移除Tracking Tokens的哈希值:" 393 | }, 394 | "hashcheckingdesc": { 395 | "description": "remove possible tracking tokens passed using hash, where there is an attribute and value (e.g. #xtor=RSS-1)", 396 | "message": "Tracking Tokens的属性和值可用于跟踪用户(例如#xtor=RSS-1)" 397 | }, 398 | "hide": { 399 | "description": "Hide", 400 | "message": "隐藏" 401 | }, 402 | "import": { 403 | "description": "Import", 404 | "message": "导入" 405 | }, 406 | "importexport": { 407 | "description": "Import / Restore Settings", 408 | "message": "导入/导出设置" 409 | }, 410 | "importsuccessoptions": { 411 | "description": "Settings imported successfully", 412 | "message": "成功导入设置" 413 | }, 414 | "importsuccesscond": { 415 | "description": "Settings imported successfully, except the following (empty value or unrecognized name):", 416 | "message": "成功导入设置,以下除外(空值或无法识别的名称):" 417 | }, 418 | "importsuccesssync": { 419 | "description": "Settings imported successfully and syncing in 10 seconds", 420 | "message": "成功导入设置并将在10秒内同步" 421 | }, 422 | "interval": { 423 | "description": "Every x Minutes", 424 | "message": "Every x Minutes" 425 | }, 426 | "keyboard": { 427 | "description": "Reduce Keyboard Fingerprinting (for advanced users):", 428 | "message": "减少通过键盘识别用户的可能性(高级用户):" 429 | }, 430 | "keyboarddesc": { 431 | "description": "make keypress timings more random to increase anonymity (NOTE: adds a random delay between keypresses; disable this setting if unacceptable)", 432 | "message": "可以使按键时间显得更随机以提高匿名性(注:在每次按键之间插入随机延迟;如对效果不满意,请禁用此设置)" 433 | }, 434 | "browserplugins": { 435 | "description": "Block Browser Plugin Enumeration:", 436 | "message": "Block Browser Plugin Enumeration:" 437 | }, 438 | "browserpluginsdesc": { 439 | "description": "prevent sites from reading your browser plugin details", 440 | "message": "prevent sites from reading your browser plugin details" 441 | }, 442 | "linktarget": { 443 | "description": "Page Link Opening Behaviour:", 444 | "message": "设置新链接的打开方式:" 445 | }, 446 | "linktargetdesc": { 447 | "description": "modifies how all links are opened", 448 | "message": "强制新链接在同一标签页或新标签页打开" 449 | }, 450 | "loosesamedomain": { 451 | "description": "Loose - allow same domain and subdomains", 452 | "message": "一般模式 - 对相同的域名和子域名都有效" 453 | }, 454 | "minutes": { 455 | "description": "Minutes", 456 | "message": "Minutes" 457 | }, 458 | "mode": { 459 | "description": "Default Mode", 460 | "message": "默认模式" 461 | }, 462 | "newtab": { 463 | "description": "New Tab", 464 | "message": "新标签" 465 | }, 466 | "noexternal": { 467 | "description": "This tab has loaded no external resources", 468 | "message": "此标签没有加载外部资源" 469 | }, 470 | "notfiltered": { 471 | "description": "Not filtered", 472 | "message": "内容未经过滤的" 473 | }, 474 | "nowebrtc": { 475 | "description": "This browser does not support WebRTC protection", 476 | "message": "该浏览器不支持WebRTC技术保护" 477 | }, 478 | "off": { 479 | "description": "-Off-", 480 | "message": "-未设置-" 481 | }, 482 | "onlyunwhitelisted": { 483 | "description": "Only on Unwhitelisted Domains", 484 | "message": "仅对黑名单域名有效" 485 | }, 486 | "options": { 487 | "description": "Options", 488 | "message": "选项" 489 | }, 490 | "paranoia": { 491 | "description": "Paranoia Mode:", 492 | "message": "超严格模式:" 493 | }, 494 | "paranoiadesc": { 495 | "description": "block allowed domains on unlisted domains", 496 | "message": "会影响白名单的域名" 497 | }, 498 | "pastesettings": { 499 | "description": "Paste in settings and try again", 500 | "message": "把设置粘贴后再试一次" 501 | }, 502 | "preservesamedomain": { 503 | "description": "Respect Same-Domain:", 504 | "message": "保留相同域名的网页元素:" 505 | }, 506 | "preservesamedomaindesc": { 507 | "description": "preserve same-domain elements", 508 | "message": "" 509 | }, 510 | "privacy": { 511 | "description": "Privacy Settings", 512 | "message": "隐私设置" 513 | }, 514 | "random": { 515 | "description": "Random", 516 | "message": "随机" 517 | }, 518 | "rating": { 519 | "description": "Show Rating Button:", 520 | "message": "显示WOT评分按钮:" 521 | }, 522 | "ratingbtn": { 523 | "description": "Rating", 524 | "message": "评分" 525 | }, 526 | "ratingdesc": { 527 | "description": "if ticked, adds rating button under domains in tab popup", 528 | "message": "勾选后可以通过点选网址前的放大镜图标对该网址进行WOT评分" 529 | }, 530 | "recentlyupdated": { 531 | "description": "ScriptSafe was recently updated/reloaded.

You will need to either refresh this tab, create a new tab, or restart your browser in order for ScriptSafe to work.", 532 | "message": "ScriptSafe最近曾被更新或被重新加载。

您可以通过刷新当前标签页、创建一个新标签页,或重新启动浏览器来重新激活ScriptSafe。" 533 | }, 534 | "referrer": { 535 | "description": "Block Click-Through Referrer:", 536 | "message": "不允许Click-Through Referrer:" 537 | }, 538 | "referrerdesc": { 539 | "description": "blocks referrer information when clicking on third-party links (note: setting this to On All Domains may cause issues (e.g. thumbnails in Tweetdeck))", 540 | "message": "点击第三方链接时禁止发送Referrer信息。注意:当设置为“对所有域名有效”时可能会出现问题(如TweetDeck的缩略图)" 541 | }, 542 | "referrerspoof": { 543 | "description": "Referrer Spoof:", 544 | "message": "Referrer伪装:" 545 | }, 546 | "referrerspoofdesc": { 547 | "description": "warning: if enabled, may break some sites (e.g. logging in)", 548 | "message": "警告:启用后可能影响所浏览的网站部分功能(如登录)" 549 | }, 550 | "refresh": { 551 | "description": "Auto-Refresh Page:", 552 | "message": "自动刷新页面:" 553 | }, 554 | "refreshdesc": { 555 | "description": "auto-refresh page after list change", 556 | "message": "黑白名单更改后自动刷新页面" 557 | }, 558 | "relaxed": { 559 | "description": "Relaxed", 560 | "message": "一般模式" 561 | }, 562 | "request": { 563 | "description": "Every Request", 564 | "message": "Every Request" 565 | }, 566 | "restoredefault": { 567 | "description": "Restore Default Settings", 568 | "message": "Restore Default Settings" 569 | }, 570 | "restoredefault2": { 571 | "description": "Restore Default Settings + Clear All Lists", 572 | "message": "Restore Default Settings + Clear All Lists" 573 | }, 574 | "restoredefaultconfirm": { 575 | "description": "Are you sure you want to restore the default settings? This will NOT clear your lists.", 576 | "message": "Are you sure you want to restore the default settings? This will NOT clear your lists." 577 | }, 578 | "restoredefaultconfirm2": { 579 | "description": "Are you sure you want to restore the default settings AND clear all of your lists?", 580 | "message": "Are you sure you want to restore the default settings AND clear all of your lists?" 581 | }, 582 | "revoketemp": { 583 | "description": "Revoke Page Temporary Permissions", 584 | "message": "撤销当前页的临时权限" 585 | }, 586 | "revoketempall": { 587 | "description": "Revoke All Temporary", 588 | "message": "撤消所有临时权限" 589 | }, 590 | "same": { 591 | "description": "Same Document", 592 | "message": "同一页面" 593 | }, 594 | "sametab": { 595 | "description": "Same Tab", 596 | "message": "同一标签页" 597 | }, 598 | "save": { 599 | "description": "Save", 600 | "message": "保存" 601 | }, 602 | "savetxt": { 603 | "description": "Save as Text File", 604 | "message": "另存为文本文件" 605 | }, 606 | "sections": { 607 | "description": "Sections", 608 | "message": "设置分类" 609 | }, 610 | "settingsall": { 611 | "description": "select all", 612 | "message": "全选" 613 | }, 614 | "settingsimport": { 615 | "description": "Copy and paste the settings you want to import into ScriptSafe into this box then click on the Import button.", 616 | "message": "可以把之前导出的ScriptSafe设置粘贴到此处,然后点击导入按钮即可。" 617 | }, 618 | "settingssave": { 619 | "description": "Settings saved", 620 | "message": "设置已保存" 621 | }, 622 | "settingssavesync": { 623 | "description": "Settings saved and syncing in 10 seconds", 624 | "message": "设置已保存并将在10秒内同步" 625 | }, 626 | "showcontext": { 627 | "description": "Show in Context Menu:", 628 | "message": "在右键菜单显示:" 629 | }, 630 | "ssdisabled": { 631 | "description": "ScriptSafe is disabled", 632 | "message": "已禁用ScriptSafe" 633 | }, 634 | "strict": { 635 | "description": "Strict", 636 | "message": "严格模式" 637 | }, 638 | "strictsamedomain": { 639 | "description": "Strict - allow same domain only", 640 | "message": "严格模式 - 仅对相同域名的网页元素有效" 641 | }, 642 | "support": { 643 | "description": "To support development, click the heart :)", 644 | "message": "点击心形图案进行捐助 :)" 645 | }, 646 | "syncdisable": { 647 | "description": "You have enabled auto-syncing. In order to prevent erasing your previously synced data (if any), please click on Sync Settings FROM Google Account.", 648 | "message": "已启用自动同步。为了防止之前同步的数据被删除,请点击从谷歌帐户导入。" 649 | }, 650 | "syncimport": { 651 | "description": "Sync Settings FROM Google Account", 652 | "message": "从谷歌帐户导入" 653 | }, 654 | "syncexport": { 655 | "description": "Sync Settings TO Google Account", 656 | "message": "导出到谷歌帐户" 657 | }, 658 | "syncdetect": { 659 | "description": "ScriptSafe has detected that you have settings synced on your Google account!\r\nClick on 'OK' if you want to import the settings from your Google Account.", 660 | "message": "如需从您的谷歌帐户导入之前同步的设置,请点击“OK”。" 661 | }, 662 | "syncdisabled": { 663 | "description": "Syncing has been disabled to prevent overwriting your already synced data.\r\nFeel free to go to the Options page at any time to sync your settings (make a backup of your settings if necessary).", 664 | "message": "为了防止已同步的数据被覆盖,已禁用同步功能。\r\n可到选项页面启用并同步你的设置(为以防万一,可提前备份您的设置)。" 665 | }, 666 | "syncfromnotify": { 667 | "description": "Show Import Sync Notification:", 668 | "message": "显示“网络同步导入”的消息通知:" 669 | }, 670 | "syncfromnotifydesc": { 671 | "description": "show popup when settings synced from your Google Account", 672 | "message": "您的谷歌帐户同步设置时弹出消息通知" 673 | }, 674 | "syncnotify": { 675 | "description": "Show Sync Notification:", 676 | "message": "显示“网络同步导出”的消息通知:" 677 | }, 678 | "syncnotifydesc": { 679 | "description": "show popup when settings synced to your Google Account", 680 | "message": "把设置同步您的谷歌帐户时弹出消息通知" 681 | }, 682 | "syncnotsupported": { 683 | "description": "Your current version of Google Chrome does not support settings syncing. Please try updating your Chrome version and try again.", 684 | "message": "您当前的Chrome浏览器版本不支持设置同步。请尝试更新您的Chrome浏览器版本,然后再试一次。" 685 | }, 686 | "temp": { 687 | "description": "Temporary", 688 | "message": "临时允许" 689 | }, 690 | "timezone": { 691 | "description": "Spoof Timezone:", 692 | "message": "时区伪装:" 693 | }, 694 | "timezonedesc": { 695 | "description": "spoof or randomize your timezone. NOTE: if enabled, it may interfere with replying to emails in Gmail.", 696 | "message": "可以伪装成您希望的时区或随机设定一个时区。注意:启用该选项后可能会与Gmail回复邮件出现冲突。" 697 | }, 698 | "trust": { 699 | "description": "Trust", 700 | "message": "信任" 701 | }, 702 | "trustlow": { 703 | "description": "trust", 704 | "message": "信任" 705 | }, 706 | "uaspoofallow": { 707 | "description": "Apply to whitelisted domains as well", 708 | "message": "也适用于已允许的域名" 709 | }, 710 | "updatedisable": { 711 | "description": "Are you sure you want to disable any future update notifications like this one from appearing?\r\nYou can always re-allow update notifications by going to the ScriptSafe Options page and ticking the box beside Show Update Popup.", 712 | "message": "确定要禁用更新消息通知?\r\n禁用后可在ScriptSafe选项页重新启用更新通知。" 713 | }, 714 | "updatedisablemessage": { 715 | "description": "Update notifications disabled", 716 | "message": "禁用更新消息通知" 717 | }, 718 | "updatenotify": { 719 | "description": "Show Changelog on Update:", 720 | "message": "显示更新日志:" 721 | }, 722 | "unwanted": { 723 | "description": "Unwanted", 724 | "message": "广告/跟踪" 725 | }, 726 | "updatenotifydesc": { 727 | "description": "show changelog page when ScriptSafe is updated", 728 | "message": "成功更新ScriptSafe后显示更新日志" 729 | }, 730 | "url": { 731 | "description": "Domain", 732 | "message": "域名" 733 | }, 734 | "urldesc": { 735 | "description": "Enter a domain or expression (click 'Help' for more info)", 736 | "message": "在此输入域名或表达式(更多资讯请点击“帮助”)" 737 | }, 738 | "useragentspoof": { 739 | "description": "User-Agent Spoof:", 740 | "message": " User-Agent伪装" 741 | }, 742 | "useragentspoofdesc": { 743 | "description": "spoofs your user-agent (browser and OS)", 744 | "message": "用于伪装浏览器和操作系统的User-Agent" 745 | }, 746 | "userref": { 747 | "description": "Enter an address to set as your referrer value for all sites", 748 | "message": "把所有网站的Referrer值都设置为这个网址" 749 | }, 750 | "utm": { 751 | "description": "Remove Google Analytics (UTM) Tracking:", 752 | "message": "移除谷歌分析(UTM)的追踪:" 753 | }, 754 | "utmdesc": { 755 | "description": "remove Google Analytics (UTM) tracking tokens", 756 | "message": "移除谷歌分析(UTM)的Tracking Tokens" 757 | }, 758 | "webbugs": { 759 | "description": "Remove Webbugs:", 760 | "message": "移除Webbugs:" 761 | }, 762 | "webbugsdesc": { 763 | "description": "remove invisible third-party elements", 764 | "message": "移除隐藏的第三方元素" 765 | }, 766 | "webgl": { 767 | "description": "Block WebGL Fingerprinting:", 768 | "message": "不允许通过WebGL收集用户信息:" 769 | }, 770 | "webgldesc": { 771 | "description": "prevent fingerprinting via the WebGL API", 772 | "message": "禁止调用WebGL API" 773 | }, 774 | "webrtcdevice": { 775 | "description": "Block Device Enumeration:", 776 | "message": "不允许列举设备:" 777 | }, 778 | "webrtcdevicedesc": { 779 | "description": "prevent having hardware devices detected via the WebRTC API", 780 | "message": "禁止调用WebRTC API以检测硬件设备" 781 | }, 782 | "webrtc": { 783 | "description": "WebRTC Protection:", 784 | "message": "WebRTC泄漏保护:" 785 | }, 786 | "webrtcdesc": { 787 | "description": "prevent IP address leakage", 788 | "message": "防止IP地址泄漏" 789 | }, 790 | "webvr": { 791 | "description": "Block WebVR Enumeration:", 792 | "message": "不允许WebVR设备:" 793 | }, 794 | "webvrdesc": { 795 | "description": "prevent having devices detected via the WebVR API", 796 | "message": "禁止调用WebVR API以检测硬件设备" 797 | }, 798 | "blackbind": { 799 | "description": "+ Blacklist", 800 | "message": "添加到黑名单" 801 | }, 802 | "whitebind": { 803 | "description": "+ Whitelist", 804 | "message": "添加到白名单" 805 | }, 806 | "blacklist": { 807 | "description": "Blacklist", 808 | "message": "黑名单" 809 | }, 810 | "whitelist": { 811 | "description": "Whitelist", 812 | "message": "白名单" 813 | }, 814 | "blacklisted": { 815 | "description": "Blacklisted", 816 | "message": "被阻挡名单" 817 | }, 818 | "whitelisted": { 819 | "description": "Whitelisted", 820 | "message": "被允许名单" 821 | }, 822 | "blacklistlow": { 823 | "description": "blacklist", 824 | "message": "黑名单" 825 | }, 826 | "whitelistlow": { 827 | "description": "whitelist", 828 | "message": "白名单" 829 | }, 830 | "blacklistmove": { 831 | "description": "Move to Blacklist", 832 | "message": "移入黑名单" 833 | }, 834 | "whitelistmove": { 835 | "description": "Move to Whitelist", 836 | "message": "移入白名单" 837 | }, 838 | "whitelistblacklist": { 839 | "description": "Whitelist / Blacklist", 840 | "message": "白名单/黑名单" 841 | }, 842 | "xml": { 843 | "description": "XML HTTP Request Handling:", 844 | "message": "XML HTTP请求处理:" 845 | }, 846 | "xmlall": { 847 | "description": "Control All Requests", 848 | "message": "控制所有请求" 849 | }, 850 | "xmlcross": { 851 | "description": "Control Cross-Domain Requests (allow Same-Domain)", 852 | "message": "控制跨域名请求(允许同域名)" 853 | }, 854 | "xmldesc": { 855 | "description": "control XML HTTP Requests", 856 | "message": "控制XML HTTP请求" 857 | } 858 | } 859 | 860 | -------------------------------------------------------------------------------- /_locales/zh_TW/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appdescription": { 3 | "description": "Regain control of the web and surf more securely.", 4 | "message": "重掌網頁的控制權和更安全地瀏覽。" 5 | }, 6 | "alldomains": { 7 | "description": "On All Domains", 8 | "message": "在所有網域" 9 | }, 10 | "allow": { 11 | "description": "Allow", 12 | "message": "准許" 13 | }, 14 | "alloweditems": { 15 | "description": "Allowed Items", 16 | "message": "已准許的項目" 17 | }, 18 | "blockeditems": { 19 | "description": "Blocked Items", 20 | "message": "已封鎖的項目" 21 | }, 22 | "allowallblocked": { 23 | "description": "Allow All Blocked For Session", 24 | "message": "為此段准許所有項目" 25 | }, 26 | "annoyances": { 27 | "description": "Block Unwanted Content:", 28 | "message": "封鎖不需要的內容:" 29 | }, 30 | "annoyancesdesc": { 31 | "description": "remove unwanted content from known ad / malware domains; domains gathered from MVPS HOSTS, hpHOSTS (ad / tracking servers), Peter Lowe's HOSTS Project, MalwareDomainList.com", 32 | "message": "從以下類別移除不需要的內容:已知的廣告或有毒的網域、從MVPS HOSTS及hpHOSTS(廣告或追蹤伺服器)收集的網域、Peter Lowe的HOSTS習作及MalwareDomainList.com" 33 | }, 34 | "annoyancesmode": { 35 | "description": "Unwanted Content Mode:", 36 | "message": "不需要的內容模式:" 37 | }, 38 | "annoyancesmodedesc": { 39 | "description": "Relaxed = whitelisted domains will not be blocked; Strict = domains in the unwanted domain list will be blocked even if whitelisted", 40 | "message": "寬鬆 = 列入允許名單的網域不會被封鎖; 嚴格 = 列入「不需要」名單的網域,就算列入允許名單也會被封鎖" 41 | }, 42 | "antisocialpopup": { 43 | "description": "Antisocial", 44 | "message": "反社交網絡" 45 | }, 46 | "antisocial": { 47 | "description": "Antisocial Mode:", 48 | "message": "反社交網絡模式:" 49 | }, 50 | "antisocialdesc": { 51 | "description": "always remove social widgets/buttons, even if whitelisted", 52 | "message": "永遠移除社交小工具或按鈕,即使已經列入允許名單" 53 | }, 54 | "antisocialdesc2": { 55 | "description": "For more comprehensive blocking, check out Privacy Badger, Disconnect, Blur, and/or uBlock Origin with all of the subscription lists on the Fanboy site", 56 | "message": "如要更全面地封鎖,請尋找Privacy Badger, Disconnect, Blur, and/or uBlock Origin (所有在 Fanboy 網站的訂閱名單)" 57 | }, 58 | "audioblock": { 59 | "description": "Block Audio Fingerprinting:", 60 | "message": "阻擋音頻指紋識別:" 61 | }, 62 | "audioblockdesc": { 63 | "description": "prevent fingerprinting via the AudioContext API", 64 | "message": "防止經由AudioContext API的指紋識別" 65 | }, 66 | "battery": { 67 | "description": "Block Battery Fingerprinting:", 68 | "message": "阻擋電池指紋識別:" 69 | }, 70 | "batterydesc": { 71 | "description": "prevent fingerprinting via the Battery API", 72 | "message": "防止經由電池API的指紋識別" 73 | }, 74 | "behavior": { 75 | "description": "Behaviour Settings", 76 | "message": "行為設定" 77 | }, 78 | "blockrec": { 79 | "description": "Block (recommended)", 80 | "message": "封鎖(推薦)" 81 | }, 82 | "block": { 83 | "description": "Block", 84 | "message": "封鎖" 85 | }, 86 | "blocked": { 87 | "description": "Blocked", 88 | "message": "已封鎖" 89 | }, 90 | "blockallallowed": { 91 | "description": "Block All Allowed For Session", 92 | "message": "封鎖所有於此段允許的項目" 93 | }, 94 | "bluetooth": { 95 | "description": "Block Bluetooth Enumeration:", 96 | "message": "封鎖Bluetooth手柄計算:" 97 | }, 98 | "bluetoothdesc": { 99 | "description": "prevent having devices detected via the Bluetooth API", 100 | "message": "防止通過Bluetooth API檢測到裝置" 101 | }, 102 | "bulkimport": { 103 | "description": "bulk import", 104 | "message": "大量匯入" 105 | }, 106 | "bulkbtn": { 107 | "description": "Import to List", 108 | "message": "匯入到列表" 109 | }, 110 | "bulkimportcap": { 111 | "description": "Bulk Import", 112 | "message": "大量匯入" 113 | }, 114 | "bulkimportcapdesc": { 115 | "description": "Copy and paste domains into the box below. Each domain should be on a separate line.", 116 | "message": "複製和貼上網域到下面的空格。每個網域應該是獨立的一行。" 117 | }, 118 | "canvas": { 119 | "description": "Canvas Fingerprint Protection:", 120 | "message": "Canvas 的指紋保護:" 121 | }, 122 | "cannotprocess": { 123 | "description": "ScriptSafe cannot process this page. Please try visiting a website.", 124 | "message": "ScriptSafe無法處理此頁面。請嘗試訪問一個網站。" 125 | }, 126 | "canvasblank": { 127 | "description": "Blank Readout", 128 | "message": "空白讀出" 129 | }, 130 | "canvasrandom": { 131 | "description": "Random Readout", 132 | "message": "隨機讀出" 133 | }, 134 | "canvasblock": { 135 | "description": "Completely Block Readout", 136 | "message": "完全阻擋讀出" 137 | }, 138 | "canvasdesc": { 139 | "description": "protect against fingerprinting attempts through <canvas> elements", 140 | "message": "防止嘗試於<canvas>元素套取指紋" 141 | }, 142 | "canvasfont": { 143 | "description": "Block Canvas Font Access:", 144 | "message": "阻擋存取Canvas 字體:" 145 | }, 146 | "canvasfontdesc": { 147 | "description": "prevent system fonts from being enumerated through <canvas> elements. May interfere with Google Docs.", 148 | "message": "防止系統字體從<canvas>元素被列舉。可能干擾Google Document。" 149 | }, 150 | "classicoptions": { 151 | "description": "Classic Options Mode:", 152 | "message": "經典選項模式:" 153 | }, 154 | "classicoptionsdesc": { 155 | "description": "if ticked, closes tab options everytime an option is clicked", 156 | "message": "如果勾選,每次選項被點擊關便閉標籤選項" 157 | }, 158 | "clear": { 159 | "description": "Clear", 160 | "message": "清除" 161 | }, 162 | "clearlow": { 163 | "description": "clear", 164 | "message": "清除" 165 | }, 166 | "clientrects": { 167 | "description": "Block Client Rectangles:", 168 | "message": "封鎖瀏覽器用戶端的矩形座標:" 169 | }, 170 | "clientrectsdesc": { 171 | "description": "prevent fingerprinting through calculating element rectangles. May interfere with some dropdowns.", 172 | "message": "防止通過計算元素的矩形座標來套取指紋。可能干擾某些下拉表列。" 173 | }, 174 | "clipboard": { 175 | "description": "Prevent Clipboard Interference:", 176 | "message": "防止剪貼板干擾:" 177 | }, 178 | "clipboarddesc": { 179 | "description": "prevent pages from interfering with clipboard actions", 180 | "message": "防止網頁干擾剪貼板的動作" 181 | }, 182 | "close": { 183 | "description": "Close", 184 | "message": "關閉" 185 | }, 186 | "cookies": { 187 | "description": "Block Unwanted Cookies:", 188 | "message": "封鎖不需要的Cookies:" 189 | }, 190 | "cookiesdesc": { 191 | "description": "blocks cookies from known ad / malware domains; below mode applies to this as well", 192 | "message": "從已知廣告/惡意軟件的網域封鎖Cookies;以下模式均適用" 193 | }, 194 | "custom": { 195 | "description": "Custom", 196 | "message": "自訂" 197 | }, 198 | "default": { 199 | "description": "Default", 200 | "message": "預設" 201 | }, 202 | "default_public_interface_only": { 203 | "description": "Protect Local IP", 204 | "message": "保護本機IP" 205 | }, 206 | "deny": { 207 | "description": "Deny", 208 | "message": "拒絕" 209 | }, 210 | "disable_non_proxied_udp": { 211 | "description": "Protect Local and Public IPs", 212 | "message": "保護本機和公網IP" 213 | }, 214 | "disable": { 215 | "description": "Disable", 216 | "message": "停用" 217 | }, 218 | "disabled": { 219 | "description": "disabled", 220 | "message": "已停用" 221 | }, 222 | "disabledcap": { 223 | "description": "Disabled", 224 | "message": "已停用" 225 | }, 226 | "disabledsync": { 227 | "description": "Syncing is disabled.\r\nFeel free to go to the Options page at any time to sync your settings (make a backup of your settings if necessary).", 228 | "message": "同步已停用。\r\n隨意進入選項頁面,隨時將您的設定同步(如有必要,請備份您的設定)。" 229 | }, 230 | "disableremove": { 231 | "description": "Disable and Remove:", 232 | "message": "停用並移除:" 233 | }, 234 | "distrust": { 235 | "description": "Distrust", 236 | "message": "不信任" 237 | }, 238 | "distrustlow": { 239 | "description": "distrust", 240 | "message": "不信任" 241 | }, 242 | "domain": { 243 | "description": "Same Domain", 244 | "message": "同一網域" 245 | }, 246 | "domainsort": { 247 | "description": "Sort by Domain:", 248 | "message": "以網域排序:" 249 | }, 250 | "domaininfo": { 251 | "description": "Help", 252 | "message": "幫助" 253 | }, 254 | "domaininvalid": { 255 | "description": "Invalid domain/address", 256 | "message": "無效網域或網址" 257 | }, 258 | "domaininvalid2": { 259 | "description": "The domain or address must contain some letters/numbers", 260 | "message": "該網域或網址一定要包含一些字母或數字" 261 | }, 262 | "domaininvalid3": { 263 | "description": "Domain cannot be added as it is a provider of unwanted content (see Block Unwanted Content and/or Antisocial Mode)", 264 | "message": "不能添加網域名因為這並非需要的內容供應者(請參閱封鎖不需要的內容和/或反社交網絡模式)" 265 | }, 266 | "domainsortdesc": { 267 | "description": "sorts URL lists by domains on this page and in the panel", 268 | "message": "從此頁面網域及控制版面排列URL列表" 269 | }, 270 | "domaintip": { 271 | "description": "Tip: press CTRL+F to search the lists", 272 | "message": "提示:按Ctrl + F來搜索列表" 273 | }, 274 | "dontshowpage": { 275 | "description": "Don't Show This Page Again", 276 | "message": "不要再顯示此頁" 277 | }, 278 | "enable": { 279 | "description": "Enable:", 280 | "message": "啟用:" 281 | }, 282 | "enabled": { 283 | "description": "enabled", 284 | "message": "已啟用" 285 | }, 286 | "enabless": { 287 | "description": "Enable ScriptSafe", 288 | "message": "啟用ScriptSafe" 289 | }, 290 | "enablesyncing": { 291 | "description": "Enable Syncing:", 292 | "message": "啟用同步:" 293 | }, 294 | "export": { 295 | "description": "Export", 296 | "message": "匯出" 297 | }, 298 | "exportsuccess": { 299 | "description": "Your settings have been successfully synced!", 300 | "message": "您的設定已成功同步!" 301 | }, 302 | "exportsuccesstitle": { 303 | "description": "Settings Synced!", 304 | "message": "設定已同步!" 305 | }, 306 | "fingerprint": { 307 | "description": "Fingerprint Protection", 308 | "message": "指紋保護" 309 | }, 310 | "fingerprintdesc": { 311 | "description": "Fingerprint Protection (may break sites)", 312 | "message": "指紋保護(可能會阻礙網站使用)" 313 | }, 314 | "firstsync": { 315 | "description": "It appears you haven't synced your settings to your Google account yet.\r\nScriptSafe is about to sync your current settings to your Google account.\r\nClick on 'OK' if you want to continue.\r\nIf not, click 'Cancel', and on the other device with your preferred settings, update ScriptSafe and click on OK when you are presented with this message.", 316 | "message": "您似乎沒有同步您的設定到您的Google帳戶。\r\nScriptSafe將要同步您的設定到您的Google帳戶。\r\n如果您想繼續,請點擊“OK”。\r\n否則,請點擊“Cancel”,在其他裝置上使用你喜愛的設定,更新ScriptSafe,當您看到這段字,點擊OK。" 317 | }, 318 | "forcesyncexport": { 319 | "description": "Do you want to sync your current settings to your Google Account?\r\nNote: please do not press this frequently; there is a limit of 10 per minute and 1,000 per hour.", 320 | "message": "您想同步當前設定到您的Google帳戶?\r\n注意:請不要頻密地按此鍵;有每分鐘10次和每小時1000次的限制。" 321 | }, 322 | "forcesyncimport": { 323 | "description": "Do you want to import the synced settings from your Google Account to this device?", 324 | "message": "您想從您的Google賬戶匯入同步設定嗎?" 325 | }, 326 | "forever": { 327 | "description": "Forever", 328 | "message": "Forever" 329 | }, 330 | "hotkeys": { 331 | "description": "Hotkeys:", 332 | "message": "熱鍵:" 333 | }, 334 | "generalsettings": { 335 | "description": "General Settings", 336 | "message": "一般設定" 337 | }, 338 | "gamepad": { 339 | "description": "Block Gamepad Enumeration:", 340 | "message": "封鎖遊戲手柄計算:" 341 | }, 342 | "gamepaddesc": { 343 | "description": "prevent having devices detected via the Gamepad API", 344 | "message": "防止通過遊戲手柄API檢測到裝置" 345 | }, 346 | "availablehotkeys": { 347 | "description": "Available hotkey actions", 348 | "message": "可用熱鍵的操作" 349 | }, 350 | "hotkeystoggle": { 351 | "description": "Temporarily allow/block all resources for a current tab", 352 | "message": "暫時允許或封鎖當前標籤頁的所有資源" 353 | }, 354 | "hotkeysremove": { 355 | "description": "Remove temporary permissions for a current tab", 356 | "message": "移除當前標籤頁的臨時權限" 357 | }, 358 | "hotkeysremoveall": { 359 | "description": "Remove all temporary permissions", 360 | "message": "移除所有臨時權限" 361 | }, 362 | "hotkeyspage": { 363 | "description": "Configure ScriptSafe hotkeys", 364 | "message": "設置ScriptSafe熱鍵" 365 | }, 366 | "hotkeysinst": { 367 | "description": "click on Keyboard Shortcuts", 368 | "message": "點擊快捷鍵" 369 | }, 370 | "listallsettings": { 371 | "description": "List All Settings", 372 | "message": "列出所有設定" 373 | }, 374 | "ignoredallow": { 375 | "description": "Ignored Allow", 376 | "message": "忽略允許" 377 | }, 378 | "importsuccess": { 379 | "description": "The latest settings have been successfully downloaded!", 380 | "message": "最新的設定已成功下載!" 381 | }, 382 | "importsuccesstitle": { 383 | "description": "Settings Downloaded!", 384 | "message": "設定已下載!" 385 | }, 386 | "groupallsettings": { 387 | "description": "Group All Settings", 388 | "message": "組合所有設定" 389 | }, 390 | "hashchecking": { 391 | "description": "Remove Possible Hash Tracking:", 392 | "message": "移除可能存在的雜湊追蹤:" 393 | }, 394 | "hashcheckingdesc": { 395 | "description": "remove possible tracking tokens passed using hash, where there is an attribute and value (e.g. #xtor=RSS-1)", 396 | "message": "移除使用雜湊的跟踪標記,這些標記有屬性和值(例如#xtor=RSS-1)" 397 | }, 398 | "hide": { 399 | "description": "Hide", 400 | "message": "隱藏" 401 | }, 402 | "import": { 403 | "description": "Import", 404 | "message": "匯入" 405 | }, 406 | "importexport": { 407 | "description": "Import / Restore Settings", 408 | "message": "匯入/恢復設定" 409 | }, 410 | "importsuccessoptions": { 411 | "description": "Settings imported successfully", 412 | "message": "設定成功匯入" 413 | }, 414 | "importsuccesscond": { 415 | "description": "Settings imported successfully, except the following (empty value or unrecognized name):", 416 | "message": "設定成功匯入,除了以下(空值或無法識別的名稱):" 417 | }, 418 | "importsuccesssync": { 419 | "description": "Settings imported successfully and syncing in 10 seconds", 420 | "message": "成功匯入並在10秒內同步設定" 421 | }, 422 | "interval": { 423 | "description": "Every x Minutes", 424 | "message": "Every x Minutes" 425 | }, 426 | "keyboard": { 427 | "description": "Reduce Keyboard Fingerprinting (for advanced users):", 428 | "message": "減少鍵盤指紋(進階用戶):" 429 | }, 430 | "keyboarddesc": { 431 | "description": "make keypress timings more random to increase anonymity (NOTE: adds a random delay between keypresses; disable this setting if unacceptable)", 432 | "message": "令按鍵時序更隨機增加隱匿性(注意:增加了按鍵之間的隨機延遲;如不可接受,請停用此設定)" 433 | }, 434 | "browserplugins": { 435 | "description": "Block Browser Plugin Enumeration:", 436 | "message": "Block Browser Plugin Enumeration:" 437 | }, 438 | "browserpluginsdesc": { 439 | "description": "prevent sites from reading your browser plugin details", 440 | "message": "prevent sites from reading your browser plugin details" 441 | }, 442 | "linktarget": { 443 | "description": "Page Link Opening Behaviour:", 444 | "message": "頁面連結的打開方式:" 445 | }, 446 | "linktargetdesc": { 447 | "description": "modifies how all links are opened", 448 | "message": "修改所有連結的打開方式" 449 | }, 450 | "loosesamedomain": { 451 | "description": "Loose - allow same domain and subdomains", 452 | "message": "寬鬆 - 允許相同的網域和子網域" 453 | }, 454 | "minutes": { 455 | "description": "Minutes", 456 | "message": "Minutes" 457 | }, 458 | "mode": { 459 | "description": "Default Mode", 460 | "message": "預設模式" 461 | }, 462 | "newtab": { 463 | "description": "New Tab", 464 | "message": "新頁面標籤" 465 | }, 466 | "noexternal": { 467 | "description": "This tab has loaded no external resources", 468 | "message": "此頁面標籤並無加載任何外部資源" 469 | }, 470 | "notfiltered": { 471 | "description": "Not filtered", 472 | "message": "未經過濾" 473 | }, 474 | "nowebrtc": { 475 | "description": "This browser does not support WebRTC protection", 476 | "message": "這瀏覽器不支援WebRTC保護" 477 | }, 478 | "off": { 479 | "description": "-Off-", 480 | "message": "-關閉-" 481 | }, 482 | "onlyunwhitelisted": { 483 | "description": "Only on Unwhitelisted Domains", 484 | "message": "只有在未被列入允許名單的網域" 485 | }, 486 | "options": { 487 | "description": "Options", 488 | "message": "選項" 489 | }, 490 | "paranoia": { 491 | "description": "Paranoia Mode:", 492 | "message": "進取模式:" 493 | }, 494 | "paranoiadesc": { 495 | "description": "block allowed domains on unlisted domains", 496 | "message": "封鎖已允許但未列出的網域" 497 | }, 498 | "pastesettings": { 499 | "description": "Paste in settings and try again", 500 | "message": "貼上設定,然後再試一次" 501 | }, 502 | "preservesamedomain": { 503 | "description": "Respect Same-Domain:", 504 | "message": "保持同網域:" 505 | }, 506 | "preservesamedomaindesc": { 507 | "description": "preserve same-domain elements", 508 | "message": "保持同網域元素" 509 | }, 510 | "privacy": { 511 | "description": "Privacy Settings", 512 | "message": "隱私設定" 513 | }, 514 | "random": { 515 | "description": "Random", 516 | "message": "隨機" 517 | }, 518 | "rating": { 519 | "description": "Show Rating Button:", 520 | "message": "顯示評分按鈕:" 521 | }, 522 | "ratingbtn": { 523 | "description": "Rating", 524 | "message": "評分" 525 | }, 526 | "ratingdesc": { 527 | "description": "if ticked, adds rating button under domains in tab popup", 528 | "message": "如果勾選,增加評分按鈕彈在選項卡下的網域" 529 | }, 530 | "recentlyupdated": { 531 | "description": "ScriptSafe was recently updated/reloaded.You will need to either refresh this tab, create a new tab, or restart your browser in order for ScriptSafe to work.", 532 | "message": "ScriptSafe最近已更新或重新載入。您將需要重新載入此標籤頁、開啟新的標籤頁,或重新啟動瀏覽器以令ScriptSafe正常運作。" 533 | }, 534 | "referrer": { 535 | "description": "Block Click-Through Referrer:", 536 | "message": "封鎖點擊參照位址:" 537 | }, 538 | "referrerdesc": { 539 | "description": "blocks referrer information when clicking on third-party links (note: setting this to On All Domains may cause issues (e.g. thumbnails in Tweetdeck))", 540 | "message": "點擊第三方連結時封鎖參照位址資訊(注意:向所有網域作此設定,可能會引致問題(例如,在TweetDeck的縮圖))" 541 | }, 542 | "referrerspoof": { 543 | "description": "Referrer Spoof:", 544 | "message": "假參照位址:" 545 | }, 546 | "referrerspoofdesc": { 547 | "description": "warning: if enabled, may break some sites (e.g. logging in)", 548 | "message": "警告:如果啟用,可能令一些網站無法正常運作(如登入)" 549 | }, 550 | "refresh": { 551 | "description": "Auto-Refresh Page:", 552 | "message": "自動重新載入頁面:" 553 | }, 554 | "refreshdesc": { 555 | "description": "auto-refresh page after list change", 556 | "message": "名單變更後自動重新載入頁面" 557 | }, 558 | "relaxed": { 559 | "description": "Relaxed", 560 | "message": "寬鬆" 561 | }, 562 | "request": { 563 | "description": "Every Request", 564 | "message": "Every Request" 565 | }, 566 | "restoredefault": { 567 | "description": "Restore Default Settings", 568 | "message": "Restore Default Settings" 569 | }, 570 | "restoredefault2": { 571 | "description": "Restore Default Settings + Clear All Lists", 572 | "message": "Restore Default Settings + Clear All Lists" 573 | }, 574 | "restoredefaultconfirm": { 575 | "description": "Are you sure you want to restore the default settings? This will NOT clear your lists.", 576 | "message": "Are you sure you want to restore the default settings? This will NOT clear your lists." 577 | }, 578 | "restoredefaultconfirm2": { 579 | "description": "Are you sure you want to restore the default settings AND clear all of your lists?", 580 | "message": "Are you sure you want to restore the default settings AND clear all of your lists?" 581 | }, 582 | "revoketemp": { 583 | "description": "Revoke Page Temporary Permissions", 584 | "message": "撤銷頁面的臨時權限" 585 | }, 586 | "revoketempall": { 587 | "description": "Revoke All Temporary", 588 | "message": "撤銷所有臨時(權限)" 589 | }, 590 | "same": { 591 | "description": "Same Document", 592 | "message": "同一HTML文本" 593 | }, 594 | "sametab": { 595 | "description": "Same Tab", 596 | "message": "同一標籤頁" 597 | }, 598 | "save": { 599 | "description": "Save", 600 | "message": "儲存" 601 | }, 602 | "savetxt": { 603 | "description": "Save as Text File", 604 | "message": "另存為文字檔案" 605 | }, 606 | "sections": { 607 | "description": "Sections", 608 | "message": "段" 609 | }, 610 | "settingsall": { 611 | "description": "select all", 612 | "message": "全選" 613 | }, 614 | "settingsimport": { 615 | "description": "Copy and paste the settings you want to import into ScriptSafe into this box then click on the Import button.", 616 | "message": "複製和貼上您想匯入到ScriptSafe的設定到此方格,然後按匯入按鈕。" 617 | }, 618 | "settingssave": { 619 | "description": "Settings saved", 620 | "message": "儲存設定" 621 | }, 622 | "settingssavesync": { 623 | "description": "Settings saved and syncing in 10 seconds", 624 | "message": "設定已儲存並會在10秒內同步" 625 | }, 626 | "showcontext": { 627 | "description": "Show in Context Menu:", 628 | "message": "顯示在快顯功能表:" 629 | }, 630 | "ssdisabled": { 631 | "description": "ScriptSafe is disabled", 632 | "message": "ScriptSafe被停用" 633 | }, 634 | "strict": { 635 | "description": "Strict", 636 | "message": "嚴格" 637 | }, 638 | "strictsamedomain": { 639 | "description": "Strict - allow same domain only", 640 | "message": "嚴格 - 只允許同一個網域" 641 | }, 642 | "support": { 643 | "description": "To support development, click the heart :)", 644 | "message": "支持開發,點擊心心 :)" 645 | }, 646 | "syncdisable": { 647 | "description": "You have enabled auto-syncing. In order to prevent erasing your previously synced data (if any), please click on Sync Settings FROM Google Account.", 648 | "message": "您已啟用自動同步。為了避免抹掉您之前同步的資料(如有),請從Google帳戶按同步設定。" 649 | }, 650 | "syncimport": { 651 | "description": "Sync Settings FROM Google Account", 652 | "message": "從Google帳戶同步設定" 653 | }, 654 | "syncexport": { 655 | "description": "Sync Settings TO Google Account", 656 | "message": "同步設定到Google帳戶" 657 | }, 658 | "syncdetect": { 659 | "description": "ScriptSafe has detected that you have settings synced on your Google account!\r\nClick on 'OK' if you want to import the settings from your Google Account.", 660 | "message": "ScriptSafe已檢測到您已在Google帳戶同步您的設定!\r\n如果您想從您的Google帳戶匯入設定,請按“OK”。" 661 | }, 662 | "syncdisabled": { 663 | "description": "Syncing has been disabled to prevent overwriting your already synced data.\r\nFeel free to go to the Options page at any time to sync your settings (make a backup of your settings if necessary).", 664 | "message": "同步已被停用以防止抹掉您已經同步的資料。\r\n隨意進入選項頁面,隨時同步您的設定(如有必要請設定備份)。" 665 | }, 666 | "syncfromnotify": { 667 | "description": "Show Import Sync Notification:", 668 | "message": "顯示匯入同步通知:" 669 | }, 670 | "syncfromnotifydesc": { 671 | "description": "show popup when settings synced from your Google Account", 672 | "message": "當從您的Google賬戶同步設定時,顯示彈出框框" 673 | }, 674 | "syncnotify": { 675 | "description": "Show Sync Notification:", 676 | "message": "顯示同步通知:" 677 | }, 678 | "syncnotifydesc": { 679 | "description": "show popup when settings synced to your Google Account", 680 | "message": "當設定同步到您的Google帳戶時,顯示彈出框框" 681 | }, 682 | "syncnotsupported": { 683 | "description": "Your current version of Google Chrome does not support settings syncing. Please try updating your Chrome version and try again.", 684 | "message": "您當前的Google瀏覽器版本不支持設定同步。請嘗試更新您的Chrome瀏覽器版本,然後再試一次。" 685 | }, 686 | "temp": { 687 | "description": "Temporary", 688 | "message": "臨時" 689 | }, 690 | "timezone": { 691 | "description": "Spoof Timezone:", 692 | "message": "假時區:" 693 | }, 694 | "timezonedesc": { 695 | "description": "spoof or randomize your timezone. NOTE: if enabled, it may interfere with replying to emails in Gmail.", 696 | "message": "假或隨機的時區。注意:如果啟用,在Gmail回覆郵件可能會受干擾。" 697 | }, 698 | "trust": { 699 | "description": "Trust", 700 | "message": "相信" 701 | }, 702 | "trustlow": { 703 | "description": "trust", 704 | "message": "相信" 705 | }, 706 | "uaspoofallow": { 707 | "description": "Apply to whitelisted domains as well", 708 | "message": "同時適用於列入允許名單的網域名" 709 | }, 710 | "updatedisable": { 711 | "description": "Are you sure you want to disable any future update notifications like this one from appearing?\r\nYou can always re-allow update notifications by going to the ScriptSafe Options page and ticking the box beside Show Update Popup.", 712 | "message": "您確定之後要停用任何像今次的更新通知?\r\n只要在ScriptSafe的選項頁勾選旁邊的方格,您就可以隨時重新允許更新通知。" 713 | }, 714 | "updatedisablemessage": { 715 | "description": "Update notifications disabled", 716 | "message": "停用更新通知" 717 | }, 718 | "updatenotify": { 719 | "description": "Show Changelog on Update:", 720 | "message": "更新時顯示更新日誌:" 721 | }, 722 | "unwanted": { 723 | "description": "Unwanted", 724 | "message": "不需要" 725 | }, 726 | "updatenotifydesc": { 727 | "description": "show changelog page when ScriptSafe is updated", 728 | "message": "當ScriptSafe已更新,顯示更新日誌" 729 | }, 730 | "url": { 731 | "description": "Domain", 732 | "message": "網域" 733 | }, 734 | "urldesc": { 735 | "description": "Enter a domain or expression (click 'Help' for more info)", 736 | "message": "輸入網域或公式(按「幫助」以獲更多資訊)" 737 | }, 738 | "useragentspoof": { 739 | "description": "User-Agent Spoof:", 740 | "message": "假用戶代理:" 741 | }, 742 | "useragentspoofdesc": { 743 | "description": "spoofs your user-agent (browser and OS)", 744 | "message": "虛構您的用戶代理(瀏覽器和操作系統)" 745 | }, 746 | "userref": { 747 | "description": "Enter an address to set as your referrer value for all sites", 748 | "message": "輸入網址設定為所有網站的參照位址" 749 | }, 750 | "utm": { 751 | "description": "Remove Google Analytics (UTM) Tracking:", 752 | "message": "移除Google分析(UTM)追踪:" 753 | }, 754 | "utmdesc": { 755 | "description": "remove Google Analytics (UTM) tracking tokens", 756 | "message": "移除Google分析(UTM)跟踪標記" 757 | }, 758 | "webbugs": { 759 | "description": "Remove Webbugs:", 760 | "message": "移除Webbugs:" 761 | }, 762 | "webbugsdesc": { 763 | "description": "remove invisible third-party elements", 764 | "message": "移除看不見的第三方元素" 765 | }, 766 | "webgl": { 767 | "description": "Block WebGL Fingerprinting:", 768 | "message": "封鎖WebGL指紋識別:" 769 | }, 770 | "webgldesc": { 771 | "description": "prevent fingerprinting via the WebGL API", 772 | "message": "避免通過WebGL API的指紋識別" 773 | }, 774 | "webrtcdevice": { 775 | "description": "Block Device Enumeration:", 776 | "message": "封鎖設備計算:" 777 | }, 778 | "webrtcdevicedesc": { 779 | "description": "prevent having hardware devices detected via the WebRTC API", 780 | "message": "避免通過WebRTC API檢測到硬件設備" 781 | }, 782 | "webrtc": { 783 | "description": "WebRTC Protection:", 784 | "message": "WebRTC保護:" 785 | }, 786 | "webrtcdesc": { 787 | "description": "prevent IP address leakage", 788 | "message": "防止IP地址洩漏" 789 | }, 790 | "webvr": { 791 | "description": "Block WebVR Enumeration:", 792 | "message": "封鎖WebVR手柄計算:" 793 | }, 794 | "webvrdesc": { 795 | "description": "prevent having devices detected via the WebVR API", 796 | "message": "防止通過WebVR API檢測到裝置" 797 | }, 798 | "blackbind": { 799 | "description": "+ Blacklist", 800 | "message": "+ 黑名單" 801 | }, 802 | "whitebind": { 803 | "description": "+ Whitelist", 804 | "message": "+ 允許名單" 805 | }, 806 | "blacklist": { 807 | "description": "Blacklist", 808 | "message": "黑名單" 809 | }, 810 | "whitelist": { 811 | "description": "Whitelist", 812 | "message": "允許名單" 813 | }, 814 | "blacklisted": { 815 | "description": "Blacklisted", 816 | "message": "列入黑名單" 817 | }, 818 | "whitelisted": { 819 | "description": "Whitelisted", 820 | "message": "列入允許名單" 821 | }, 822 | "blacklistlow": { 823 | "description": "blacklist", 824 | "message": "黑名單" 825 | }, 826 | "whitelistlow": { 827 | "description": "whitelist", 828 | "message": "允許名單" 829 | }, 830 | "blacklistmove": { 831 | "description": "Move to Blacklist", 832 | "message": "移到黑名單" 833 | }, 834 | "whitelistmove": { 835 | "description": "Move to Whitelist", 836 | "message": "移到允許名單" 837 | }, 838 | "whitelistblacklist": { 839 | "description": "Whitelist / Blacklist", 840 | "message": "允許名單或黑名單" 841 | }, 842 | "xml": { 843 | "description": "XML HTTP Request Handling:", 844 | "message": "XML HTTP請求處理:" 845 | }, 846 | "xmlall": { 847 | "description": "Control All Requests", 848 | "message": "控制所有請求" 849 | }, 850 | "xmlcross": { 851 | "description": "Control Cross-Domain Requests (allow Same-Domain)", 852 | "message": "控制跨網域請求(允許同網域)" 853 | }, 854 | "xmldesc": { 855 | "description": "control XML HTTP Requests", 856 | "message": "控制XML HTTP請求" 857 | } 858 | } -------------------------------------------------------------------------------- /css/bootstrap-theme.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.6 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} 6 | /*# sourceMappingURL=bootstrap-theme.min.css.map */ -------------------------------------------------------------------------------- /css/glyph.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"} -------------------------------------------------------------------------------- /css/options.css: -------------------------------------------------------------------------------- 1 | body { padding: 25px 0; } 2 | .tab { display: none; } 3 | .tab.active { display: block; } 4 | .table { margin-bottom: 0px; } 5 | .table tr:first-child td { border-top: none; padding-top: 10px; } 6 | .table tr:last-child td { padding-bottom: 10px; } 7 | h3 { margin: 0px !important; } 8 | #title, .i18_support { color: green; font-size: 30px; font-weight: bold; } 9 | #title:hover { color: blue; } 10 | .i18_support { color: #000; font-size: 18px; } 11 | #message { z-index: 999; color: #000; margin: 5px; position: fixed; top: 0; right: 0; padding: 5px; font-weight: bold; } 12 | .sshidden, #message { display: none; } 13 | .listentry, .clear { clear: both; } 14 | .listentry { border-bottom: 1px solid #eee; padding: 2px; font-weight: bold; } 15 | .listentry:hover { background-color: #f5f5f5; } 16 | .right { float: right; } 17 | .entryoptions { float: right; font-size: 11px; } 18 | .list, textarea { min-height: 300px; max-height: 300px; overflow-y: auto; } 19 | .fp-list { min-height: 100px; max-height: 100px; } 20 | .fp-list .entryoptions { padding-top: 3px; } 21 | .sectionheading, .sectionheading h4 { margin-bottom: 0px; } 22 | .row-offcanvas { display: none; } -------------------------------------------------------------------------------- /css/popup.css: -------------------------------------------------------------------------------- 1 | /* Global */ 2 | html { width: 575px; } 3 | html, body { word-wrap: break-word; } 4 | html, body, td, th { font-family: arial, sans-serif; } 5 | body { margin: 0px 5px; padding: 0px; font-size: 100%; background-color: #fff; } 6 | #container, table { width: 100%; } 7 | #container { font-size: 0.75em; } 8 | td, th { text-align: left; } 9 | td { vertical-align: top; } 10 | th { padding-bottom: 5px; } 11 | #header { width: 100%; padding: 5px 0; margin-bottom: 10px; position: fixed; background-color: #fff; padding-left: 5px; margin-left: -5px; border-bottom: 2px solid #ccc; } 12 | #header a#pop_webstore { font-weight: bold; color: #000; text-decoration: none; } 13 | #header a#pop_webstore:hover { text-decoration: underline; } 14 | #header div { float: right; margin-right: 7px; } 15 | #pop_close { margin-right: 5px; } 16 | #parent { padding-bottom: 5px; } 17 | table { padding-top: 35px; } 18 | 19 | /* Tab Options */ 20 | #parent { text-align: right; padding-right: 3px; } 21 | #parent > div { border-bottom: none; display: inline-block; } 22 | 23 | /* Resource List */ 24 | .thirds { vertical-align: top; } 25 | .thirditem span a, fpitem span a { text-decoration: none; font-weight: bold; } 26 | .thirditem span a:hover, .fpitem span a:hover { text-decoration: underline; } 27 | .allowed, .blocked, .domainname { padding: 0 5px; } 28 | .thirds { padding-top: 5px; padding-right: 5px; } 29 | .thirditem, .fpitem, .fpcat, .fphead { 30 | clear: both; 31 | border-bottom: 1px solid #eee; 32 | padding: 5px 0; 33 | } 34 | .fpcat { 35 | padding: 0; 36 | } 37 | .thirditem, .fpitem, .fphead { padding-left: 7px; } 38 | .fphead { 39 | border-bottom: none; 40 | border-right: 3px solid #ccc; 41 | background-color: #eee; 42 | } 43 | .chevron::before { 44 | border-style: solid; 45 | border-width: 0.1em 0.1em 0 0; 46 | content: ''; 47 | display: inline-block; 48 | height: 0.45em; 49 | left: 0.15em; 50 | position: relative; 51 | vertical-align: top; 52 | width: 0.45em; 53 | float: right; 54 | margin-right: 10px; 55 | transform: rotate(-45deg); 56 | top: 0.45em; 57 | } 58 | .chevron.uparrow::before { 59 | transform: rotate(135deg); 60 | top: 0.1em; 61 | } 62 | .fpoptions { display: none; } 63 | .thirditem:hover { 64 | background-color: #f0f0f0; 65 | } 66 | .fpitem:hover { 67 | background-color: #f5f5f5; 68 | } 69 | .fphead:hover { 70 | background-color: #ccc; 71 | } 72 | .wot { padding-right: 4px; } 73 | .wot a { color: #555; text-decoration: none; } 74 | #currentdomain .wot a { color: #fff; } 75 | .wot a:hover { text-decoration: underline; } 76 | .choices { float: right; } 77 | .domainoutput { 78 | max-width: 536px; 79 | display: inline-block; 80 | } 81 | .domainname.domainoutput { 82 | max-width: 531px; 83 | } 84 | 85 | /* Footer */ 86 | #bottom { padding-top: 10px; padding-bottom: 5px; } 87 | #credit { text-align: right; padding-right: 5px; font-weight: bold; font-size: 0.92em; color: #555; } 88 | #credit a, #pop_options { text-decoration: underline; } 89 | #credit a:hover, #pop_options:hover { text-decoration: none; } 90 | #closebtn { width: 5px; text-align: right; } 91 | 92 | /* Misc */ 93 | hr { border: 0; border-top: 1px solid #eeeeee; } 94 | .bolded, #pop_options, #pop_log { font-weight: bold; } 95 | 96 | /* Boxes */ 97 | .box:hover, .fphead { 98 | cursor: hand; 99 | cursor: pointer; 100 | } 101 | .box { 102 | cursor: default; 103 | font-size: 0.92em; 104 | font-weight: bold; 105 | text-align: center; 106 | min-width: 12%; 107 | outline: 0; 108 | padding: 8px 6px; 109 | -moz-border-radius: 2px; 110 | -webkit-border-radius: 2px; 111 | border-radius: 2px; 112 | text-shadow: 0 1px rgba(0, 0, 0, 0.1); 113 | margin: 2px; 114 | } 115 | span.box { 116 | padding: 0 8px; 117 | margin: 0; 118 | height: 16px; 119 | line-height: 16px; 120 | margin-left: 2px; 121 | } 122 | .box:hover { 123 | text-decoration: underline; 124 | } 125 | .selected { 126 | border: 1px solid #000 !important; 127 | text-decoration: line-through !important; 128 | background-color: #999 !important; 129 | background-image: none !important; 130 | } 131 | .box1, .allowed { 132 | border: 1px solid #29691D; 133 | color: white; 134 | background-color: #3D9400; 135 | background-image: -webkit-linear-gradient(top,#3d9400,#398a00); 136 | background-image: -moz-linear-gradient(top,#3d9400,#398a00); 137 | background-image: -ms-linear-gradient(top,#3d9400,#398a00); 138 | background-image: -o-linear-gradient(top,#3d9400,#398a00); 139 | background-image: linear-gradient(top,#3d9400,#398a00); 140 | } 141 | .box1:active { 142 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 143 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 144 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 145 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 146 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 147 | } 148 | .box1:focus { 149 | -moz-box-shadow: inset 0 0 0 1px #fff; 150 | -ms-box-shadow: inset 0 0 0 1px #fff; 151 | -o-box-shadow: inset 0 0 0 1px #fff; 152 | -webkit-box-shadow: inset 0 0 0 1px #fff; 153 | box-shadow: inset 0 0 0 1px #fff; 154 | outline: 1px solid #3D9400; 155 | outline: 0 transparent; 156 | border: 1px solid white; 157 | border: 1px solid transparent; 158 | } 159 | .box1:hover { 160 | border: 1px solid #2D6200; 161 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 162 | background-color: #368200; 163 | background-image: -webkit-linear-gradient(top,#3d9400,#368200); 164 | background-image: -moz-linear-gradient(top,#3d9400,#368200); 165 | background-image: -ms-linear-gradient(top,#3d9400,#368200); 166 | background-image: -o-linear-gradient(top,#3d9400,#368200); 167 | background-image: linear-gradient(top,#3d9400,#368200); 168 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 169 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 170 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 171 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 172 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 173 | } 174 | .box2, .blocked { 175 | background-color: #a60000; 176 | border: 1px solid #7a0000; 177 | color: white; 178 | background-image: -webkit-linear-gradient(top,#a60000,#990000); 179 | background-image: -moz-linear-gradient(top,#a60000,#990000); 180 | background-image: -ms-linear-gradient(top,#a60000,#990000); 181 | background-image: -o-linear-gradient(top,#a60000,#990000); 182 | background-image: linear-gradient(top,#a60000,#990000); 183 | } 184 | .box2:active { 185 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 186 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 187 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 188 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 189 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 190 | } 191 | .box2:focus { 192 | -moz-box-shadow: inset 0 0 0 1px #fff; 193 | -ms-box-shadow: inset 0 0 0 1px #fff; 194 | -o-box-shadow: inset 0 0 0 1px #fff; 195 | -webkit-box-shadow: inset 0 0 0 1px #fff; 196 | box-shadow: inset 0 0 0 1px #fff; 197 | outline: 1px solid #a60000; 198 | outline: 0 transparent; 199 | border: 1px solid white; 200 | border: 1px solid transparent; 201 | } 202 | .box2:hover { 203 | border: 1px solid #7a0000; 204 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 205 | background-color: #940000; 206 | background-image: -webkit-linear-gradient(top,#a60000,#940000); 207 | background-image: -moz-linear-gradient(top,#a60000,#940000); 208 | background-image: -ms-linear-gradient(top,#a60000,#940000); 209 | background-image: -o-linear-gradient(top,#a60000,#940000); 210 | background-image: linear-gradient(top,#a60000,#940000); 211 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 212 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 213 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 214 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 215 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 216 | } 217 | .box3 { 218 | background-color: #4D90FE; 219 | border: 1px solid #3079ED; 220 | color: white; 221 | background-image: -webkit-linear-gradient(top,#4d90fe,#4787ed); 222 | background-image: -moz-linear-gradient(top,#4d90fe,#4787ed); 223 | background-image: -ms-linear-gradient(top,#4d90fe,#4787ed); 224 | background-image: -o-linear-gradient(top,#4d90fe,#4787ed); 225 | background-image: linear-gradient(top,#4d90fe,#4787ed); 226 | } 227 | .box3:active { 228 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 229 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 230 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 231 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 232 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 233 | } 234 | .box3:focus { 235 | -moz-box-shadow: inset 0 0 0 1px #fff; 236 | -ms-box-shadow: inset 0 0 0 1px #fff; 237 | -o-box-shadow: inset 0 0 0 1px #fff; 238 | -webkit-box-shadow: inset 0 0 0 1px #fff; 239 | box-shadow: inset 0 0 0 1px #fff; 240 | outline: 1px solid #4D90FE; 241 | outline: 0 transparent; 242 | border: 1px solid white; 243 | border: 1px solid transparent; 244 | } 245 | .box3:hover { 246 | border: 1px solid #2F5BB7; 247 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 248 | background-color: #357AE8; 249 | background-image: -webkit-linear-gradient(top,#4D90FE,#357AE8); 250 | background-image: -moz-linear-gradient(top,#4D90FE,#357AE8); 251 | background-image: -ms-linear-gradient(top,#4D90FE,#357AE8); 252 | background-image: -o-linear-gradient(top,#4D90FE,#357AE8); 253 | background-image: linear-gradient(top,#4D90FE,#357AE8); 254 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 255 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 256 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 257 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 258 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 259 | } 260 | .box4 { 261 | background-color: #444; 262 | border: 1px solid #333333; 263 | color: white; 264 | background-image: -webkit-linear-gradient(top,#444,#222); 265 | background-image: -moz-linear-gradient(top,#444,#222); 266 | background-image: -ms-linear-gradient(top,#444,#222); 267 | background-image: -o-linear-gradient(top,#444,#222); 268 | background-image: linear-gradient(top,#444,#222); 269 | } 270 | .box4:active { 271 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 272 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 273 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 274 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 275 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 276 | } 277 | .box4:focus { 278 | -moz-box-shadow: inset 0 0 0 1px #000; 279 | -ms-box-shadow: inset 0 0 0 1px #000; 280 | -o-box-shadow: inset 0 0 0 1px #000; 281 | -webkit-box-shadow: inset 0 0 0 1px #000; 282 | box-shadow: inset 0 0 0 1px #000; 283 | outline: 1px solid #EFEFEF; 284 | outline: 0 transparent; 285 | border: 1px solid black; 286 | border: 1px solid transparent; 287 | } 288 | .box4:hover { 289 | border: 1px solid #222222; 290 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 291 | background-color: #444; 292 | background-image: -webkit-linear-gradient(top,#222,#444); 293 | background-image: -moz-linear-gradient(top,#222,#444); 294 | background-image: -ms-linear-gradient(top,#222,#444); 295 | background-image: -o-linear-gradient(top,#222,#444); 296 | background-image: linear-gradient(top,#222,#444); 297 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 298 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 299 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 300 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 301 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 302 | } 303 | .box5, .domainname { 304 | clear: both; 305 | width: auto; 306 | margin-top: 5px; 307 | background-color: #444; 308 | border: 1px solid #333333; 309 | color: white; 310 | background-image: -webkit-linear-gradient(top,#444,#222); 311 | background-image: -moz-linear-gradient(top,#444,#222); 312 | background-image: -ms-linear-gradient(top,#444,#222); 313 | background-image: -o-linear-gradient(top,#444,#222); 314 | background-image: linear-gradient(top,#444,#222); 315 | } 316 | .box5:active { 317 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 318 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 319 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 320 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 321 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 322 | } 323 | .box5:focus { 324 | -moz-box-shadow: inset 0 0 0 1px #000; 325 | -ms-box-shadow: inset 0 0 0 1px #000; 326 | -o-box-shadow: inset 0 0 0 1px #000; 327 | -webkit-box-shadow: inset 0 0 0 1px #000; 328 | box-shadow: inset 0 0 0 1px #000; 329 | outline: 1px solid #EFEFEF; 330 | outline: 0 transparent; 331 | border: 1px solid black; 332 | border: 1px solid transparent; 333 | } 334 | .box5:hover { 335 | border: 1px solid #222222; 336 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 337 | background-color: #444; 338 | background-image: -webkit-linear-gradient(top,#222,#444); 339 | background-image: -moz-linear-gradient(top,#222,#444); 340 | background-image: -ms-linear-gradient(top,#222,#444); 341 | background-image: -o-linear-gradient(top,#222,#444); 342 | background-image: linear-gradient(top,#222,#444); 343 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 344 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 345 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 346 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 347 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 348 | } 349 | 350 | /* Temp. Permissions */ 351 | .allowsession, .prevoke, .clearglobaltemp { 352 | clear: both; 353 | margin-left: 0px; 354 | margin-right: 0px; 355 | margin-bottom: 0px; 356 | } -------------------------------------------------------------------------------- /css/recents.css: -------------------------------------------------------------------------------- 1 | /* Global */ 2 | body { padding: 25px 0; } 3 | .table { font-size: 0.9em; } 4 | #title, .i18_support { color: green; font-size: 30px; font-weight: bold; } 5 | #title:hover { color: blue; } 6 | #message { z-index: 999; color: #000; margin: 5px; position: fixed; top: 0; right: 0; padding: 5px; font-weight: bold; } 7 | #message { display: none; } 8 | li.active { font-weight: bold; } 9 | 10 | /* Boxes */ 11 | .box:hover, .fphead { 12 | cursor: hand; 13 | cursor: pointer; 14 | } 15 | .box { 16 | cursor: default; 17 | font-size: 0.92em; 18 | font-weight: bold; 19 | text-align: center; 20 | min-width: 12%; 21 | outline: 0; 22 | padding: 8px 6px; 23 | -moz-border-radius: 2px; 24 | -webkit-border-radius: 2px; 25 | border-radius: 2px; 26 | text-shadow: 0 1px rgba(0, 0, 0, 0.1); 27 | margin: 2px; 28 | } 29 | span.box { 30 | padding: 0 8px; 31 | margin: 0; 32 | height: 16px; 33 | line-height: 16px; 34 | margin-left: 2px; 35 | } 36 | .box:hover { 37 | text-decoration: underline; 38 | } 39 | .selected { 40 | border: 1px solid #000 !important; 41 | text-decoration: line-through !important; 42 | background-color: #999 !important; 43 | background-image: none !important; 44 | } 45 | .box1, .allowed { 46 | border: 1px solid #29691D; 47 | color: white; 48 | background-color: #3D9400; 49 | background-image: -webkit-linear-gradient(top,#3d9400,#398a00); 50 | background-image: -moz-linear-gradient(top,#3d9400,#398a00); 51 | background-image: -ms-linear-gradient(top,#3d9400,#398a00); 52 | background-image: -o-linear-gradient(top,#3d9400,#398a00); 53 | background-image: linear-gradient(top,#3d9400,#398a00); 54 | } 55 | .box1:active { 56 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 57 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 58 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 59 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 60 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 61 | } 62 | .box1:focus { 63 | -moz-box-shadow: inset 0 0 0 1px #fff; 64 | -ms-box-shadow: inset 0 0 0 1px #fff; 65 | -o-box-shadow: inset 0 0 0 1px #fff; 66 | -webkit-box-shadow: inset 0 0 0 1px #fff; 67 | box-shadow: inset 0 0 0 1px #fff; 68 | outline: 1px solid #3D9400; 69 | outline: 0 transparent; 70 | border: 1px solid white; 71 | border: 1px solid transparent; 72 | } 73 | .box1:hover { 74 | border: 1px solid #2D6200; 75 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 76 | background-color: #368200; 77 | background-image: -webkit-linear-gradient(top,#3d9400,#368200); 78 | background-image: -moz-linear-gradient(top,#3d9400,#368200); 79 | background-image: -ms-linear-gradient(top,#3d9400,#368200); 80 | background-image: -o-linear-gradient(top,#3d9400,#368200); 81 | background-image: linear-gradient(top,#3d9400,#368200); 82 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 83 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 84 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 85 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 86 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 87 | } 88 | .box2, .blocked { 89 | background-color: #a60000; 90 | border: 1px solid #7a0000; 91 | color: white; 92 | background-image: -webkit-linear-gradient(top,#a60000,#990000); 93 | background-image: -moz-linear-gradient(top,#a60000,#990000); 94 | background-image: -ms-linear-gradient(top,#a60000,#990000); 95 | background-image: -o-linear-gradient(top,#a60000,#990000); 96 | background-image: linear-gradient(top,#a60000,#990000); 97 | } 98 | .box2:active { 99 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 100 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 101 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 102 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 103 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 104 | } 105 | .box2:focus { 106 | -moz-box-shadow: inset 0 0 0 1px #fff; 107 | -ms-box-shadow: inset 0 0 0 1px #fff; 108 | -o-box-shadow: inset 0 0 0 1px #fff; 109 | -webkit-box-shadow: inset 0 0 0 1px #fff; 110 | box-shadow: inset 0 0 0 1px #fff; 111 | outline: 1px solid #a60000; 112 | outline: 0 transparent; 113 | border: 1px solid white; 114 | border: 1px solid transparent; 115 | } 116 | .box2:hover { 117 | border: 1px solid #7a0000; 118 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 119 | background-color: #940000; 120 | background-image: -webkit-linear-gradient(top,#a60000,#940000); 121 | background-image: -moz-linear-gradient(top,#a60000,#940000); 122 | background-image: -ms-linear-gradient(top,#a60000,#940000); 123 | background-image: -o-linear-gradient(top,#a60000,#940000); 124 | background-image: linear-gradient(top,#a60000,#940000); 125 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 126 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 127 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 128 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 129 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 130 | } 131 | .box3 { 132 | background-color: #4D90FE; 133 | border: 1px solid #3079ED; 134 | color: white; 135 | background-image: -webkit-linear-gradient(top,#4d90fe,#4787ed); 136 | background-image: -moz-linear-gradient(top,#4d90fe,#4787ed); 137 | background-image: -ms-linear-gradient(top,#4d90fe,#4787ed); 138 | background-image: -o-linear-gradient(top,#4d90fe,#4787ed); 139 | background-image: linear-gradient(top,#4d90fe,#4787ed); 140 | } 141 | .box3:active { 142 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 143 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 144 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 145 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 146 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 147 | } 148 | .box3:focus { 149 | -moz-box-shadow: inset 0 0 0 1px #fff; 150 | -ms-box-shadow: inset 0 0 0 1px #fff; 151 | -o-box-shadow: inset 0 0 0 1px #fff; 152 | -webkit-box-shadow: inset 0 0 0 1px #fff; 153 | box-shadow: inset 0 0 0 1px #fff; 154 | outline: 1px solid #4D90FE; 155 | outline: 0 transparent; 156 | border: 1px solid white; 157 | border: 1px solid transparent; 158 | } 159 | .box3:hover { 160 | border: 1px solid #2F5BB7; 161 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 162 | background-color: #357AE8; 163 | background-image: -webkit-linear-gradient(top,#4D90FE,#357AE8); 164 | background-image: -moz-linear-gradient(top,#4D90FE,#357AE8); 165 | background-image: -ms-linear-gradient(top,#4D90FE,#357AE8); 166 | background-image: -o-linear-gradient(top,#4D90FE,#357AE8); 167 | background-image: linear-gradient(top,#4D90FE,#357AE8); 168 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 169 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 170 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 171 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 172 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 173 | } 174 | .box4 { 175 | background-color: #444; 176 | border: 1px solid #333333; 177 | color: white; 178 | background-image: -webkit-linear-gradient(top,#444,#222); 179 | background-image: -moz-linear-gradient(top,#444,#222); 180 | background-image: -ms-linear-gradient(top,#444,#222); 181 | background-image: -o-linear-gradient(top,#444,#222); 182 | background-image: linear-gradient(top,#444,#222); 183 | } 184 | .box4:active { 185 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 186 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 187 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 188 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 189 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 190 | } 191 | .box4:focus { 192 | -moz-box-shadow: inset 0 0 0 1px #000; 193 | -ms-box-shadow: inset 0 0 0 1px #000; 194 | -o-box-shadow: inset 0 0 0 1px #000; 195 | -webkit-box-shadow: inset 0 0 0 1px #000; 196 | box-shadow: inset 0 0 0 1px #000; 197 | outline: 1px solid #EFEFEF; 198 | outline: 0 transparent; 199 | border: 1px solid black; 200 | border: 1px solid transparent; 201 | } 202 | .box4:hover { 203 | border: 1px solid #222222; 204 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 205 | background-color: #444; 206 | background-image: -webkit-linear-gradient(top,#222,#444); 207 | background-image: -moz-linear-gradient(top,#222,#444); 208 | background-image: -ms-linear-gradient(top,#222,#444); 209 | background-image: -o-linear-gradient(top,#222,#444); 210 | background-image: linear-gradient(top,#222,#444); 211 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 212 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 213 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 214 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 215 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 216 | } 217 | .box5, .domainname { 218 | clear: both; 219 | width: auto; 220 | margin-top: 5px; 221 | background-color: #444; 222 | border: 1px solid #333333; 223 | color: white; 224 | background-image: -webkit-linear-gradient(top,#444,#222); 225 | background-image: -moz-linear-gradient(top,#444,#222); 226 | background-image: -ms-linear-gradient(top,#444,#222); 227 | background-image: -o-linear-gradient(top,#444,#222); 228 | background-image: linear-gradient(top,#444,#222); 229 | } 230 | .box5:active { 231 | -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 232 | -ms-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 233 | -o-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 234 | -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 235 | box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); 236 | } 237 | .box5:focus { 238 | -moz-box-shadow: inset 0 0 0 1px #000; 239 | -ms-box-shadow: inset 0 0 0 1px #000; 240 | -o-box-shadow: inset 0 0 0 1px #000; 241 | -webkit-box-shadow: inset 0 0 0 1px #000; 242 | box-shadow: inset 0 0 0 1px #000; 243 | outline: 1px solid #EFEFEF; 244 | outline: 0 transparent; 245 | border: 1px solid black; 246 | border: 1px solid transparent; 247 | } 248 | .box5:hover { 249 | border: 1px solid #222222; 250 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 251 | background-color: #444; 252 | background-image: -webkit-linear-gradient(top,#222,#444); 253 | background-image: -moz-linear-gradient(top,#222,#444); 254 | background-image: -ms-linear-gradient(top,#222,#444); 255 | background-image: -o-linear-gradient(top,#222,#444); 256 | background-image: linear-gradient(top,#222,#444); 257 | -moz-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 258 | -ms-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 259 | -o-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 260 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); 261 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 262 | } 263 | 264 | /* Temp. Permissions */ 265 | .allowsession, .prevoke, .clearglobaltemp { 266 | clear: both; 267 | margin-left: 0px; 268 | margin-right: 0px; 269 | margin-bottom: 0px; 270 | } -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /html/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /html/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 |
22 |
23 | 24 | -------------------------------------------------------------------------------- /html/recents.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ScriptSafe Log 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |
17 |
18 | ScriptSafe 19 |
20 |
21 |

22 |
23 |
24 |
25 | 29 |
30 |
31 |
32 |
33 |
34 |
TimeItemTypeTab URLOptions
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
TimeItemTypeTab URLOptions
44 |
45 |
46 |
47 |
48 |
49 |
50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /html/updated.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ScriptSafe Updated! 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 |
16 |
17 | ScriptSafe
by Andrew Y.

18 | ScriptSafe: Chrome / Firefox / Opera | Github | Website | Beta Testing | Submit Issues
19 | Changelog (Version History) | Help Translate! 20 |
21 |
22 |
23 | 24 | 25 | 26 |

27 | To support development, click the heart :)
Bitcoin: 39VJ5L9Yd6WocG6r88uE7ZZnM5J2M5bW92 28 |

29 | Options 30 |
31 |
32 |
33 |
34 |

Updated to v! (Tuesday, December 12, 2017)

35 |
36 |

ScriptSafe is on Chrome, Opera, and now: Firefox!

My sincere thanks to all testers, translators, and users for your support over the past 6 years.

37 |

In this release you will find the following updates:

38 |
    39 |
  • v1.0.9.3:
      40 |
    • Added ability to temporarily disable ScriptSafe for a set time via the panel (useful if buying something online)
    • 41 |
    • Added ability to selectively allow Browser Plugins Enumeration
    • 42 |
    • Added ability to randomize user agents: on every request or every x minutes
    • 43 |
    • Minor panel tweaks
    • 44 |
    • Minor user agent fix
    • 45 |
    • Updated unwanted content providers list
    • 46 |
  • 47 |
48 |

I have put together some documentation for ScriptSafe, including "Getting Started" instructions.

49 |

If you run into any issues, please create an issue in Github.

50 |

I am quite active on Twitter, so if you don't mind the occasional cat tweet, you are free to follow me: @andryou.

51 |

Thank you,
52 | -Andrew

53 |
54 |
55 |
56 |

57 | 58 | 59 |

60 |

61 | 62 |

63 |
64 |
65 |

Just as a note: ScriptSafe does not have any backdoors, nor does it contact any third-party server at any point in time. ScriptSafe was created by one ordinary guy (me), lovingly coded in my bedroom, without any intention other than to give you back control of the Internet. ScriptSafe is released under the GNU GPLv3 license for true open-source freedom.

You can go through the code on Github (https://github.com/andryou/scriptsafe) AND the actual instance installed on your computer by going to C:\Users\**your username**\AppData\Local\Google\Chrome\User Data\Default\Extensions\oiigbmnaadbkfbmpbfijlflahbdbdgdf (for non-Windows users, search for a folder named oiigbmnaadbkfbmpbfijlflahbdbdgdf)

66 |
67 |
68 |
69 | 70 | 71 | 72 |

Bitcoin: 39VJ5L9Yd6WocG6r88uE7ZZnM5J2M5bW92

73 | 74 | ScriptSafe: Chrome / Firefox / Opera | Github | Website | Beta Testing | Submit Issues
75 | Changelog (Version History) 76 |
77 |
78 |
79 | Translations: Chinese - Simplified (Chiuwing LUK), Chinese - Traditional (Sam Lee), Czech (callipso), Dutch (Robert J. Klop), French (Marc0303), German (Daniel Neubauer (d4nin3u), Daniel Ring), Hungarian (Calmarius), Italian (Ezio Tescari), Japanese (noushibou, たこすけ), Korean (ARMO), Latvian (Hudozhnik), Polish (Galileusz), Romanian (Sirius98), Russian (WatsonRus), Spanish (Enrique Arróniz Ramos), Swedish (Guy Fredlund) 80 |
81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /img/IconAllowed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/IconAllowed.png -------------------------------------------------------------------------------- /img/IconDisabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/IconDisabled.png -------------------------------------------------------------------------------- /img/IconForbidden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/IconForbidden.png -------------------------------------------------------------------------------- /img/IconTemp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/IconTemp.png -------------------------------------------------------------------------------- /img/heartbig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/heartbig.png -------------------------------------------------------------------------------- /img/heartsmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/heartsmall.png -------------------------------------------------------------------------------- /img/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/icon128.png -------------------------------------------------------------------------------- /img/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/icon16.png -------------------------------------------------------------------------------- /img/icon24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/icon24.png -------------------------------------------------------------------------------- /img/icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/icon32.png -------------------------------------------------------------------------------- /img/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andryou/scriptsafe/9627e4ccc5966eed7527d669d3cd0332236c1210/img/icon48.png -------------------------------------------------------------------------------- /js/common.js: -------------------------------------------------------------------------------- 1 | // ScriptSafe - Copyright (C) andryou 2 | // Distributed under the terms of the GNU General Public License 3 | // The GNU General Public License can be found in the gpl.txt file. Alternatively, see . 4 | 'use strict'; 5 | function baddies(src, amode, antisocial, lookupmode) { 6 | lookupmode = lookupmode || 1; 7 | var dmn = extractDomainFromURL(src); 8 | var topDomain = getDomain(dmn); 9 | if (dmn.indexOf(".") == -1 && src.indexOf(".") != -1) dmn = src; 10 | if (antisocial == 'true' && (antisocial2.indexOf(dmn) != -1 || antisocial1.indexOf(topDomain) != -1 || src.indexOf("digg.com/tools/diggthis.js") != -1 || src.indexOf("/googleapis.client__plusone.js") != -1 || src.indexOf("apis.google.com/js/plusone.js") != -1 || src.indexOf(".facebook.com/connect") != -1 || src.indexOf(".facebook.com/plugins") != -1 || src.indexOf(".facebook.com/widgets") != -1 || src.indexOf(".fbcdn.net/connect.php/js") != -1 || src.indexOf(".stumbleupon.com/hostedbadge") != -1 || src.indexOf(".youtube.com/subscribe_widget") != -1 || src.indexOf(".ytimg.com/yt/jsbin/www-subscribe-widget") != -1 || src.indexOf("apis.google.com/js/platform.js") != -1 || src.indexOf("plus.google.com/js/client:plusone.js") != -1 || src.indexOf("linkedin.com/countserv/count/share") != -1)) 11 | return '2'; 12 | if ((amode == 'relaxed' && domainCheck(dmn, lookupmode) != '0') || amode == 'strict') { 13 | if (binarySearch(yoyo1, topDomain) != -1) return '1'; 14 | if (binarySearch(yoyo2, dmn) != -1) return '1'; 15 | } 16 | return false; 17 | } 18 | function thirdParty(url, taburl) { 19 | if (url) { 20 | var url = extractDomainFromURL(url); 21 | var documentHost; 22 | if (taburl === undefined) documentHost = window.location.hostname; 23 | else documentHost = taburl; 24 | url = url.replace(/\.+$/, ""); 25 | documentHost = documentHost.replace(/\.+$/, ""); 26 | if (url == documentHost) return false; // if they match exactly (same domain), our job here is done 27 | // handle IP addresses (if we're still here, then it means the ip addresses don't match) 28 | if (url.match(/^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$/g) || documentHost.match(/^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$/g) || url.match(/^(?:\[[A-Fa-f0-9:.]+\])(:[0-9]+)?$/g) || documentHost.match(/^(?:\[[A-Fa-f0-9:.]+\])(:[0-9]+)?$/g)) return true; 29 | // now that IP addresses have been processed, carry on. 30 | var elConst = url.split('.').reverse(); // work backwards :) 31 | var pageConst = documentHost.split('.').reverse(); 32 | var max = elConst.length; 33 | if (max < pageConst.length) 34 | max = pageConst.length; 35 | var matchCount = 0; 36 | for (var i=0;i 2) return false; 41 | else if (matchCount == 2 && ((pageConst[1] == 'co' || pageConst[1] == 'com' || pageConst[1] == 'net') && pageConst[0] != 'com')) return true; 42 | if (matchCount == 2) return false; 43 | return true; 44 | } 45 | return false; // doesn't have a URL 46 | } 47 | function extractDomainFromURL(url) { // credit: NotScripts 48 | if (!url) return ""; 49 | if (url.indexOf("://") != -1) url = url.substr(url.indexOf("://") + 3); 50 | if (url.indexOf("/") != -1) url = url.substr(0, url.indexOf("/")); 51 | if (url.indexOf("@") != -1) url = url.substr(url.indexOf("@") + 1); 52 | if (url.match(/^(?:\[[A-Fa-f0-9:.]+\])(:[0-9]+)?$/g)) { 53 | if (url.indexOf("]:") != -1) return url.substr(0, url.indexOf("]:")+1); 54 | return url; 55 | } 56 | if (url.indexOf(":") > 0) url = url.substr(0, url.indexOf(":")); 57 | return url; 58 | } 59 | function getDomain(url, type) { 60 | if (url && !url.match(/^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$/g) && !url.match(/^(?:\[[A-Fa-f0-9:.]+\])(:[0-9]+)?$/g) && url.indexOf(".") != -1) { 61 | if (url[0] == '*' && url[1] == '*' && url[2] == '.') return url.substr(3); 62 | url = url.split(".").reverse(); 63 | var domain; 64 | var len = url.length; 65 | if (len > 1) { 66 | if (type === undefined) domain = url[1]+'.'+url[0]; 67 | else domain = url[1]; 68 | if ((url[1] == 'co' || url[1] == 'com' || url[1] == 'net') && url[0] != 'com' && len > 2) { 69 | if (type === undefined) domain = url[2]+'.'+url[1]+'.'+url[0]; 70 | else domain = url[2]; 71 | } 72 | } 73 | return domain; 74 | } 75 | return url; 76 | } 77 | function in_array(needle, haystack) { 78 | if (!haystack || !needle) return false; 79 | if (needle.indexOf('www.') == 0) needle = needle.substring(4); 80 | if (binarySearch(haystack, needle) != -1) return '1'; 81 | for (var i in haystack) { 82 | if (haystack[i].indexOf("*") == -1 && haystack[i].indexOf("?") == -1) continue; 83 | if (new RegExp('^(?:'+haystack[i].replace(/\./g, '\\.').replace(/^\[/, '\\[').replace(/\]$/, '\\]').replace(/\?/g, '.').replace(/^\*\*\\./, '(?:.+\\.|^)').replace(/\*/g, '[^.]+')+')$').test(needle)) return '1'; 84 | } 85 | return false; 86 | } 87 | // https://github.com/Olical/binary-search/blob/master/src/binarySearch.js 88 | function binarySearch(list, item) { 89 | var min = 0; 90 | var max = list.length - 1; 91 | var guess; 92 | var bitwise = (max <= 2147483647) ? true : false; 93 | if (bitwise) { 94 | while (min <= max) { 95 | guess = (min + max) >> 1; 96 | if (list[guess] === item) { return guess; } 97 | else { 98 | if (list[guess] < item) { min = guess + 1; } 99 | else { max = guess - 1; } 100 | } 101 | } 102 | } else { 103 | while (min <= max) { 104 | guess = Math.floor((min + max) / 2); 105 | if (list[guess] === item) { return guess; } 106 | else { 107 | if (list[guess] < item) { min = guess + 1; } 108 | else { max = guess - 1; } 109 | } 110 | } 111 | } 112 | return -1; 113 | } -------------------------------------------------------------------------------- /js/recents.js: -------------------------------------------------------------------------------- 1 | // ScriptSafe - Copyright (C) andryou 2 | // Distributed under the terms of the GNU General Public License 3 | // The GNU General Public License can be found in the gpl.txt file. Alternatively, see . 4 | 'use strict'; 5 | var version = '1.0.9.3'; 6 | var bkg = chrome.extension.getBackgroundPage(); 7 | var syncstatus; 8 | document.addEventListener('DOMContentLoaded', function () { 9 | loadOptions(); 10 | $(".closepage").click(closeOptions); 11 | $(".refreshpage").click(function(e) { chrome.tabs.reload(); }); 12 | }); 13 | function closeOptions() { 14 | window.open('', '_self', '');window.close(); 15 | } 16 | function padZeros(val) { 17 | return val<10 ? '0'+val : val; 18 | } 19 | function loadOptions() { 20 | $("#title").html("ScriptSafe v"+version); 21 | var allowedarr = JSON.parse(bkg.getRecents('allowed')); 22 | var blockedarr = JSON.parse(bkg.getRecents('blocked')); 23 | var blockedarrcount = blockedarr.length; 24 | var annoyances = localStorage['annoyances']; 25 | var annoyancesmode = localStorage['annoyancesmode']; 26 | var antisocial = localStorage['antisocial']; 27 | var mode = localStorage['mode']; 28 | $("#blockcount").text(blockedarrcount); 29 | if (blockedarrcount) { 30 | blockedarr.reverse(); 31 | for (var i = 0; i < blockedarrcount; i++) { 32 | /* 33 | 0 = time 34 | 1 = request url 35 | 2 = type 36 | 3 = extracted request domain 37 | 4 = full tab url 38 | 5 = request domain check 39 | 6 = tab domain check 40 | 7 = baddiesCheck 41 | 8 = fingerprint or not 42 | */ 43 | var entryTime = new Date(blockedarr[i][0]); 44 | var itemdomain = blockedarr[i][3]; 45 | var fpitemdomain = blockedarr[i][3]; 46 | if (blockedarr[i][2] == 'NOSCRIPT') itemdomain = 'no.script'; 47 | else if (blockedarr[i][2] == 'WEBBUG') itemdomain = 'web.bug'; 48 | else if (blockedarr[i][2] == 'Canvas Fingerprint') itemdomain = 'canvas.fingerprint'; 49 | else if (blockedarr[i][2] == 'Canvas Font Access') itemdomain = 'canvas.font.access'; 50 | else if (blockedarr[i][2] == 'Audio Fingerprint') itemdomain = 'audio.fingerprint'; 51 | else if (blockedarr[i][2] == 'WebGL Fingerprint') itemdomain = 'webgl.fingerprint'; 52 | else if (blockedarr[i][2] == 'Battery Fingerprint') itemdomain = 'battery.fingerprint'; 53 | else if (blockedarr[i][2] == 'Device Enumeration') itemdomain = 'device.enumeration'; 54 | else if (blockedarr[i][2] == 'Gamepad Enumeration') itemdomain = 'gamepad.enumeration'; 55 | else if (blockedarr[i][2] == 'WebVR Enumeration') itemdomain = 'webvr.enumeration'; 56 | else if (blockedarr[i][2] == 'Bluetooth Enumeration') itemdomain = 'bluetooth.enumeration'; 57 | else if (blockedarr[i][2] == 'Spoofed Timezone') itemdomain = 'spoofed.timezone'; 58 | else if (blockedarr[i][2] == 'Client Rectangles') itemdomain = 'client.rectangles'; 59 | else if (blockedarr[i][2] == 'Clipboard Interference') itemdomain = 'clipboard.interference'; 60 | else if (blockedarr[i][2] == 'Data URL') itemdomain = 'data.url'; 61 | else if (blockedarr[i][2] == 'Browser Plugins Enumeration') itemdomain = 'browser.plugins.enumeration'; 62 | var itemdomainfriendly = itemdomain.replace(/[.\[\]:]/g,"_"); 63 | var fpitemdomainfriendly = fpitemdomain.replace(/[.\[\]:]/g,"_"); 64 | var clearBtn = ''; 65 | if (blockedarr[i][5] == '1') clearBtn = ''+bkg.getLocale("clear")+''; 66 | if (blockedarr[i][2] == 'NOSCRIPT' || blockedarr[i][2] == 'WEBBUG') { 67 | $("#blocked > table > tbody").append(''+padZeros(entryTime.getHours())+':'+padZeros(entryTime.getMinutes())+':'+padZeros(entryTime.getSeconds())+''+truncate(blockedarr[i][1])+''+blockedarr[i][2]+''+truncate(blockedarr[i][4])+' '); 68 | } else if (blockedarr[i][7] && ((annoyances == 'true' && annoyancesmode == 'strict' && blockedarr[i][5] == '-1' && blockedarr[i][7] == '1') || (antisocial == 'true' && blockedarr[i][7] == '2'))) { 69 | var unwantedType = ''; 70 | if (blockedarr[i][7] == '1') unwantedType = bkg.getLocale("unwanted"); 71 | else if (blockedarr[i][7] == '2') unwantedType = bkg.getLocale("antisocialpopup"); 72 | $("#blocked > table > tbody").append(''+padZeros(entryTime.getHours())+':'+padZeros(entryTime.getMinutes())+':'+padZeros(entryTime.getSeconds())+''+truncate(blockedarr[i][1])+''+blockedarr[i][2]+''+truncate(blockedarr[i][4])+''+unwantedType+''); 73 | } else if (blockedarr[i][8]) { 74 | $("#blocked > table > tbody").append(''+padZeros(entryTime.getHours())+':'+padZeros(entryTime.getMinutes())+':'+padZeros(entryTime.getSeconds())+''+truncate(blockedarr[i][1])+''+blockedarr[i][2]+''+truncate(blockedarr[i][4])+''+clearBtn+''+bkg.getLocale("allow")+''+bkg.getLocale("temp")+''); 75 | } else { 76 | var unwantedType = ''; 77 | if (blockedarr[i][7] == '1') unwantedType = ''+bkg.getLocale("unwanted")+''; 78 | else if (blockedarr[i][7] == '2') unwantedType = ''+bkg.getLocale("antisocialpopup")+''; 79 | $("#blocked > table > tbody").append(''+padZeros(entryTime.getHours())+':'+padZeros(entryTime.getMinutes())+':'+padZeros(entryTime.getSeconds())+''+truncate(blockedarr[i][1])+''+blockedarr[i][2]+''+truncate(blockedarr[i][4])+''+clearBtn+''+bkg.getLocale("allow")+''+bkg.getLocale("trust")+''+unwantedType+''+bkg.getLocale("temp")+''); 80 | } 81 | if (mode == 'allow') { 82 | if (bkg.checkTemp(itemdomain)) { 83 | $("#blocked [rel='"+itemdomainfriendly+"'] .x_bypass").addClass("selected"); 84 | $("#blocked [rel='"+itemdomainfriendly+"'] .box4").hide(); 85 | } 86 | } 87 | } 88 | } else $("#blocked").hide(); 89 | var allowedarrcount = allowedarr.length; 90 | $("#allowcount").text(allowedarrcount); 91 | if (allowedarrcount) { 92 | allowedarr.reverse(); 93 | for (var i = 0; i < allowedarrcount; i++) { 94 | /* 95 | 0 = time 96 | 1 = request url 97 | 2 = type 98 | 3 = extracted request domain 99 | 4 = full tab url 100 | 5 = request domain list 101 | 6 = baddiesCheck 102 | 7 = fingerprint 103 | */ 104 | var entryTime = new Date(allowedarr[i][0]); 105 | var itemdomain = allowedarr[i][3]; 106 | var fpitemdomain = allowedarr[i][3]; 107 | if (allowedarr[i][2] == 'Canvas Fingerprint') itemdomain = 'canvas.fingerprint'; 108 | else if (allowedarr[i][2] == 'Canvas Font Access') itemdomain = 'canvas.font.access'; 109 | else if (allowedarr[i][2] == 'Audio Fingerprint') itemdomain = 'audio.fingerprint'; 110 | else if (allowedarr[i][2] == 'WebGL Fingerprint') itemdomain = 'webgl.fingerprint'; 111 | else if (allowedarr[i][2] == 'Battery Fingerprint') itemdomain = 'battery.fingerprint'; 112 | else if (allowedarr[i][2] == 'Device Enumeration') itemdomain = 'device.enumeration'; 113 | else if (allowedarr[i][2] == 'Gamepad Enumeration') itemdomain = 'gamepad.enumeration'; 114 | else if (allowedarr[i][2] == 'WebVR Enumeration') itemdomain = 'webvr.enumeration'; 115 | else if (allowedarr[i][2] == 'Bluetooth Enumeration') itemdomain = 'bluetooth.enumeration'; 116 | else if (allowedarr[i][2] == 'Client Rectangles') itemdomain = 'client.rectangles'; 117 | else if (allowedarr[i][2] == 'Clipboard Interference') itemdomain = 'clipboard.interference'; 118 | else if (allowedarr[i][2] == 'Browser Plugins Enumeration') itemdomain = 'browser.plugins.enumeration'; 119 | var itemdomainfriendly = itemdomain.replace(/[.\[\]:]/g,"_"); 120 | var fpitemdomainfriendly = fpitemdomain.replace(/[.\[\]:]/g,"_"); 121 | var clearBtn = ''; 122 | if (allowedarr[i][5] == '0' || (allowedarr[i][7] && allowedarr[i][5] == '1')) clearBtn = ''+bkg.getLocale("clear")+''; 123 | if (allowedarr[i][7]) { 124 | $("#allowed > table > tbody").append(''+padZeros(entryTime.getHours())+':'+padZeros(entryTime.getMinutes())+':'+padZeros(entryTime.getSeconds())+''+truncate(allowedarr[i][1])+''+allowedarr[i][2]+''+truncate(allowedarr[i][4])+''+clearBtn+''+bkg.getLocale("temp")+''); 125 | } else { 126 | $("#allowed > table > tbody").append(''+padZeros(entryTime.getHours())+':'+padZeros(entryTime.getMinutes())+':'+padZeros(entryTime.getSeconds())+''+truncate(allowedarr[i][1])+''+allowedarr[i][2]+''+truncate(allowedarr[i][4])+''+clearBtn+''+bkg.getLocale("deny")+''+bkg.getLocale("distrust")+''+bkg.getLocale("temp")+''); 127 | } 128 | if (mode == 'block') { 129 | if (bkg.checkTemp(itemdomain)) { 130 | $("#allowed [rel='"+itemdomainfriendly+"'] .x_bypass").addClass("selected"); 131 | $("#allowed [rel='"+itemdomainfriendly+"'] .box4").hide(); 132 | } 133 | } 134 | if (allowedarr[i][7] && allowedarr[i][5] == '2') $('#allowed [rel="'+fpitemdomainfriendly+'"] [data-domain="'+itemdomain+'"] .x_bypass').addClass('selected'); 135 | } 136 | } else $("#allowed").hide(); 137 | $(".box").bind("click", handleclick); 138 | } 139 | function truncate(str) { 140 | if (str.length > 54) 141 | return str.substring(0, 54)+'...'; 142 | return str; 143 | } 144 | function notification(msg) { 145 | $('#message').html(msg).stop().fadeIn("slow").delay(2000).fadeOut("slow") 146 | } 147 | function processCommand() { 148 | syncstatus = bkg.freshSync(); 149 | if (syncstatus) { 150 | notification(bkg.getLocale("settingssavesync")); 151 | } else { 152 | notification(bkg.getLocale("settingssave")); 153 | } 154 | } 155 | function handleclick() { 156 | var listType = $(this).parent().parent().parent().parent().parent().attr('id'); 157 | var url = $(this).parent().attr('rel'); 158 | var val = $(this).attr('rel'); 159 | var selected = $(this).hasClass("selected"); 160 | var clear = $(this).hasClass("box4"); 161 | if (val != 2 && selected) return; 162 | if ($(this).parent().hasClass("fpchoices")) { 163 | var fpType = $(this).parent().attr('data-domain'); 164 | var fpList; 165 | if (fpType == 'canvas.fingerprint') fpList = 'fpCanvas'; 166 | else if (fpType == 'canvas.font.access') fpList = 'fpCanvasFont'; 167 | else if (fpType == 'audio.fingerprint') fpList = 'fpAudio'; 168 | else if (fpType == 'webgl.fingerprint') fpList = 'fpWebGL'; 169 | else if (fpType == 'battery.fingerprint') fpList = 'fpBattery'; 170 | else if (fpType == 'device.enumeration') fpList = 'fpDevice'; 171 | else if (fpType == 'gamepad.enumeration') fpList = 'fpGamepad'; 172 | else if (fpType == 'webvr.enumeration') fpList = 'fpWebVR'; 173 | else if (fpType == 'bluetooth.enumeration') fpList = 'fpBluetooth'; 174 | else if (fpType == 'client.rectangles') fpList = 'fpClientRectangles'; 175 | else if (fpType == 'clipboard.interference') fpList = 'fpClipboard'; 176 | else if (fpType == 'browser.plugins.enumeration') fpList = 'fpBrowserPlugins'; 177 | if (clear) { 178 | bkg.fpDomainHandler('**.'+bkg.getDomain(url), fpList, -1); 179 | bkg.fpDomainHandler(url, fpList, -1); 180 | $(this).hide(); 181 | $("#"+listType+" .fpchoices[rel='"+url+"'][data-domain='"+fpType+"'] .box4").hide(); 182 | } else { 183 | if (val < 2) { 184 | bkg.fpDomainHandler(url, fpList, -1, 1); 185 | chrome.runtime.sendMessage({reqtype: "save-fp", url: url, list: fpList}); 186 | $(this).addClass("selected"); 187 | $("#"+listType+" .fpchoices[rel='"+url+"'][data-domain='"+fpType+"'] .x_whitelist").addClass("selected"); 188 | } else if (val == 2) { 189 | if (selected) { 190 | chrome.runtime.sendMessage({reqtype: "remove-temp-fp", url: url, list: fpList}); 191 | $(this).removeClass("selected"); 192 | $("#"+listType+" .fpchoices[rel='"+url+"'][data-domain='"+fpType+"'] .x_bypass").removeClass("selected"); 193 | } else { 194 | chrome.runtime.sendMessage({reqtype: "temp-fp", url: url, list: fpList}); 195 | $(this).addClass("selected"); 196 | $("#"+listType+" .fpchoices[rel='"+url+"'][data-domain='"+fpType+"'] .x_bypass").addClass("selected"); 197 | } 198 | } 199 | } 200 | } else { 201 | if (clear) { 202 | var trustType = bkg.trustCheck(url); 203 | if (trustType) { 204 | bkg.domainHandler('**.'+bkg.getDomain(url), 2); 205 | bkg.domainHandler('**.'+bkg.getDomain(url), 2, 1); 206 | } else { 207 | bkg.domainHandler(url, 2); 208 | bkg.domainHandler(url, 2, 1); 209 | } 210 | $(this).hide(); 211 | $("#"+listType+" .choices[rel='"+url+"'] .box4").hide(); 212 | } else { 213 | if (val < 2) { 214 | bkg.domainHandler(url, '2', '1'); 215 | chrome.runtime.sendMessage({reqtype: "save", url: url, list: val}); 216 | $(this).addClass("selected"); 217 | $("#"+listType+" .choices[rel='"+url+"'] .x_whitelist").addClass("selected"); 218 | } else if (val == 2) { 219 | if (selected) { 220 | chrome.runtime.sendMessage({reqtype: "remove-temp", url: url}); 221 | $(this).removeClass("selected"); 222 | $("#"+listType+" .choices[rel='"+url+"'] .x_bypass").removeClass("selected"); 223 | } else { 224 | var mode; 225 | if (listType == 'blocked') mode = 'block'; 226 | else mode = 'allow'; 227 | chrome.runtime.sendMessage({reqtype: "temp", url: url, mode: mode}); 228 | $(this).addClass("selected"); 229 | $("#"+listType+" .choices[rel='"+url+"'] .x_bypass").addClass("selected"); 230 | } 231 | } else if (val == 3) { 232 | bkg.topHandler(url, 0); 233 | val = 0; 234 | $(this).addClass("selected"); 235 | $(".box1", $(this).parent()).addClass("selected"); 236 | } else if (val == 4) { 237 | bkg.topHandler(url, 1); 238 | val = 1; 239 | $(this).addClass("selected"); 240 | $(".box4", $(this).parent()).addClass("selected"); 241 | } 242 | } 243 | } 244 | bkg.clearRecents(); 245 | notification(bkg.getLocale("settingssave")); 246 | } -------------------------------------------------------------------------------- /js/updated.js: -------------------------------------------------------------------------------- 1 | // ScriptSafe - Copyright (C) andryou 2 | // Distributed under the terms of the GNU General Public License 3 | // The GNU General Public License can be found in the gpl.txt file. Alternatively, see . 4 | var bkg = chrome.extension.getBackgroundPage(); 5 | document.addEventListener('DOMContentLoaded', function () { 6 | var version = '1.0.9.3'; 7 | $("#title").html("ScriptSafe v"+version); 8 | $('#versionno').html(version); 9 | $("#loadoptionspage").click(function() { location.href='options.html'; }); 10 | $("#closepage").click(function() { window.open('', '_self', '');window.close(); }); 11 | $("#disableNotification").click(disableNotification); 12 | $("#loadoptionspage").val(bkg.getLocale("options")); 13 | $(".i18_options").html(bkg.getLocale("options")); 14 | $(".i18_support").html(bkg.getLocale("support")); 15 | $("#closepage").val(bkg.getLocale("close")); 16 | $("#disableNotification").val(bkg.getLocale("dontshowpage")); 17 | }); 18 | function disableNotification() { 19 | if (confirm(bkg.getLocale("updatedisable"))) { 20 | localStorage['updatenotify'] = 'false'; 21 | $('#message').html(bkg.getLocale("updatedisablemessage")).stop().fadeIn("slow").delay(2000).fadeOut("slow"); 22 | } 23 | } -------------------------------------------------------------------------------- /js/webrtctest.js: -------------------------------------------------------------------------------- 1 | // ScriptSafe - Copyright (C) andryou 2 | // Distributed under the terms of the GNU General Public License 3 | // The GNU General Public License can be found in the gpl.txt file. Alternatively, see . 4 | 'use strict'; 5 | var rtcstatus = null; 6 | var rtctest = self.RTCPeerConnection || self.webkitRTCPeerConnection; 7 | try { 8 | if (rtctest) rtcstatus = new rtctest(null); 9 | } catch (exception) { 10 | // do nothing 11 | } 12 | if (rtcstatus !== null) { 13 | rtcstatus.close(); 14 | } 15 | parent.testWebRTC((rtcstatus !== null)); -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "background": { 3 | "page": "html/background.html" 4 | }, 5 | "browser_action": { 6 | "default_icon": "img/IconForbidden.png", 7 | "default_popup": "html/popup.html", 8 | "default_title": "ScriptSafe" 9 | }, 10 | "commands": { 11 | "temppage" : { 12 | "suggested_key": { 13 | "default": "Ctrl+Shift+S" 14 | }, 15 | "description": "__MSG_hotkeystoggle__" 16 | }, 17 | "removetemppage": { 18 | "suggested_key": { 19 | "default": "Ctrl+Shift+R" 20 | }, 21 | "description": "__MSG_hotkeysremove__" 22 | }, 23 | "removetempall": { 24 | "suggested_key": { 25 | "default": "Ctrl+Shift+Q" 26 | }, 27 | "description": "__MSG_hotkeysremoveall__" 28 | } 29 | }, 30 | "content_scripts": [ { 31 | "all_frames": true, 32 | "js": [ "js/jquery.js", "js/common.js", "js/yoyo.js", "js/ss.js" ], 33 | "matches": [ "http://*/*", "https://*/*" ], 34 | "run_at": "document_start" 35 | } ], 36 | "description": "__MSG_appdescription__", 37 | "icons": { 38 | "128": "img/icon128.png", 39 | "16": "img/icon16.png", 40 | "24": "img/icon24.png", 41 | "32": "img/icon32.png", 42 | "48": "img/icon48.png" 43 | }, 44 | "default_locale": "en", 45 | "manifest_version": 2, 46 | "minimum_chrome_version": "6", 47 | "name": "ScriptSafe", 48 | "options_page": "html/options.html", 49 | "permissions": [ "http://*/*", "https://*/*", "tabs", "unlimitedStorage", "webRequest", "webRequestBlocking", "storage", "notifications", "privacy", "contextMenus" ], 50 | "version": "1.0.9.3" 51 | } 52 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # ScriptSafe 2 | A browser extension that gives users control of the web and more secure browsing while emphasizing simplicity and intuitiveness. 3 | 4 | **Install from the Chrome Web Store: https://chrome.google.com/webstore/detail/scriptsafe/oiigbmnaadbkfbmpbfijlflahbdbdgdf** 5 | 6 | **Install from Firefox Add-ons: https://addons.mozilla.org/firefox/addon/script-safe/** 7 | 8 | **Install from Opera Add-ons: https://addons.opera.com/en/extensions/details/scriptsafe-2/** 9 | 10 | More information (quick start, feature list, domain expressions/examples, and more) here: **https://www.andryou.com/scriptsafe/** 11 | 12 | Bitcoin: **39VJ5L9Yd6WocG6r88uE7ZZnM5J2M5bW92** --------------------------------------------------------------------------------