A simple, open source bilingual translation extension & Greasemonkey script.
kiss-translator.webm
- Keep it simple, smart
- Open source
- Adapt to common browsers
- Chrome/Edge
- Firefox
- Kiwi (Android)
- Orion (iOS)
- Safari
- Thunderbird
- Supports multiple translation services
- Google/Microsoft
- Tencent/Volcengine
- OpenAI/Gemini/Claude/Ollama/DeepSeek/OpenRouter
- DeepL/DeepLX/NiuTrans
- AzureAI / CloudflareAI
- Chrome built-in AI translation (BuiltinAI)
- Covers common translation scenarios
- Webpage bilingual translation
- Input-box translation
- Instantly translate text in input fields into other languages via shortcut keys
- Text selection translation
- Open translation popup on any page, support multiple translation services for comparison
- English dictionary lookup
- Save vocabulary
- Hover translation
- YouTube subtitle translation
- Support translating video subtitles with any translation service and display bilingually
- Built-in basic subtitle merging and sentence-splitting algorithm to improve translation quality
- Supports AI-powered sentence segmentation for even better translation
- Custom subtitle style
- Supports diverse translation modes
- Supports both automatic text recognition and manual rule modes
- Automatic text recognition mode allows most sites to be translated fully without writing rules
- Manual rule mode enables extreme optimization for specific sites
- Custom translation styling
- Supports rich-text translation and rendering, preserving links and other text styles where possible
- Option to show only translation (hide original text)
- Supports both automatic text recognition and manual rule modes
- Advanced translation API features
- With custom API support, theoretically works with any translation service
- Batch aggregation of translation requests
- Supports streaming for real-time translation results
- Supports AI conversation context memory to improve translation quality
- Custom AI terminology dictionary
- All APIs support hooks and custom parameters for advanced usage
- Cross-client data synchronization
- KISS-Worker(cloudflare/docker)
- WebDAV
- Custom translation rules
- Rule subscription/rule sharing
- Customized terminology
- Custom shortcut keys
Alt+QToggle TranslationAlt+CToggle StylesAlt+KOpen Setting PopupAlt+SOpen Translate Popup / Translate Selected TextAlt+OOpen Options PageAlt+IInput Box Translation
Note: For the following reasons, it is recommended to use browser extensions first
- Browser extensions have more complete functions (local language recognition, context menu, etc.)
- Grease Monkey script will encounter more usage problems (cross domain issues, script conflicts, etc.)
- Browser extension
- Chrome Installation address
- Kiwi (Android)
- Orion (iOS)
- Edge Installation address
- Firefox Installation address
- Safari
- Safari (Mac)
- Safari (iOS)
- Thunderbird Download address
- Chrome Installation address
- GreaseMonkey Script
- Chrome/Edge/Firefox (Tampermonkey/Violentmonkey) Installation link
- iOS Safari (Userscripts Safari) Installation link
- Data synchronization service: https://github.com/fishjar/kiss-worker
- Data synchronization service available for this project.
- Can also be used to share personal private rule lists.
- Deploy by yourself, manage by yourself, data is private.
- Community subscription rules: https://github.com/fishjar/kiss-rules
- Provides the latest and most complete list of subscription rules maintained by the community.
- Help with rules-related issues.
Set this in the extension management page, for example:
- chrome chrome://extensions/shortcuts
- firefox about:addons
Personal Rules > Subscription Rules > Global Rules
Among these, Global Rules have the lowest priority but are very important as they serve as the default rules.
Common reasons for API test failures include:
- Incorrect address:
- For example,
Ollamahas a native API address and anOpenai-compatible address. This plugin currently supports theOpenai-compatible address and does not support theOllamanative API address.
- For example,
- Some AI models do not support batch translation:
- In this case, you can choose to disable batch translation or use a custom API.
- Alternatively, you can use a custom API. For details, please refer to: Custom API Example Documentation
- Some AI models have inconsistent parameters:
- For example, the parameters of the
Gemininative API are highly inconsistent. Some model versions do not support certain parameters, leading to errors. - In this case, you can modify the request body using a
Hook, or replace it withGemini2(an OpenAI-compatible address).
- For example, the parameters of the
- The server restricts cross-origin access, returning a 403 error:
- For example,
Ollamarequires adding the environment variableOLLAMA_ORIGINS=*when starting. See: #174
- For example,
Tampermonkey scripts require adding domains to the whitelist; otherwise, requests cannot be sent.
Custom APIs are very powerful and flexible, and can theoretically connect to any translation API.
Example reference: custom-api_v2.md
Settings page address: https://fishjar.github.io/kiss-translator/options.html
This is a side project with no strict timeline. Community contributions are welcome. The following are preliminary feature directions:
- Batch Text Requests: Optimize request strategy to reduce translation API calls and improve performance.
- Enhanced Rich Text Translation: Support accurate translation of complex page structures and rich text content.
- Advanced Custom/AI Interfaces: Add support for streaming, context memory, multi-turn conversations, and other advanced AI features.
- Fallback English Dictionary: When translation services fail, fall back to a local dictionary lookup.
- Improved YouTube Subtitle Support: Enhance merging and translation experience for streaming subtitles, reducing sentence fragmentation.
- Upgraded Rule Collaboration System: Introduce more flexible rule sharing, version management, and community review processes.
If you're interested in any of these directions, feel free to discuss in Issues or submit a PR!
git clone https://github.com/fishjar/kiss-translator.git
cd kiss-translator
git checkout dev # Submit a PR suggestion to push to the dev branch
pnpm install
pnpm build// `toggle_translate` Toggle translation
// `toggle_styles` Toggle styles
// `toggle_popup` Open/close control panel
// `toggle_transbox` Open/close translation popup
// `toggle_hover_node` Translate hovered paragraph
// `input_translate` Translate input box
window.dispatchEvent(new CustomEvent("kiss_translator", {detail: { action: "toggle_translate" }}));- Join Telegram Group
