Easydict
is a concise and easy-to-use translation dictionary macOS App that allows you to easily and elegantly look up words or translate text. Easydict is ready to use out of the box, can automatically recognize the language of the input text, supports input translate, select translate, and OCR screenshot translate, and can query multiple translation services result at the same time. Currently, it supports Youdao Dictionary, macOS System Translation, DeepL, Google, Baidu, and Volcano Translation.
- Out of the box, easily look up words or translate text.
- Automatic recognition of input language and automatic query of target preferred language.
- Auto select translate, automatically display the query icon after word search, mouse hover to query.
- Support for configuring different services for different window types.
- Support system OCR screenshot translation, Silent Screenshot OCR.
- Support system TTS.
- Support macOS system translation. (Please see How to use 🍎 macOS system translation in Easydict?)
- Support Youdao Dictionary, DeepL, Google, Baidu and Volcano Translate.
- Support for 48 languages.
Next step.
- Supports service user's API calls.
- Support more query services.
- Support for macOS system dictionary.
If you like this extension, please give it a Star ⭐️, thanks!
- Easydict
- Features
- Table of contents
- Installation
- Usage
- OCR
- Language Recognition
- Translation Services
- Use with PopClip
- Preferences
- Tips
- Similar Open Source Projects
- Motivation
- Acknowledgements
- Statement
- Sponsor
You can install it using one of the following two methods. Support macOS 11.0+
Download the latest release of the app.
2. Homebrew (Thanks BingoKingo)
brew install easydict
If you are a developer, or are interested in this project, you can also try to build and run it manually. The whole process is very simple, even without knowing macOS development knowledge.
Build Steps:
Just download this Repo, then use Xcode to open the Easydict.xcworkspace
file(Easydict.xcodeproj
!), Cmd + R
to compile and run.
If a signature error occurs during compilation, please use your own developer account on the Signing & Capabilities
page of the target. If you are not an Apple developer yet, just go to https://developer.apple.com/ and register for free.
If you don't want to register as an Apple developer, you can also run with automatic signature, refer to the screenshot below, change Team
to None and Signing Certificate
to Sign to Run Locally, note that both targets should be changed.
Build environment: Xcode 13+, macOS Big Sur 11.3+. To avoid unnecessary problems, it is recommended to use the latest Xcode and macOS version tisfeng#79
Easydict is open source software and is inherently secure, but due to Apple's strict checking mechanism, you may encounter warning blocks when opening it.
FAQ:
- If you encounter the following Cannot open Easydict problem, please refer to Open Mac App from an unidentified developer
Cannot open "Easydict.dmg" because Apple cannot check to see if it contains malware.
- If it indicates that the app is corrupted, please refer to macOS Bypassing Notary and App Signing Methods
"Easydict" is corrupted and cannot be opened.
Just type the following command in the terminal and enter the password.
sudo xattr -rd com.apple.quarantine /Applications/Easydict.app
Once Easydict is launched, in addition to the main window (hidden by default), there will be a menu icon, and clicking on the menu option will trigger the corresponding actions, as follows:
Currently, multiple mouse quick word selection methods are supported: double-click word selection, mouse drag word selection, triple-click word selection (paragraph) and Shift word selection (multiple paragraphs). In some applications, mouse drag word selection and Shift word selection may fail, in which case you can switch to other word selection methods.
The shortcut key to select words can work normally in any application. If you encounter an application that cannot select words, you can open an issue to solve it tisfeng#84
The flow of the crossword function: Accessibility > AppleScript > simulated shortcuts, giving priority to the secondary function Accessibility fetching, and if Accessibility fetching fails (unauthorized or not supported by the application), if it is a browser application (e.g. Safari, Chrome), it will try to use AppleScript fetching. If the AppleScript fetching still fails, then the final forced fetching is done - simulating the shortcut Cmd+C to fetch the word.
Therefore, it is recommended to turn on the Allow JavaScript in Apple events option in your browser to avoid event blocking on certain web pages, such as those with forced copyright information, and to optimize the word fetching experience. For Safari users, it is highly recommended that this option be turned on, as Safari does not support Accessibility fetching, and AppleScript fetching is far superior to simulating shortcuts.
-
Select Translate
requires theAuxiliary Accessibility
.The mouse stroke function only triggers the application of auxiliary accessibility permission when it is used for the first time, and the automatic stroke translation function can only be used normally after authorization. -
For screenshot Translate, you need to enable
Screen Recording
permission. The application will only automatically pop up a permission application dialog box when you use Screenshot Translation for the first time. If the authorization fails, you need to turn it on in the system settings manually.
Currently, only the system OCR is supported, and third-party OCR services will be introduced later.
System OCR supported languages: Simplified Chinese, Traditional Chinese, English, Japanese, Korean, French, Spanish, Portuguese, German, Italian, Russian, Ukrainian.
Currently, only the system language recognition is supported, and Baidu and Google language recognition are supported, but considering the speed problem of online recognition and instability (Google also needs to be flipped), the other two recognition services are only used for auxiliary optimization.
The system language recognition is used by default, and after tuning, the accuracy of the system language recognition is already very high, which can meet the needs of most users.
If you still feel that the system language recognition is inaccurate in actual use, you can turn on Baidu language recognition or Google language recognition optimization in the settings, but please note that this may cause the response speed to slow down, and the recognition rate will not be 100% in line with user expectations. If there is a recognition error, you can manually specify the language type.
Currently, we support Youdao Dictionary, macOS system translation, DeepL, Google, Baidu and Volcano translation, total 6 translation services.
Note
⚠️ : Since the Chinese version of Google Translate is currently unavailable, you can only use the international version, so you need to use a proxy to use Google Translate.
Supported languages:
Languages | Youdao | DeepL | macOS System | Baidu | Volcano | |
---|---|---|---|---|---|---|
Chinese (Simplified) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Chinese (Traditional) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
English | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Japanese | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Korean | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
French | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Spanish | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Portuguese | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Italian | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
German | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Russian | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Arabic | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
Swedish | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Romanian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Thai | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
Slovak | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Dutch | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Hungarian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Greek | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Danish | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Finnish | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Polish | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Czech | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Turkish | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Lithuanian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Latvian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Ukrainian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Bulgarian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Indonesian | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Malay | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Slovenian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Estonian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Vietnamese | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
Persian | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Hindi | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Telugu | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Tamil | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Urdu | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Filipino | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Khmer | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Lao | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Bengali | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Burmese | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Norwegian | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Serbian | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Croatian | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Mongolian | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Hebrew | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
DeepL free version web API has frequency limit for single IP, frequent use will trigger 429 too many requests error, so version 1.3.0 adds support for DeepL official API, but the interface has not been written yet, and needs to be enabled through command.
If you have DeepL AuthKey, it is recommended to use personal AuthKey, so as to avoid frequency limit and improve user experience. If not, you can use the way of switching proxy IP to avoid 429 error.
Enter the following code in the input box, xxx is your DeepL AuthKey, and then Enter
easydict://writeKeyValue?EZDeepLAuthKey=xxx
- The web version API is used by default, and the personal AuthKey will be used when the web version API fails (if any)
easydict://writeKeyValue?EZDeepLTranslationAPIKey=0
- Use personal AuthKey first, and use web version API when it fails. If you use DeepL frequently, it is recommended to use this method, which can reduce one failed request and improve response speed.
easydict://writeKeyValue?EZDeepLTranslationAPIKey=1
- Only use personal AuthKey
easydict://writeKeyValue?EZDeepLTranslationAPIKey=2
You need to install PopClip first, then set a shortcut key for Easydict
, default is Opt + D
, then you can open Easydict
quickly with PopClip
!
Usage: Select the following code block, PopClip
will show "Install Easydict", just click it.
Note
⚠️ : If you have modified the default shortcut key, you need to modify the shortcutkey combo
in the script below accordingly.
# popclip
name: Easydict
icon: square E
key combo: option D
Ref: https://github.com/pilotmoon/PopClip-Extensions#key-combo-string-format
The settings page provides some preference setting modifications, such as automatically playing word pronunciation after turning on query, modifying translation shortcut keys, turning on and off services, or adjusting the order of services, etc.
Easydict has 3 types of windows and you can set different services for each of them.
- Mini window: displayed when the mouse automatically picks up words.
- Floating window: displayed when shortcut keys are used to fetch words and screenshot translation.
- Main window: hidden by default, you can turn it on in the settings and show it when the program starts. (The main window function will be enhanced later)
Easydict has some in-app shortcuts to help you use it more efficiently.
Unlike the translation shortcut keys that are globally effective, the following shortcuts only take effect when the Easydict window is in the foreground.
Enter
: After entering text, press Enter to start the query.Shift + Enter
: Enter a newline.Cmd + ,
: Open the settings page.Cmd + Q
: Quit the app.Cmd + K
: Clear the input text.Cmd + Shift + K
: Clear the input box and query results, the same as clicking the clear button in the lower right corner of the input text.Cmd + I
: Focus the input text.Cmd + Shift + C
: Copy query text.Cmd + S
: Play the pronunciation of the query text.Cmd + R
: Query again.Cmd + T
: Toggle translation language.Cmd + P
: Pin the window.Cmd + W
: Close the window.Cmd + Enter
: By default, the Google search engine is opened, and the content to be searched is the input text, which is equivalent to manually clicking the browser search icon in the upper right corner.Cmd + Shift + Enter
: If the Eudic App is installed on the computer, an Eudic icon will be displayed to the left of the Google icon, and the action is to open the Eudic App to query.
As long as the query window is activated, you can open the settings page by shortcut key Cmd + ,
. If you hide the menu bar icon, you can reopen it in this way.
If you find that the OCR result is incorrect, you can correct the OCR result by clicking the "Detected xxx" button to specify the recognition language.
- immersive-translate: A nice Immersive Dual Web Page Translation Extension.
- ext-saladict: A browser extension for looking up words and translating.
- openai-translator: Browser extension and cross-platform desktop application for translation based on ChatGPT API.
- Raycast-Easydict: My other open source project, a Raycast extension version of Easydict.
Looking up words and translating text is a very useful function in daily life. I have used many translation dictionaries, but I was not satisfied until I met Bob. Bob
is an excellent translation software, but it is not open source and no longer provides free application updates since it hit the Apple Store.
As a developer and beneficiary of a lot of open source software, I think that there should be a free open source version of Bob in the world, so I made Easydict.
Now I use Easydict a lot every day, I like it very much, and I hope more people can know it and use it.
Open source makes the world better.
- This project was inspired by saladict and Bob, and the initial version was made based on Bob (GPL-3.0). Easydict has made many improvements and optimizations on the original project, and many features and UI are referenced from Bob.
- Screenshot feature is based on isee15 's Capture-Screen-For-Multi-Screens-On-Mac, and optimized on this project.
- Select text feature is referenced from PopClip.
Easydict is licensed under the GPL-3.0 open source license, which is for learning and communication only. Anyone can get this product and source code for free. If you believe that your legal rights have been violated, please contact the author immediately. You can use the source code freely, but you must attach the corresponding license and copyright.
Easydict is a free and open source project, currently mainly developed and maintained by the author. If you like this project, and find it helpful, you can consider sponsoring this project to support it, so that it can go further.
If sponsorship is enough to cover Apple's $99 annual fee, I will sign up for a developer account to solve the app signature problem and make Easydict more accessible to more people.
If you don't want your username to be displayed in the list, please choose anonymous.
日期 | 用户 | 金额 | 留言 |
---|---|---|---|
2023-05-22 | 🍑 | 50 | 感谢开源 |
2023-05-22 | - | 200 | |
2023-05-22 | - | 150 | |
2023-05-24 | 陈佩 | 50 | 加油 有没有可能有 Linux 版?(暂时没有) |
2023-05-27 | 自由。 | 100 | 感谢 |
2023-06-01 | 梦遇 | 10 | 感谢 |
2023-06-05 | 挨揍的免子 | 1 | 谢谢 🙏 |
2023-06-17 | 妙才 | 5 | ❤️ |
2023-06-19 | 1 | 20 | 加油,有没有可能调用 chatgpt 来翻译呀?(参见#28) |
2023-06-19 | 许冠英 | 6.6 | 感谢开发这么好用的软件,很喜欢。 |
2023-06-20 | lidashuang | 10 | 感谢 |
2023-07-03 | 小阳 | 2 | |
2023-07-06 | 30 | 谢谢 | |
2023-07-11 | 清清 🎵 在努力 ✨ | 20 | |
2023-07-21 | 50 | ty | |
2023-07-25 | 10 | 感谢开源 | |
2023-08-07 | guanyuan | 58 | 开源万岁 |