* Use new CrossFrameAPI for popup proxy communication * Remove use of old cross-frame communication classes * Remove use of old cross-frame communication files * Make the crossFrame object a member of the api object
1160 lines
70 KiB
HTML
1160 lines
70 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||
<title>Yomichan Options</title>
|
||
<link rel="icon" type="image/png" href="/mixed/img/icon16.png" sizes="16x16">
|
||
<link rel="icon" type="image/png" href="/mixed/img/icon19.png" sizes="19x19">
|
||
<link rel="icon" type="image/png" href="/mixed/img/icon32.png" sizes="32x32">
|
||
<link rel="icon" type="image/png" href="/mixed/img/icon38.png" sizes="38x38">
|
||
<link rel="icon" type="image/png" href="/mixed/img/icon48.png" sizes="48x48">
|
||
<link rel="icon" type="image/png" href="/mixed/img/icon64.png" sizes="64x64">
|
||
<link rel="icon" type="image/png" href="/mixed/img/icon128.png" sizes="128x128">
|
||
<link rel="stylesheet" type="text/css" href="/mixed/lib/bootstrap/css/bootstrap.min.css">
|
||
<link rel="stylesheet" type="text/css" href="/mixed/lib/bootstrap/css/bootstrap-theme.min.css">
|
||
<link rel="stylesheet" type="text/css" href="/bg/css/settings.css">
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<div class="page-header">
|
||
<h1>Yomichan Options</h1>
|
||
</div>
|
||
|
||
<div class="profile-form ignore-form-changes">
|
||
<h3>Profiles</h3>
|
||
|
||
<p class="help-block">
|
||
Profiles allow you to create multiple configurations and quickly switch between them or use them in different contexts.
|
||
</p>
|
||
|
||
<div class="form-group">
|
||
<label for="profile-active">Active profile</label>
|
||
<select class="form-control" id="profile-active"></select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="profile-target">Modifying profile</label>
|
||
<div class="input-group">
|
||
<div class="input-group-btn">
|
||
<button class="btn btn-default" id="profile-add" title="Add"><span class="glyphicon glyphicon-plus"></span></button>
|
||
<button class="btn btn-default" id="profile-move-up" title="Move up"><span class="glyphicon glyphicon-arrow-up"></span></button>
|
||
<button class="btn btn-default" id="profile-move-down" title="Move down"><span class="glyphicon glyphicon-arrow-down"></span></button>
|
||
<button class="btn btn-default" id="profile-copy" title="Copy"><span class="glyphicon glyphicon-copy"></span></button>
|
||
</div>
|
||
<select class="form-control profile-form-manual" id="profile-target"></select>
|
||
<div class="input-group-btn">
|
||
<button class="btn btn-danger" id="profile-remove" title="Remove"><span class="glyphicon glyphicon-remove"></span></button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="profile-name">Profile name</label>
|
||
<input type="text" id="profile-name" class="form-control">
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label>Usage conditions</label>
|
||
|
||
<p class="help-block">
|
||
Usage conditions can be assigned such that certain profiles are automatically used in different contexts.
|
||
For example, when <a href="#popup-content-scanning">Popup Content Scanning</a> is enabled, different profiles can be used
|
||
depending on the level of the popup.
|
||
</p>
|
||
|
||
<p class="help-block">
|
||
Conditions are organized into groups which represent how the conditions are checked.
|
||
If all of the conditions in any group are met, then the profile will automatically be used for that context.
|
||
If no conditions are specified, the profile will only be used if it is selected as the <strong>Active profile</strong>.
|
||
</p>
|
||
|
||
<div class="condition-groups" id="profile-condition-groups"></div>
|
||
</div>
|
||
<div class="form-group">
|
||
<button class="btn btn-default" id="profile-add-condition-group">Add Condition Group</button>
|
||
</div>
|
||
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="profile-copy-modal">
|
||
<div class="modal-dialog modal-dialog-centered">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title">Copy Profile</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<p>Select which profile to copy options from:</p>
|
||
<select class="form-control" id="profile-copy-source"></select>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||
<button type="button" class="btn btn-primary" id="profile-copy-confirm">Copy Profile</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="profile-remove-modal">
|
||
<div class="modal-dialog modal-dialog-centered">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title">Confirm profile removal</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
Are you sure you want to delete the profile <em id="profile-remove-modal-profile-name"></em>?
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||
<button type="button" class="btn btn-danger" id="profile-remove-confirm">Remove Profile</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<template id="condition-template"><div class="input-group condition">
|
||
<div class="input-group-addon condition-prefix"></div>
|
||
<div class="input-group-btn"><select class="form-control btn btn-default condition-type"><optgroup label="Type"></optgroup></select></div>
|
||
<div class="input-group-btn"><select class="form-control btn btn-default condition-operator"><optgroup label="Operator"></optgroup></select></div>
|
||
<div class="condition-line-break"></div>
|
||
<div class="condition-input"></div>
|
||
<div class="input-group-btn"><button class="btn btn-danger condition-remove" title="Remove"><span class="glyphicon glyphicon-remove"></span></button></div>
|
||
</div></template>
|
||
<template id="condition-group-separator-template"><div class="input-group">
|
||
<div class="condition-group-separator-label">OR</div>
|
||
</div></template>
|
||
<template id="condition-group-options-template"><div class="condition-group-options">
|
||
<button class="btn btn-default condition-add"><span class="glyphicon glyphicon-plus"></span></button>
|
||
</div></template>
|
||
<template id="condition-input-text-template"><input type="text" class="form-control condition-input-inner" /></template>
|
||
<template id="condition-input-select-template"><select class="form-control condition-input-inner"></select></template>
|
||
<template id="condition-input-option-template"><option></option></template>
|
||
</div>
|
||
|
||
<div>
|
||
<h3>General Options</h3>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="enable" data-setting="general.enable"> Enable content scanning</label>
|
||
</div>
|
||
|
||
<div class="checkbox ignore-form-changes" data-hide-for-browser="firefox-mobile">
|
||
<label><input type="checkbox" id="enable-clipboard-popups"> Enable native popups when copying Japanese text</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="show-usage-guide" data-setting="general.showGuide"> Show usage guide on startup</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="compact-tags" data-setting="general.compactTags"> Compact tags</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="compact-glossaries" data-setting="general.compactGlossaries"> Compact glossaries</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="show-advanced-options" data-setting="general.showAdvanced" data-transform-pre="setDocumentAttribute" data-transform-post="setDocumentAttribute" data-document-attribute="data-options-general-show-advanced"> Show advanced options</label>
|
||
</div>
|
||
|
||
<div class="checkbox options-advanced">
|
||
<label><input type="checkbox" id="popup-scale-relative-to-page-zoom" data-setting="general.popupScaleRelativeToPageZoom"> Change popup size relative to page zoom level</label>
|
||
</div>
|
||
|
||
<div class="checkbox options-advanced">
|
||
<label><input type="checkbox" id="popup-scale-relative-to-visual-viewport" data-setting="general.popupScaleRelativeToVisualViewport"> Change popup size relative to page viewport</label>
|
||
</div>
|
||
|
||
<div class="checkbox options-advanced">
|
||
<label><input type="checkbox" id="show-pitch-accent-downstep-notation" data-setting="general.showPitchAccentDownstepNotation"> Show downstep notation for pitch accents</label>
|
||
</div>
|
||
|
||
<div class="checkbox options-position">
|
||
<label><input type="checkbox" id="show-pitch-accent-position-notation" data-setting="general.showPitchAccentPositionNotation"> Show position notation for pitch accents</label>
|
||
</div>
|
||
|
||
<div class="checkbox options-advanced">
|
||
<label><input type="checkbox" id="show-pitch-accent-graph" data-setting="general.showPitchAccentGraph"> Show graph for pitch accents</label>
|
||
</div>
|
||
|
||
<div class="checkbox options-advanced">
|
||
<label><input type="checkbox" id="show-iframe-popups-in-root-frame" data-setting="general.showIframePopupsInRootFrame"> Show iframe popups in root frame</label>
|
||
</div>
|
||
|
||
<div class="checkbox options-advanced">
|
||
<label><input type="checkbox" id="show-debug-info" data-setting="general.debugInfo" data-transform-pre="setDocumentAttribute" data-transform-post="setDocumentAttribute" data-document-attribute="data-options-general-debug-info"> Show debug information</label>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="result-output-mode">Result grouping</label>
|
||
<select class="form-control" id="result-output-mode" data-setting="general.resultOutputMode" data-transform-pre="setDocumentAttribute" data-transform-post="setDocumentAttribute" data-document-attribute="data-options-general-result-output-mode">
|
||
<option value="group">Group results by term-reading pairs</option>
|
||
<option value="merge">Group results by main dictionary entry</option>
|
||
<option value="split">Split definitions to their own results</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="popup-display-mode">Popup display mode</label>
|
||
<select class="form-control" id="popup-display-mode" data-setting="general.popupDisplayMode">
|
||
<option value="default">Default</option>
|
||
<option value="full-width">Full width</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="popup-scaling-factor">Popup size multiplier</label>
|
||
<input type="number" min="0" id="popup-scaling-factor" data-setting="general.popupScalingFactor" class="form-control">
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="max-displayed-results">Maximum displayed results</label>
|
||
<input type="number" min="1" id="max-displayed-results" class="form-control" data-setting="general.maxResults">
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<div class="row">
|
||
<div class="col-xs-6">
|
||
<label for="popup-horizontal-text-position">Popup position for horizontal text</label>
|
||
<select class="form-control" id="popup-horizontal-text-position" data-setting="general.popupHorizontalTextPosition">
|
||
<option value="below">Below text</option>
|
||
<option value="above">Above text</option>
|
||
</select>
|
||
</div>
|
||
<div class="col-xs-6">
|
||
<label for="popup-vertical-text-position">Popup position for vertical text</label>
|
||
<select class="form-control" id="popup-vertical-text-position" data-setting="general.popupVerticalTextPosition">
|
||
<option value="default">Same as for horizontal text</option>
|
||
<option value="before">Before text reading direction</option>
|
||
<option value="after">After text reading direction</option>
|
||
<option value="left">Left of text</option>
|
||
<option value="right">Right of text</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<div class="row">
|
||
<div class="col-xs-6">
|
||
<label for="popup-width">Popup width <span class="label-light">(in pixels)</span></label>
|
||
<input type="number" min="1" id="popup-width" class="form-control" data-setting="general.popupWidth">
|
||
</div>
|
||
<div class="col-xs-6">
|
||
<label for="popup-height">Popup height <span class="label-light">(in pixels)</span></label>
|
||
<input type="number" min="1" id="popup-height" class="form-control" data-setting="general.popupHeight">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<div class="row">
|
||
<div class="col-xs-6">
|
||
<label for="popup-horizontal-offset">Horizontal popup offset <span class="label-light">(in pixels)</span></label>
|
||
<input type="number" min="0" id="popup-horizontal-offset" class="form-control" data-setting="general.popupHorizontalOffset">
|
||
</div>
|
||
<div class="col-xs-6">
|
||
<label for="popup-vertical-offset">Vertical popup offset <span class="label-light">(in pixels)</span></label>
|
||
<input type="number" min="0" id="popup-vertical-offset" class="form-control" data-setting="general.popupVerticalOffset">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<div class="row">
|
||
<div class="col-xs-6">
|
||
<label for="popup-horizontal-offset2">Horizontal popup offset for vertical text <span class="label-light">(in pixels)</span></label>
|
||
<input type="number" min="0" id="popup-horizontal-offset2" class="form-control" data-setting="general.popupHorizontalOffset2">
|
||
</div>
|
||
<div class="col-xs-6">
|
||
<label for="popup-vertical-offset2">Vertical popup offset for vertical text <span class="label-light">(in pixels)</span></label>
|
||
<input type="number" min="0" id="popup-vertical-offset2" class="form-control" data-setting="general.popupVerticalOffset2">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<div class="row">
|
||
<div class="col-xs-6">
|
||
<label for="popup-theme">Popup theme</label>
|
||
<select class="form-control" id="popup-theme" data-setting="general.popupTheme">
|
||
<option value="default">Light</option>
|
||
<option value="dark">Dark</option>
|
||
</select>
|
||
</div>
|
||
<div class="col-xs-6">
|
||
<label for="popup-outer-theme">Popup shadow theme</label>
|
||
<select class="form-control" id="popup-outer-theme" data-setting="general.popupOuterTheme">
|
||
<option value="auto">Auto-detect</option>
|
||
<option value="default">Light</option>
|
||
<option value="dark">Dark</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<div class="row">
|
||
<div class="col-xs-6">
|
||
<label for="custom-popup-css">Custom popup CSS</label>
|
||
<div><textarea autocomplete="off" spellcheck="false" wrap="soft" id="custom-popup-css" class="form-control" data-setting="general.customPopupCss"></textarea></div>
|
||
</div>
|
||
<div class="col-xs-6">
|
||
<label for="custom-popup-outer-css">Custom popup outer CSS</label>
|
||
<div><textarea autocomplete="off" spellcheck="false" wrap="soft" id="custom-popup-outer-css" class="form-control" data-setting="general.customPopupOuterCss" placeholder="iframe.yomichan-float { /*styles*/ }"></textarea></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group ignore-form-changes" style="display: none;" id="settings-popup-preview-settings">
|
||
<label for="settings-popup-preview-text">Popup preview text</label>
|
||
<input type="text" id="settings-popup-preview-text" class="form-control" value="読め" placeholder="Preview text">
|
||
</div>
|
||
|
||
<div class="form-group ignore-form-changes">
|
||
<div id="settings-popup-preview-button-container">
|
||
<button class="btn btn-default" id="settings-popup-preview-button">Show popup preview</button>
|
||
</div>
|
||
<div id="settings-popup-preview-container"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div>
|
||
<h3>Audio Options</h3>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="audio-playback-enabled" data-setting="audio.enabled"> Enable audio playback in search results</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="auto-play-audio" data-setting="audio.autoPlay"> Play audio automatically</label>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="audio-playback-volume">Audio playback volume <span class="label-light">(percent)</span></label>
|
||
<input type="number" min="0" max="100" id="audio-playback-volume" class="form-control" data-setting="audio.volume">
|
||
</div>
|
||
|
||
<div class="form-group" id="text-to-speech-voice-container" hidden>
|
||
<label for="text-to-speech-voice">Text-to-speech voice</label>
|
||
<div class="input-group">
|
||
<select class="form-control" id="text-to-speech-voice" data-setting="audio.textToSpeechVoice"></select>
|
||
<div class="input-group-btn">
|
||
<button class="btn btn-default" id="text-to-speech-voice-test" title="Test voice" data-speech-text="よみちゃん"><span class="glyphicon glyphicon-volume-up"></span></button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="audio-custom-source">Custom audio source <span class="label-light">(URL)</span></label>
|
||
<input type="text" id="audio-custom-source" class="form-control" data-setting="audio.customSourceUrl" placeholder="Example: http://localhost/audio.mp3?expression={expression}&reading={reading}">
|
||
</div>
|
||
|
||
<div class="form-group ignore-form-changes">
|
||
<label>Audio playback sources</label>
|
||
<div class="audio-source-list"></div>
|
||
<div class="input-group audio-source-options">
|
||
<button class="btn btn-default audio-source-add" title="Add audio playback source"><span class="glyphicon glyphicon-plus"></span></button>
|
||
</div>
|
||
|
||
<template id="audio-source-template"><div class="input-group audio-source">
|
||
<div class="input-group-addon audio-source-prefix"></div>
|
||
<select class="form-control audio-source-select">
|
||
<option value="jpod101">JapanesePod101</option>
|
||
<option value="jpod101-alternate">JapanesePod101 (Alternate)</option>
|
||
<option value="jisho">Jisho.org</option>
|
||
<option value="text-to-speech">Text-to-speech</option>
|
||
<option value="text-to-speech-reading">Text-to-speech (Kana reading)</option>
|
||
<option value="custom">Custom</option>
|
||
</select>
|
||
<div class="input-group-btn"><button class="btn btn-danger audio-source-remove" title="Remove"><span class="glyphicon glyphicon-remove"></span></button></div>
|
||
</div></template>
|
||
</div>
|
||
</div>
|
||
|
||
<div>
|
||
<h3>Scanning Options</h3>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="middle-mouse-button-scan" data-setting="scanning.middleMouse"> Middle mouse button scans</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="touch-input-enabled" data-setting="scanning.touchInputEnabled"> Touch input enabled</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="select-matched-text" data-setting="scanning.selectText"> Select matched text</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="search-alphanumeric" data-setting="scanning.alphanumeric"> Search alphanumeric text</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="auto-hide-results" data-setting="scanning.autoHideResults"> Automatically hide results</label>
|
||
</div>
|
||
|
||
<div class="checkbox options-advanced">
|
||
<label><input type="checkbox" id="deep-dom-scan" data-setting="scanning.deepDomScan"> Deep DOM scan</label>
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="scan-delay">Scan delay <span class="label-light">(in milliseconds)</span></label>
|
||
<input type="number" min="0" id="scan-delay" class="form-control" data-setting="scanning.delay">
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="scan-length">Scan length <span class="label-light">(in characters)</span></label>
|
||
<input type="number" min="1" step="1" id="scan-length" class="form-control" data-setting="scanning.length">
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="scan-modifier-key">Scan modifier key</label>
|
||
<select class="form-control" id="scan-modifier-key" data-setting="scanning.modifier"></select>
|
||
</div>
|
||
</div>
|
||
|
||
<div>
|
||
<h3>Translation Options</h3>
|
||
|
||
<p class="help-block">
|
||
The following options can be used during the translation process to provide alternate versions of the input text to search for.
|
||
This can be helpful when the input text doesn't exactly match the term or expression found in the database.
|
||
</p>
|
||
|
||
<p class="help-block">
|
||
The conversion options below are listed in the order that the conversions are applied to the input text.
|
||
Conversions commonly have three possible values:
|
||
</p>
|
||
|
||
<ul class="help-block">
|
||
<li>
|
||
<strong>Disabled</strong><br>
|
||
This conversion will never be applied to the input text.
|
||
</li>
|
||
<li>
|
||
<strong>Enabled</strong><br>
|
||
This conversion will always be applied to the input text.
|
||
</li>
|
||
<li>
|
||
<strong>Use both variants</strong><br>
|
||
The translator will check the database for two variations: the raw input text and the converted input text.
|
||
When multiple options use variants, the translator will search for combinations of the converted text.
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="form-group">
|
||
<label for="translation-convert-half-width-characters">Convert half width characters to full width <span class="label-light">(ヨミチャン → ヨミチャン)</span></label>
|
||
<select class="form-control" id="translation-convert-half-width-characters" data-setting="translation.convertHalfWidthCharacters">
|
||
<option value="false">Disabled</option>
|
||
<option value="true">Enabled</option>
|
||
<option value="variant">Use both variants</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="translation-convert-numeric-characters">Convert numeric characters to full width <span class="label-light">(1234 → 1234)</span></label>
|
||
<select class="form-control" id="translation-convert-numeric-characters" data-setting="translation.convertNumericCharacters">
|
||
<option value="false">Disabled</option>
|
||
<option value="true">Enabled</option>
|
||
<option value="variant">Use both variants</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="translation-convert-alphabetic-characters">Convert alphabetic characters to hiragana <span class="label-light">(yomichan → よみちゃん)</span></label>
|
||
<select class="form-control" id="translation-convert-alphabetic-characters" data-setting="translation.convertAlphabeticCharacters">
|
||
<option value="false">Disabled</option>
|
||
<option value="true">Enabled</option>
|
||
<option value="variant">Use both variants</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="translation-convert-hiragana-to-katakana">Convert hiragana to katakana <span class="label-light">(よみちゃん → ヨミチャン)</span></label>
|
||
<select class="form-control" id="translation-convert-hiragana-to-katakana" data-setting="translation.convertHiraganaToKatakana">
|
||
<option value="false">Disabled</option>
|
||
<option value="true">Enabled</option>
|
||
<option value="variant">Use both variants</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="translation-convert-katakana-to-hiragana">Convert katakana to hiragana <span class="label-light">(ヨミチャン → よみちゃん)</span></label>
|
||
<select class="form-control" id="translation-convert-katakana-to-hiragana" data-setting="translation.convertKatakanaToHiragana">
|
||
<option value="false">Disabled</option>
|
||
<option value="true">Enabled</option>
|
||
<option value="variant">Use both variants</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="translation-collapse-emphatic-sequences">Collapse emphatic character sequences <span class="label-light">(すっっごーーい → すっごーい / すごい)</span></label>
|
||
<select class="form-control" id="translation-collapse-emphatic-sequences" data-setting="translation.collapseEmphaticSequences">
|
||
<option value="false">Disabled</option>
|
||
<option value="true">Collapse into single character</option>
|
||
<option value="full">Remove all characters</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="popup-content-scanning">
|
||
<h3>Popup Content Scanning Options</h3>
|
||
|
||
<p class="help-block">
|
||
Yomichan is able to create additional popups in order to scan the content of other popups.
|
||
This feature can be enabled if the <strong>Maximum number of additional popups</strong> option is set to a value greater than 0.
|
||
</p>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="enable-search-within-first-popup" data-setting="scanning.enablePopupSearch"> Enable search when clicking glossary entries and tags</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="enable-scanning-on-search-page" data-setting="scanning.enableOnSearchPage"> Enable scanning on search page</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="enable-scanning-of-popup-expressions" data-setting="scanning.enableOnPopupExpressions"> Enable scanning of expressions in search results</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="enable-search-tags" data-setting="scanning.enableSearchTags"> Enable clickable and scannable tags for searching expressions and their readings</label>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="popup-nesting-max-depth">Maximum number of additional popups</label>
|
||
<input type="number" min="0" step="1" id="popup-nesting-max-depth" class="form-control" data-setting="scanning.popupNestingMaxDepth">
|
||
</div>
|
||
</div>
|
||
|
||
<div id="text-parsing">
|
||
<h3>Text Parsing Options</h3>
|
||
|
||
<p class="help-block">
|
||
Yomichan can attempt to parse entire sentences or longer text blocks on the search page,
|
||
adding furigana above words and a small space between words.
|
||
</p>
|
||
|
||
<p class="help-block">
|
||
Two types of parsers are supported. The first one, enabled by default, works using the built-in
|
||
scanning functionality by automatically advancing in the sentence after a matching word.
|
||
</p>
|
||
|
||
<p class="help-block">
|
||
The second type is an external program called <a href="https://en.wikipedia.org/wiki/MeCab" target="_blank" rel="noopener">MeCab</a>
|
||
that uses its own dictionaries and a special parsing algorithm. To get it working, you must first
|
||
install it and <a href="https://github.com/siikamiika/yomichan-mecab-installer" target="_blank" rel="noopener">a native messaging component</a>
|
||
that acts as a bridge between the program and Yomichan.
|
||
</p>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="parsing-scan-enable" data-setting="parsing.enableScanningParser"> Enable text parsing using installed dictionaries</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="parsing-mecab-enable" data-setting="parsing.enableMecabParser"> Enable text parsing using MeCab</label>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="parsing-term-spacing" data-setting="parsing.termSpacing"> Enable small spaces between parsed words</label>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="parsing-reading-mode">Reading mode</label>
|
||
<select class="form-control" id="parsing-reading-mode" data-setting="parsing.readingMode">
|
||
<option value="hiragana">ひらがな</option>
|
||
<option value="katakana">カタカナ</option>
|
||
<option value="romaji">Romaji</option>
|
||
<option value="none">Disabled</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ignore-form-changes">
|
||
<div>
|
||
<img src="/mixed/img/spinner.gif" class="pull-right" id="dict-spinner" alt>
|
||
<h3>Dictionaries</h3>
|
||
</div>
|
||
|
||
<p class="help-block">
|
||
Yomichan can import and use a variety of dictionary formats. Unneeded dictionaries can be disabled.
|
||
</p>
|
||
|
||
<div class="form-group" id="dict-main-group">
|
||
<label for="dict-main">Main dictionary for merged mode</label>
|
||
<select class="form-control" id="dict-main"></select>
|
||
</div>
|
||
|
||
<div class="text-danger" id="dict-purge" hidden>Dictionary data is being purged, please be patient...</div>
|
||
<div class="alert alert-warning" id="dict-warning" hidden>No dictionaries have been installed</div>
|
||
<div class="alert alert-danger" id="dict-error" hidden></div>
|
||
|
||
<div id="dict-groups"></div>
|
||
<div id="dict-groups-extra"></div>
|
||
|
||
<div id="dict-import-progress">
|
||
Dictionary data is being imported, please be patient...
|
||
<span id="dict-import-info" hidden></span>
|
||
<div class="progress">
|
||
<div class="progress-bar progress-bar-striped" style="width: 0%"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="dict-importer">
|
||
<p class="help-block">
|
||
Select a dictionary to import for use below. Please visit the Yomichan homepage to
|
||
<a href="https://foosoft.net/projects/yomichan" target="_blank" rel="noopener">download free dictionaries</a>
|
||
for use with this extension and to learn about importing proprietary EPWING dictionaries.
|
||
</p>
|
||
<div>
|
||
<button class="btn btn-primary" id="dict-file-button">Import Dictionary</button>
|
||
<button class="btn btn-danger" id="dict-purge-button">Purge Database</button>
|
||
</div>
|
||
<div hidden><input type="file" id="dict-file" accept=".zip,application/zip" multiple></div>
|
||
</div>
|
||
|
||
<div>
|
||
<h3>Dictionary Options</h3>
|
||
</div>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="database-enable-prefix-wildcard-searches" data-setting="global.database.prefixWildcardsSupported" data-scope="global"> Enable prefix wildcard searches</label>
|
||
<p class="help-block">
|
||
This option only applies to newly imported dictionaries.
|
||
Enabling this option will also cause dictionary data to take up slightly more storage space.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="dict-purge-modal">
|
||
<div class="modal-dialog modal-dialog-centered">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title">Confirm database purge</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
Are you sure you want to delete all data in the database?
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||
<button type="button" class="btn btn-danger" id="dict-purge-confirm">Purge Database</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="dict-delete-modal">
|
||
<div class="modal-dialog modal-dialog-centered">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title">Confirm dictionary deletion</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
Are you sure you want to delete the dictionary <em id="dict-remove-modal-dict-name"></em>?
|
||
This operation may take some time and the responsiveness of this browser tab may be reduced.
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||
<button type="button" class="btn btn-danger" id="dict-delete-confirm">Delete Dictionary</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<template id="dict-template"><div class="dict-group well well-sm">
|
||
<h4><span class="text-muted glyphicon glyphicon-book"></span> <span class="dict-title"></span> <small class="dict-revision"></small></h4>
|
||
<p class="text-warning dict-outdated" hidden>This dictionary is outdated and may not support new extension features; please import the latest version.</p>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" class="dict-enabled"> Enable search</label>
|
||
</div>
|
||
<div class="checkbox options-advanced">
|
||
<label><input type="checkbox" class="dict-allow-secondary-searches"> Allow secondary searches</label>
|
||
</div>
|
||
<div class="checkbox dict-prefix-wildcard-searches-supported-container">
|
||
<label><input type="checkbox" class="dict-prefix-wildcard-searches-supported" disabled> Prefix wildcard searches supported</label>
|
||
</div>
|
||
<div class="form-group options-advanced">
|
||
<label class="dict-result-priority-label">Result priority</label>
|
||
<input type="number" class="form-control dict-priority">
|
||
</div>
|
||
<div class="dict-details-container">
|
||
<a class="dict-details-toggle-link">Details...</a>
|
||
<div class="dict-details" hidden><div class="dict-details-table"></div></div>
|
||
</div>
|
||
<div class="dict-delete-table">
|
||
<div>
|
||
<button class="btn btn-default dict-delete-button">Delete Dictionary</button>
|
||
</div>
|
||
<div>
|
||
<div class="progress" hidden>
|
||
<div class="progress-bar progress-bar-striped" style="width: 0%"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<pre class="debug dict-counts" hidden></pre>
|
||
</div></template>
|
||
|
||
<template id="dict-extra-template"><div class="well well-sm">
|
||
<h4><span class="text-muted glyphicon glyphicon-alert"></span> <span class="dict-title">Unassociated Data</span> <small class="dict-total-count"></small></h4>
|
||
<p class="text-warning">
|
||
The database contains extra data which is not associated with any installed dictionary.
|
||
Purging the database can fix this issue.
|
||
</p>
|
||
<pre class="debug dict-counts" hidden></pre>
|
||
</div></template>
|
||
</div>
|
||
|
||
<div id="storage-info">
|
||
<div>
|
||
<h3>Storage</h3>
|
||
</div>
|
||
|
||
<div id="storage-persist-info" class="storage-hidden">
|
||
<p class="help-block">
|
||
Web browsers may sometimes clear stored data if the device is running low on storage space.
|
||
This can result in the stored dictionary data being deleted unexpectedly, causing Yomichan to stop working for no apparent reason.
|
||
In order to prevent this, persistent storage must be enable by clicking the "Persistent Storage" button below.
|
||
</p>
|
||
</div>
|
||
|
||
<div id="storage-use" class="storage-hidden">
|
||
<p class="help-block storage-hidden" id="storage-use-finite">
|
||
Yomichan is using approximately <strong id="storage-usage"></strong> of <strong id="storage-quota"></strong>.
|
||
</p>
|
||
<p class="help-block storage-hidden" id="storage-use-infinite">
|
||
Yomichan is permitted <strong>unlimited storage</strong>.
|
||
</p>
|
||
</div>
|
||
|
||
<div id="storage-error" class="storage-hidden">
|
||
<p class="help-block">
|
||
Could not detect how much storage Yomichan is using.
|
||
</p>
|
||
<div data-show-for-browser="firefox firefox-mobile"><div class="alert alert-danger options-advanced">
|
||
On Firefox and Firefox for Android, the storage information feature may be hidden behind a browser flag.
|
||
|
||
If you would like to enable this flag, open <a href="about:config" target="_blank" rel="noopener">about:config</a> and search for the
|
||
<strong>dom.storageManager.enabled</strong> option. If this option has a value of <strong>false</strong>, toggling it to
|
||
<strong>true</strong> may allow storage information to be calculated.
|
||
</div></div>
|
||
</div>
|
||
|
||
<div data-show-for-browser="firefox-mobile"><div class="alert alert-warning">
|
||
If you are using Firefox for Android, you will have to make sure you have enough free space on your device to install dictionaries.
|
||
</div></div>
|
||
|
||
<div>
|
||
<button class="btn btn-default" id="storage-refresh"><span class="btn-inner-middle">Refresh</span></button>
|
||
<button class="btn btn-default storage-hidden ignore-form-changes" id="storage-persist-button"><span class="storage-button-inner"><input type="checkbox" class="btn-inner-middle storage-button-checkbox" id="storage-persist-button-checkbox" readonly /><span class="btn-inner-middle">Persistent Storage</span></span></button>
|
||
</div>
|
||
|
||
<p></p>
|
||
|
||
<div data-show-for-browser="firefox-mobile"><div class="alert alert-warning storage-persist-fail-warning storage-hidden">
|
||
<p>It may not be possible to enable Persistent Storage on Firefox for Android.</p>
|
||
</div></div>
|
||
|
||
<div data-show-for-browser="chrome"><div class="alert alert-warning storage-persist-fail-warning storage-hidden">
|
||
<p>
|
||
It may not be possible to enable Persistent Storage on Chrome-based browsers.
|
||
However, the Yomichan extension has permission for unlimited storage which should
|
||
prevent Chrome from deleting data.<sup><a href="https://bugs.chromium.org/p/chromium/issues/detail?id=680392#c15" target="_blank" rel="noopener">[1]</a></sup>
|
||
</p>
|
||
</div></div>
|
||
</div>
|
||
|
||
<div>
|
||
<div>
|
||
<img src="/mixed/img/spinner.gif" class="pull-right" id="anki-spinner" alt hidden>
|
||
<h3>Anki Options</h3>
|
||
</div>
|
||
|
||
<p class="help-block">
|
||
Yomichan supports automatic flashcard creation for <a href="https://apps.ankiweb.net/" target="_blank" rel="noopener">Anki</a>, a free application
|
||
designed to help you remember. This feature requires installation of the
|
||
<a href="https://foosoft.net/projects/anki-connect/" target="_blank" rel="noopener">AnkiConnect</a> plugin.
|
||
</p>
|
||
|
||
<div class="checkbox">
|
||
<label><input type="checkbox" id="anki-enable" data-setting="anki.enable" data-transform-pre="setDocumentAttribute" data-transform-post="setDocumentAttribute" data-document-attribute="data-options-anki-enable"> Enable Anki integration</label>
|
||
</div>
|
||
|
||
<div id="anki-general">
|
||
<div data-show-for-operating-system="mac">
|
||
<div class="alert alert-warning" id="anki-mac-warning">
|
||
Notice for Mac OS X users:
|
||
If Yomichan has issues connecting to AnkiConnect, you may have to tweak some system settings.
|
||
See <a href="https://foosoft.net/projects/anki-connect/#notes-for-mac-os-x-users" target="_blank" rel="noopener">this link</a> for more details.
|
||
</div>
|
||
</div>
|
||
|
||
<div class="alert alert-danger" id="anki-error" hidden></div>
|
||
|
||
<div class="alert alert-danger" id="anki-invalid-response-error" hidden>
|
||
Attempting to connect to Anki can sometimes return an error message which includes "Invalid response",
|
||
which may indicate that the value of the <strong>Interface server</strong> option is incorrect.
|
||
The <strong>Show advanced options</strong> checkbox under General Options must be ticked ticked to show this option.
|
||
Resetting it to the default value may fix issues that are occurring.
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="card-tags">Card tags <span class="label-light">(comma or space separated)</span></label>
|
||
<input type="text" id="card-tags" class="form-control" data-setting="anki.tags" data-transform-pre="splitTags" data-transform-post="joinTags">
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="sentence-detection-extent">Sentence detection extent <span class="label-light">(in characters)</span></label>
|
||
<input type="number" min="1" step="1" id="sentence-detection-extent" class="form-control" data-setting="anki.sentenceExt">
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="interface-server">Interface server <span class="label-light">(Default: http://127.0.0.1:8765)</span></label>
|
||
<input type="text" id="interface-server" class="form-control" data-setting="anki.server">
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="duplicate-scope">Duplicate scope</label>
|
||
<select class="form-control" id="duplicate-scope" data-setting="anki.duplicateScope">
|
||
<option value="collection">Collection</option>
|
||
<option value="deck">Deck</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="screenshot-format">Screenshot format</label>
|
||
<select class="form-control" id="screenshot-format" data-setting="anki.screenshot.format">
|
||
<option value="png">PNG</option>
|
||
<option value="jpeg">JPEG</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group options-advanced">
|
||
<label for="screenshot-quality">Screenshot quality <span class="label-light">(JPEG only)</span></label>
|
||
<input type="number" min="0" max="100" step="1" id="screenshot-quality" class="form-control" data-setting="anki.screenshot.quality">
|
||
</div>
|
||
|
||
<div id="anki-format">
|
||
<p class="help-block">
|
||
Specify the information you would like included in your flashcards in the field editor below.
|
||
As Anki requires the first field in the model to be unique, it is recommended
|
||
that you set it to <code>{expression}</code> for term flashcards and <code>{character}</code> for
|
||
Kanji flashcards. You can use multiple markers per field by typing them in directly.
|
||
See <a href="https://foosoft.net/projects/yomichan#flashcard-configuration" target="_blank" rel="noopener">Flashcard Configuration</a>
|
||
on the Yomichan homepage for descriptions of the available markers.
|
||
</p>
|
||
|
||
<ul class="nav nav-tabs">
|
||
<li class="active"><a href="#terms" data-toggle="tab">Terms</a></li>
|
||
<li><a href="#kanji" data-toggle="tab">Kanji</a></li>
|
||
</ul>
|
||
|
||
<div class="tab-content ignore-form-changes" id="anki-fields-container">
|
||
<div id="terms" class="tab-pane fade in active" data-anki-card-type="terms">
|
||
<div class="row">
|
||
<div class="form-group col-xs-6">
|
||
<label for="anki-terms-deck">Deck</label>
|
||
<select class="form-control anki-deck" id="anki-terms-deck" data-anki-card-type="terms"></select>
|
||
</div>
|
||
|
||
<div class="form-group col-xs-6">
|
||
<label for="anki-terms-model">Model</label>
|
||
<select class="form-control anki-model" id="anki-terms-model" data-anki-card-type="terms"></select>
|
||
</div>
|
||
</div>
|
||
|
||
<table class="table table-bordered anki-fields">
|
||
<thead><tr><th>Field</th><th>Value</th></tr></thead>
|
||
<tbody></tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<div id="kanji" class="tab-pane fade" data-anki-card-type="kanji">
|
||
<div class="row">
|
||
<div class="form-group col-xs-6">
|
||
<label for="anki-kanji-deck">Deck</label>
|
||
<select class="form-control anki-deck" id="anki-kanji-deck" data-anki-card-type="kanji"></select>
|
||
</div>
|
||
|
||
<div class="form-group col-xs-6">
|
||
<label for="anki-kanji-model">Model</label>
|
||
<select class="form-control anki-model" id="anki-kanji-model" data-anki-card-type="kanji"></select>
|
||
</div>
|
||
</div>
|
||
|
||
<table class="table table-bordered anki-fields">
|
||
<thead><tr><th>Field</th><th>Value</th></tr></thead>
|
||
<tbody></tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="options-advanced">
|
||
<p class="help-block">
|
||
Fields are formatted using the <a href="https://handlebarsjs.com/" target="_blank" rel="noopener">Handlebars.js</a> template rendering
|
||
engine. Advanced users can modify these templates for ultimate control of what information gets included in
|
||
their Anki cards. If you encounter problems with your changes, you can always reset to the default template settings.
|
||
</p>
|
||
<div class="ignore-form-changes">
|
||
<textarea autocomplete="off" spellcheck="false" wrap="soft" class="form-control" rows="10" id="field-templates"></textarea>
|
||
</div>
|
||
<div>
|
||
<button class="btn btn-danger" id="field-templates-reset">Reset Templates</button>
|
||
</div>
|
||
<p></p>
|
||
<pre id="field-template-compile-result" hidden></pre>
|
||
|
||
<p>Templates can be tested using the inputs below.</p>
|
||
|
||
<div class="form-group">
|
||
<div class="row">
|
||
<div class="col-xs-6">
|
||
<label for="field-templates-preview-text">Preview text</label>
|
||
<input type="text" id="field-templates-preview-text" class="form-control" value="読め" placeholder="Preview text">
|
||
</div>
|
||
<div class="col-xs-6">
|
||
<label for="field-template-render-text">Test field</label>
|
||
<div class="input-group">
|
||
<div class="input-group-btn">
|
||
<button class="btn btn-default" id="field-template-render" title="Test"><span class="glyphicon glyphicon-play"></span></button>
|
||
</div>
|
||
<input type="text" class="form-control" id="field-template-render-text" value="{expression}" placeholder="{marker}">
|
||
<div class="input-group-btn">
|
||
<button class="btn btn-default dropdown-toggle" id="field-templates-dropdown" data-toggle="dropdown"><span class="caret"></span></button>
|
||
<ul class="dropdown-menu dropdown-menu-right" id="field-templates-list"></ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<p></p>
|
||
<pre id="field-template-render-result" hidden></pre>
|
||
</div>
|
||
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="field-template-reset-modal">
|
||
<div class="modal-dialog modal-dialog-centered">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title">Confirm template reset</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
Are you sure you want to reset the field templates to the default value?
|
||
Any changes you made will be lost.
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||
<button type="button" class="btn btn-danger" id="field-templates-reset-confirm">Reset Templates</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<template id="anki-field-template"><tr>
|
||
<td class="col-sm-2 anki-field-name"></td>
|
||
<td class="col-sm-10">
|
||
<div class="input-group">
|
||
<input type="text" class="anki-field-value form-control" data-field="" value="">
|
||
<div class="input-group-btn">
|
||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||
<span class="caret"></span>
|
||
</button>
|
||
<ul class="dropdown-menu dropdown-menu-right anki-field-marker-list"></ul>
|
||
</div>
|
||
</div>
|
||
</td>
|
||
</tr></template>
|
||
|
||
<template id="anki-field-marker-template"><li><a class="marker-link" href="#"></a></li></template>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div>
|
||
<h3>Keyboard Shortcuts</h3>
|
||
|
||
<p class="help-block">
|
||
Yomichan includes keyboard shortcuts for common actions which can be adjusted
|
||
using the web browser's settings.
|
||
Instructions on how to access this settings page are listed below for a few browsers.
|
||
</p>
|
||
|
||
<h4>Chrome</h4>
|
||
<ul class="help-block">
|
||
<li>Open the settings page (<a href="chrome://settings/">chrome://settings/</a>)</li>
|
||
<li>Click the "Extensions" link in the left sidebar (<a href="chrome://extensions/">chrome://extensions/</a>)</li>
|
||
<li>Open the left side panel using the hamburger (<strong>≡</strong>) menu button, then click "Keyboard shortcuts"</li>
|
||
</ul>
|
||
|
||
<h4>Firefox</h4>
|
||
<ul class="help-block">
|
||
<li>Open the extensions page (<a href="about:addons">about:addons</a>)</li>
|
||
<li>Click the button on the right with the gear icon, then click "Manage Extension Shortcuts"</li>
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
<div>
|
||
<h3>Backup</h3>
|
||
|
||
<p class="help-block">
|
||
Yomichan can import and export settings files which can be used to restore settings,
|
||
share settings across devices, or help to debug problems.
|
||
These files will only contain settings and will not contain dictionaries.
|
||
Dictionaries must be imported separately.
|
||
</p>
|
||
|
||
<div>
|
||
<button class="btn btn-default" id="settings-export">Export Settings</button>
|
||
<button class="btn btn-default" id="settings-import">Import Settings</button>
|
||
<button class="btn btn-danger" id="settings-reset">Reset Default Settings</button>
|
||
</div>
|
||
|
||
<div hidden><input type="file" id="settings-import-file" accept=".json,application/json"></div>
|
||
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="settings-import-error-modal">
|
||
<div class="modal-dialog modal-dialog-centered">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title">Import Error</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<p>
|
||
An error occurred while trying to import the settings file:
|
||
</p>
|
||
<p class="text-danger" id="settings-import-error-modal-message"></p>
|
||
<p>
|
||
Additional info can be found in the developer console.
|
||
</p>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="settings-import-warning-modal">
|
||
<div class="modal-dialog modal-dialog-centered">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title">Import Security Warning</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<p>
|
||
Settings file contains settings which may pose a security risk.
|
||
Only import settings from sources you trust.
|
||
</p>
|
||
<ul class="text-danger" id="settings-import-warning-modal-message"></ul>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||
<button type="button" class="btn btn-danger settings-import-warning-modal-import-button">Import</button>
|
||
<button type="button" class="btn btn-primary settings-import-warning-modal-import-button" data-import-sanitize="true">Sanitize and Import</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="settings-reset-modal">
|
||
<div class="modal-dialog modal-dialog-centered">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title">Settings Reset</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<p class="text-danger">
|
||
You are about to reset all Yomichan settings back to their default values.
|
||
This will delete all custom profiles you may have created.
|
||
<strong>This action cannot be undone.</strong>
|
||
</p>
|
||
<p>
|
||
Consider making a backup using the "Export Settings" button before resetting
|
||
if you want to be able to revert.
|
||
</p>
|
||
<p>
|
||
Dictionary data will not be deleted, but any installed dictionaries
|
||
will need to be re-enabled.
|
||
</p>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||
<button type="button" class="btn btn-danger" id="settings-reset-modal-confirm">Reset All Settings</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div>
|
||
<h3>Support Development</h3>
|
||
|
||
<p class="help-block">
|
||
Yomichan is provided to you <em>completely free</em> of charge. Unlike numerous other "free" services, you are not
|
||
shown ads, pestered with "offers", or have your browser usage information analyzed and sold to third parties.
|
||
</p>
|
||
<p class="help-block">
|
||
If you find Yomichan useful, please consider making a small donation as a way to show your appreciation for the
|
||
countless hours that I have devoted to this extension.
|
||
</p>
|
||
<p>
|
||
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4DBTN9A3CUAFN" target="_blank" rel="noopener"><img src="/bg/img/paypal.gif" alt></a>
|
||
</p>
|
||
</div>
|
||
|
||
<div class="pull-right bottom-links">
|
||
<small><span id="extension-info"></span> • <a href="search.html">Search</a> • <a href="https://foosoft.net/projects/yomichan/" target="_blank" rel="noopener">Homepage</a> • <a href="legal.html">Legal</a></small>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="/mixed/lib/jquery.min.js"></script>
|
||
<script src="/mixed/lib/bootstrap/js/bootstrap.min.js"></script>
|
||
<script src="/mixed/lib/handlebars.min.js"></script>
|
||
<script src="/mixed/lib/wanakana.min.js"></script>
|
||
|
||
<script src="/mixed/js/core.js"></script>
|
||
<script src="/mixed/js/comm.js"></script>
|
||
<script src="/mixed/js/dom.js"></script>
|
||
<script src="/mixed/js/environment.js"></script>
|
||
<script src="/mixed/js/api.js"></script>
|
||
<script src="/mixed/js/japanese.js"></script>
|
||
|
||
<script src="/bg/js/anki.js"></script>
|
||
<script src="/bg/js/anki-note-builder.js"></script>
|
||
<script src="/bg/js/conditions.js"></script>
|
||
<script src="/bg/js/dictionary.js"></script>
|
||
<script src="/bg/js/handlebars.js"></script>
|
||
<script src="/bg/js/options.js"></script>
|
||
<script src="/bg/js/page-exit-prevention.js"></script>
|
||
<script src="/bg/js/profile-conditions.js"></script>
|
||
<script src="/bg/js/util.js"></script>
|
||
<script src="/mixed/js/audio-system.js"></script>
|
||
|
||
<script src="/bg/js/settings/anki.js"></script>
|
||
<script src="/bg/js/settings/anki-templates.js"></script>
|
||
<script src="/bg/js/settings/audio.js"></script>
|
||
<script src="/bg/js/settings/backup.js"></script>
|
||
<script src="/bg/js/settings/clipboard-popups-controller.js"></script>
|
||
<script src="/bg/js/settings/conditions-ui.js"></script>
|
||
<script src="/bg/js/settings/dictionaries.js"></script>
|
||
<script src="/bg/js/settings/generic-setting-controller.js"></script>
|
||
<script src="/bg/js/settings/popup-preview.js"></script>
|
||
<script src="/bg/js/settings/profiles.js"></script>
|
||
<script src="/bg/js/settings/settings-controller.js"></script>
|
||
<script src="/bg/js/settings/storage.js"></script>
|
||
<script src="/mixed/js/object-property-accessor.js"></script>
|
||
<script src="/mixed/js/task-accumulator.js"></script>
|
||
<script src="/mixed/js/dom-data-binder.js"></script>
|
||
|
||
<script src="/bg/js/settings/main.js"></script>
|
||
</body>
|
||
</html>
|