Chinese | English
Easydict
is a simple and easy-to-use dictionary translation macOS App that can find words or translate text easily and elegantly. Easydict can be used out of the box and can automatically identify the input text language. It supports input translation, word-marking translation and OCR screenshot translation. It can query multiple translation service results at the same time. It currently supports Youdao Dictionary, Apple System Dictionary , Apple System Translator , OpenAI, Gemini, DeepL, Google, Tencent, Bing, Baidu, Xiaoniu Translation, Caiyun Xiaoyi, Alibaba Translation and Huoshan Translation.
Ready to use right out of the box, it’s easy to look up words or translate text.
Automatically identify the input language and automatically query the target preferred language.
Automatically mark the word for query. After the word is marked, the query icon will be automatically displayed. You can query by hovering the mouse.
Supports configuring different services for different windows.
Support intelligent query mode.
Support system OCR screenshot translation and silent screenshot OCR.
Support system TTS, support Bing, Google, Youdao and Baidu online TTS services.
Support? Apple system dictionary, support third-party dictionaries, and mdict dictionary can be imported manually.
Supports macOS system translation. For details, please see How to use Easydict? macOS system translation?
Supports Youdao Dictionary, OpenAI, Gemini, DeepL, Google, Bing, Tencent, Baidu, Mavericks, Caiyun, Alibaba and Huoshan Translation.
Supports 48 languages.
If you think this app is good, give it a Star ⭐️ to support it (^-^)
We plan to use Swift to reconstruct the project. If you are interested in this open source project and are familiar with Swift/SwiftUI, you are welcome to join our development team and improve this project together #194.
Easydict
Function
Swift Refactoring Plan
Table of contents
Install
Build environment
1. Manual download and installation
2. Homebrew installation
Developer build
use
Mouse stroke word
About permissions
OCR
Language identification
TTS service
Inquiry service
Configure AuthKey
Customized DeepL interface address
Configure API calling method
DashScope
Groq
Google Gemini
Configure personal APIKey
OpenAI query mode
OpenAI custom parameters
Languages supported by each service
? Apple system dictionary
OpenAI Translation
Custom OpenAI translation
Built-in AI translation
Translation
DeepL translation
Tencent Translator
Bing translation
Mavericks translation
Caiyun Xiaoyi
Ali Translation
Intelligent query mode
In-app query
URL Scheme
Use with PopClip
set up
Universal
Serve
In-app shortcut keys
Tips
Similar open source projects
original intention
Contribution Guide
Star History
Acknowledgments
statement
Sponsorship support
Sponsored List
You can install it in one of two ways. Support system macOS 11.0+
Download the latest version of Easydict.
Thanks to BingoKingo for providing the initial installation version.
brew install --cask 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 and does not even require knowledge of macOS development.
Download this Repo and use Xcode to open the Easydict.xcworkspace
file (
Note that it is not Easydict.xcodeproj
).
Just use Cmd + R
to compile and run.
The following steps are optional and are for development collaborators only.
If you often need to debug some permission-related functions, such as word extraction or OCR, you can choose to use your own Apple account to run it. Please modify DEVELOPMENT_TEAM
in the Easydict-debug.xcconfig
file to your own Apple Team ID (you can log in to Apple Developer website to find it), change CODE_SIGN_IDENTITY
to Apple Development.
Be careful not to submit the Easydict-debug.xcconfig
file. You can use the following git command to ignore local modifications to this file.
git update-index --skip-worktree Easydict-debug.xcconfig
Xcode 13+, macOS Big Sur 11.3+. To avoid unnecessary problems, it is recommended to use the latest Xcode and macOS version #79
[!NOTE] Since the latest code uses the String Catalog feature, it requires Xcode 15+ to compile. If your Xcode version is lower, please use the xcode-14 branch. Note that this is a fixed version branch and is not maintained.
If you encounter the following error when running, please try to upgrade CocoaPods to the latest version, and then execute pod install
.
DT_TOOLCHAIN_DIR cannot be used to evaluate LD_RUNPATH_SEARCH_PATHS, use TOOLCHAIN_DIR instead
After Easydict is started, in addition to the main application interface (hidden by default), there will also be a menu icon. Click the menu option to trigger the corresponding function, as shown below:
Way | describe |
---|---|
Mouse stroke word translation | After the word is drawn, the query icon is automatically displayed, and the query can be performed by hovering the mouse. |
Shortcut key word translation | After selecting the text that needs to be translated, press the word translation shortcut key (default ⌥ + D ) |
screenshot translation | Press the screenshot translation shortcut key (default ⌥ + S ) to capture the area that needs to be translated. |
Enter translation | Press the input translation shortcut key (default ⌥ + A or ⌥ + F ), enter the text that needs to be translated, and Enter the translation key |
Silent screenshot OCR | Press the silent screenshot shortcut key (default ⌥ + ⇧ + S ) to capture the area that requires OCR. The screenshot OCR result will be automatically saved to the clipboard. |
Currently, multiple mouse shortcut methods are supported: double-click to draw a word, mouse slide to draw a word, triple-click to draw a word (paragraph) and Shift to draw a word (multiple paragraphs). In some applications, [mouse slide to draw a word] may fail. At this time, you can change to other ways of delimiting words.
Shortcut keystrokes can work normally in any application. If you encounter an application that cannot draw words with the mouse, you can raise an issue to solve #84
Word delineation function process: Accessibility > AppleScript > Simulate shortcut keys, priority is given to using the Accessibility word retrieval function. When Accessibility word retrieval fails (unauthorized or not supported by the application), if it is a browser application (such as Safari, Chrome), it will try Use AppleScript to get words. If the AppleScript word retrieval still fails, forced word retrieval will be performed at the end - simulating the shortcut key Cmd+C to retrieve the word.
Therefore, it is recommended to turn on允许Apple 事件中的JavaScript
option in the browser. This can avoid event interception of certain web pages, such as the issue of mandatory copyright information attached to such web pages, and optimize the word retrieval experience.
For Safari users, it is strongly recommended to turn on this option because Safari does not support Accessibility word retrieval, and the AppleScript word retrieval experience is far better than simulated shortcut key word retrieval.
To translate words, you need to turn on辅助功能
permissions. The mouse word scribing function will only trigger the application for auxiliary function permissions the first time it is used. Only after authorization can the automatic word scribing translation function be used normally.
For screenshot translation, you need to enable the屏幕录制
permission. The application will only automatically pop up the permission application dialog box the first time you use screenshot translation . If the authorization fails, you will need to go to the system settings to enable it later.
Currently only system OCR is supported, third-party OCR services will be introduced later.
System OCR supports languages: Simplified Chinese, Traditional Chinese, English, Japanese, Korean, French, Spanish, Portuguese, German, Italian, Russian, Ukrainian.
Currently, it supports system language recognition, Baidu and Google language recognition. However, considering the speed and instability of online recognition (Google also needs to circumvent the wall), the other two recognition services are only used to assist optimization.
The system language recognition is used by default. After tuning, the accuracy of the system language recognition is already very high and can meet the needs of most users.
If you still feel that the system's 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 a slower response speed, and the recognition rate will not be 100% consistent with the user expect. If you encounter incorrect recognition, it is recommended to manually specify the language type.
Currently it supports system TTS and supports Bing, Google, Youdao and Baidu online TTS services.
System TTS: The most stable and reliable, but the effect is not very good. Usually used as a backup option, that is, when an error is reported using other TTS, the system TTS will be used instead.
Bing TTS: The best overall effect, real-time synthesis of neural network speech, but it is more time-consuming, and the longer the text, the longer the synthesis time. Currently, it is limited to a maximum of 2000 characters, which takes about 10 minutes.
Google TTS: The English effect is good, the interface is stable, but it needs to be bypassed, and a maximum of 200 characters can be synthesized in one request.
Youdao TTS: The overall effect is good, the interface is stable, especially the pronunciation of English words is excellent, but it can only synthesize up to 600 characters.
Baidu TTS: The pronunciation of English sentences is very good and the accent is very distinctive, but it can only synthesize about 1000 characters at most.
Youdao TTS is used by default, and users can switch their preferred TTS service in the settings.
Since Youdao TTS works well for English words, Youdao TTS is used first for English words, and the default TTS service is used for other texts.
Except for system TTS, other TTS services are unofficial interfaces and may be unstable.
Currently supports Youdao Dictionary, Apple System Dictionary, Apple System Translator, DeepL, Google, Bing, Baidu and Huoshan Translation.
Note
The Chinese version of Google Translate is no longer available, and only the international version can be used, so you need to use an agent to use Google Translate.
language | Youdao Dictionary | ? Apple system translation | DeepL translation | Bing translation | Google Translate | Baidu Translate | volcano translation |
---|---|---|---|---|---|---|---|
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 | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
Easydict automatically supports the dictionaries that come with the system in the Dictionary App, such as the Oxford English-Chinese Dictionary (Simplified Chinese-English), Modern Chinese Standard Dictionary (Simplified Chinese), etc. You only need to enable the corresponding dictionary on the Dictionary App settings page.
In addition, Apple Dictionary also supports custom imported dictionaries, so we can add third-party dictionaries by importing dictionaries in .dictionary format, such as Concise English-Chinese Dictionary, Longman Contemporary Advanced English Dictionary, etc.
For details, see How to use Easydict? macOS system dictionary?
Version 1.3.0 starts to support OpenAI translation, which requires the use of OpenAI API key.
If you do not have your own OpenAI APIKey, you can use some open source projects to convert the third-party LLM interface into a standard OpenAI interface, so that it can be used directly in Easydict
.
For example, one-api, one-api is a good OpenAI interface management open source project, supporting multiple LLM interfaces, including Azure, Anthropic Claude, Google Gemini, Zhipu ChatGLM, Baidu Wenxinyiyan, iFlytek Spark Cognition, Alibaba Tongyi Qianwen, 360 Intelligent Brain, Tencent Hunyuan, Moonshot AI, Groq, Zero One Thing, Step Star, DeepSeek, Cohere, etc., can be used for secondary distribution management key, only a single executable file, already packaged Docker image, one-click deployment, ready to use out of the box.
Important
Version 2.6.0 implements a new SwiftUI settings page (supports macOS 13+) and supports the GUI method to configure the service API key. Other system versions need to use the command method in the Easydict input box.
Tip
If the computer hardware supports it, it is recommended to upgrade the macOS system to enjoy a better user experience.
easydict://writeKeyValue?EZOpenAIAPIKey=sk-xxx
View the APIKey (similar to other keys). If the query is successful, the results will be written to the clipboard.
easydict://readValueOfKey?EZOpenAIAPIKey
Currently, OpenAI supports three query modes: word, sentence and long translation, which are all enabled by default, and words and sentences can also be turned off.
Considering the token cost factor of OpenAI, a default close option is provided. After writing the following command, OpenAI will close the query by default and only query when the user manually clicks the expand button.
easydict://writeKeyValue?EZOpenAIServiceUsageStatusKey=1
// Close word search easydict://writeKeyValue?EZOpenAIDictionaryKey=0 // Turn off sentence analysis easydict://writeKeyValue?EZOpenAISentenceKey=0
Warm reminder: If you only occasionally don’t want to analyze sentences, you don’t need to turn off the sentence type. You only need to add a tilde ~ after [sentence], which will turn it into a translation type.
Set up a custom domain name and model
//Set the request address of the interface, such as https://api.openai.com/v1/chat/completions easydict://writeKeyValue?EZOpenAIEndPointKey=xxx // Set the usage model, such as gpt-3.5-turbo easydict://writeKeyValue?EZOpenAIModelKey=xxx // Set the list of available models, such as gpt-3.5-turbo, gpt-4-turbo easydict://writeKeyValue?EZOpenAIAvailableModelsKey=xxx
Since the official OpenAI interface has restrictions on user IPs, if you need a reverse proxy, you can refer to this anti-generation project cloudflare-reverse-proxy
The supported configuration items are the same as OpenAI, just replace OpenA with CustomOpenAI.
//Set API key easydict://writeKeyValue?EZCustomOpenAIAPIKey=sk-xxx //Set the request address of the interface, such as https://api.openai.com/v1/chat/completions easydict://writeKeyValue?EZCustomOpenAIEndPointKey=xxx // Set the usage model, such as gpt-3.5-turbo easydict://writeKeyValue?EZCustomOpenAIModelKey=xxx //Set the service query mode, 0 is the default, 1 is always off, 2 is always on easydict://writeKeyValue?EZCustomOpenAIServiceUsageStatusKey=xxx
Currently, some LLM service vendors provide limited free AI models, such as Alibaba's Lingji model service DashScope, Groq, Google Gemini, etc.
To facilitate new users to try out these large model AI translations, we have added a built-in AI translation service that supports the following service models:
Tongyi Qianwen open source series, open DashScope and receive a total of 1,000,000 tokens. The qwen1.5-32b-chat model is currently open for free for a limited time.
qwen1.5-32b-chat
qwen-turbo
baichuan2-13b-chat-v1
deepseek-7b-chat
internlm-7b-chat
llama3-70b-8192
mixtral-8x7b-32768
gemini-pro
However, please note that the above built-in models have certain usage restrictions (mainly restrictions on free quota). We do not guarantee that they can be used stably all the time. We recommend that users still use one-api to build their own large model services.
Gemini translation requires an API key, which can be obtained for free on the official website console.
easydict://writeKeyValue?EZGeminiAPIKey=xxx
The DeepL free version of the web API has a frequency limit for a user's single IP. Frequent use will trigger a 429 too many requests error. Therefore, version 1.3.0 adds support for the DeepL official API. The interface has not been written yet and needs to be enabled through commands.
If you have a DeepL AuthKey, it is recommended to use a personal AuthKey, which can avoid frequency restrictions and provide a better user experience. If not, you can use switching agents to avoid 429 errors.
Tip
Switch the proxy IP. This is a universal solution and works equally well for other frequency-limited services.
Enter the following code in the input box, xxx is your DeepL AuthKey, and then Enter
easydict://writeKeyValue?EZDeepLAuthKey=xxx
If you do not have your own AuthKey and need to use DeepL translation extensively, you can consider deploying an interface service that supports DeepL yourself, or use a third-party service that supports DeepL.
In this case, you need to set a custom DeepL interface address, where the value of EZDeepLTranslateEndPointKey should be the complete request URL. For example, the official DeepL interface is https://api-free.deepl.com/v2/translate
. If the custom interface requires AuthKey, The configuration method is the same as before, and the interface parameters are consistent with DeepL official.
The method of using a customized DeepL interface address is equivalent to the DeepL official AuthKey API form in the Easydict program.
Easydict supports DeepLX interface, please see #464 for details.
easydict://writeKeyValue?EZDeepLTranslateEndPointKey=xxx
By default, the web version of the API is used first. When the web version of the API fails, the personal AuthKey (if any) will be used.
easydict://writeKeyValue?EZDeepLTranslationAPIKey=0
Priority is given to using the personal AuthKey, and in case of failure, the web version of the API is used. If DeepL is used 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
Tencent Translate requires an API key. For ease of use, we have built in a key. This key has a quota limit and is not guaranteed to be usable all the time.
It is recommended to use your own API key. Each registered user of Tencent Translate will receive 5 million character traffic per month, which is enough for daily use.
// xxx Tencent Translated SecretId easydict://writeKeyValue?EZTencentSecretId=xxx // xxx Tencent Translated SecretKey easydict://writeKeyValue?EZTencentSecretKey=xxx
Currently, Bing Translate uses a web interface. When the frequency limit 429 error is triggered, in addition to switching the proxy, you can also manually set the request cookie to extend the life. The specific life span is not yet clear.
The specific steps are to use a browser to open Bing Translator, log in, and then execute the following code in the console to obtain cookies
cookieStore.get("MUID").then(result => console.log(encodeURIComponent("MUID=" + result.value)));
Finally, write the cookie to Easydict using the command
// xxx is the cookie obtained previously easydict://writeKeyValue?EZBingCookieKey=xxx
Note
Bing TTS also uses a web interface, which is also easy to trigger interface restrictions and will not report an error prompt. Therefore, if Bing is set as the default TTS, it is recommended to set cookies.
Mavericks Translation requires an API key. For ease of use, we have a built-in key. This key has a quota limit and is not guaranteed to be usable all the time.
It is recommended to use your own API key. Each registered user of Maverick Translation will be given 200,000 character traffic per day.
// xxx APIKey of Maverick Translation easydict://writeKeyValue?EZNiuTransAPIKey=xxx
Caiyun Xiaoyi requires a token. For ease of use, we have a built-in token. This token has certain restrictions and is not guaranteed to be usable all the time.
It is recommended to use your own Token. New users will receive a free translation quota of 1 million words upon registration.
// xxx Caiyun Xiaoyi’s Token easydict://writeKeyValue?EZCaiyunToken=xxx
Although Alibaba Translate currently supports the web version interface, this interface has certain limitations and is not guaranteed to be usable all the time.
It is recommended to use your own API key. Alibaba Translate has a free monthly quota of one million characters.
easydict://writeKeyValue?EZAliAccessKeyId=xxx easydict://writeKeyValue?EZAliAccessKeySecret=xxx
Currently, query services are mainly divided into two categories: word query (such as Apple Dictionary) and translated text (such as DeepL). Some other services (such as Youdao and Google) support both word query and text translation.
typedef NS_OPTIONS(NSUInteger, EZQueryTextType) { EZQueryTextTypeNone = 0, // 0EZQueryTextTypeTranslation = 1 << 0, // 01 = 1EZQueryTextTypeDictionary = 1 << 1, // 10 = 2EZQueryTextTypeSentence = 1 << 2, // 100 = 4};
Easydict can automatically enable corresponding query services based on the content of the query text.
Specifically, in smart query mode, when querying words, only services that support [Word Query] will be called; when text is translated, only services that support [Text Translation] will be called.
For word queries, the effect of supporting word query services is obviously better than simple translation, such as Apple Dictionary and Youdao Dictionary; but when translating long texts, it makes no sense to enable word query services, such as using Apple Dictionary to translate.
By default, all translation services support word queries (words are also a type of text), and users can manually adjust it. For example, if you set Google smart mode to only translate text, you only need to use the following command to change it to translation | sentence
.
easydict://writeKeyValue?Google-IntelligentQueryTextType=5
Similarly, for some services that support both word query and text translation, such as Youdao Dictionary, you can also set its smart mode to only query words, and set the type to dictionary
easydict://writeKeyValue?Youdao-IntelligentQueryTextType=2
By default, smart query mode is not turned on for all windows. Users can enable this feature manually:
easydict://writeKeyValue?IntelligentQueryMode-window1=1
window1 represents a mini window, window2 represents a side floating window, and a value of 0 means closed, and 1 means open.
Note
Smart query mode only indicates whether to enable the query service intelligently. Users can manually click the arrow button on the right side of the service to start the query at any time.
Supports convenient query within the Easydict app. If you encounter an unfamiliar word in the input box or translation results, you can right-click to bring up the menu and select the first "In-App Query".
Easydict supports URL scheme for quick query: easydict://query?text=xxx
, such as easydict://query?text=good
.
If the query content xxx contains special characters, URL encoding is required, such as easydict://query?text=good%20girl
.
Warning
The old version of easydict://xxx may cause problems in some scenarios, so it is recommended to use the complete URL Scheme: easydict://query?text=xxx
You need to install PopClip first, and then select the following code block. PopClip
will display "Install extension Easydict", click it.
-- #popclip-- name: Easydict-- icon: iconify:ri:translate-- language: applescripttell application "Easydict" launch open location "easydict://query?text={popclip text}"end tell
Reference: https://www.popclip.app/dev/applescript-actions
The settings page provides some setting modifications, such as automatically playing word pronunciation after querying, modifying translation shortcut keys, turning on and off services, or adjusting the order of services, etc.
Easydict has 3 window types, and different services can be set for them respectively.
Mini window: displayed when the mouse automatically draws a word.
Side floating window: displayed when shortcut keys are used to draw words and screenshots are translated.
Main window: closed by default, can be turned on in settings, and displayed when the program starts. (The main window function will be enhanced later)
Easydict has some in-app shortcut keys to make you more efficient during use.
Unlike the previous translation shortcut keys that take effect globally, the following shortcut keys only take effect when the Easydict window is displayed in the foreground.
Enter
: After entering the text, press Enter to start the query.
Shift + Enter
: Enter a newline.
Cmd + ,
: Open the settings page.
Cmd + Q
: Exit the application.
Cmd + K
: Clear the input box.
Cmd + Shift + K
: Clear the input box and query results, which is equivalent to clicking the clear button in the lower right corner of the input box.
Cmd + I
: Gather input boxes. (Focus Input)
Cmd + Shift + C
: Copy query content.
Cmd + Shift + J
: Copy the first translation result.
Cmd + S
: Play the pronunciation of the query text. (Play Sound)
Cmd + R
: Query again. (Retry Query)
Cmd + T
: Swap translation languages. (Toggle Translate Language)
Cmd + P
: Pin the window. (Pin Window, press again to unpin)
Cmd + W
: Close the window.
Cmd + Enter
: The Google search engine is opened by default. The search content is input text. The effect is equivalent to manually clicking the browser search icon in the upper right corner.
Cmd + Shift + Enter
: If the European Dictionary App is installed on the computer, a Eudic icon will be displayed to the left of the Google icon, and the action is to open the European Dictionary App to query.
As long as the query window is awakened, you can use the shortcut key Cmd + ,
to open the settings page. If you accidentally hide the menu bar icon, you can reopen it in this way.
If you find that the OCR recognition result is wrong, you can correct the OCR result by clicking the "Recognize as xx" button to specify the recognition language.
immersive-translate: A useful immersive bilingual web translation extension.
pot-desktop: A cross-platform word translation and OCR software.
ext-saladict: Saladict, a browser word search and translation extension.
openai-translator: A browser plug-in and cross-platform desktop application based on ChatGPT API.
Raycast-Easydict: Another open source project of mine, a Raycast extended version of Easydict.
Searching words and translating texts are very useful functions in daily life. I have used many dictionary translation software, but I was not satisfied with them until I met Bob. Bob
is an excellent translation software, but it is not open source software, and it no longer provides free application updates since it was put on the Apple Store.
As a developer and a beneficiary of many open source software, I felt that there should be a free open source version of Bob in the world, so I developed Easydict. Now, I use Easydict extensively every day. I like it very much and hope that more people can understand it and use it.
Open source makes the world a better place.
If you are interested in this project, we are more than welcome to contribute to the project and we will try to help as much as possible.
Currently, the project mainly has two branches: dev and main. The dev branch code is usually the latest and may contain some features under development. The main branch code is stable, and the code of the dev branch will be merged regularly.
In addition, we plan to migrate the project from objc to Swift, and gradually use Swift to write new function modules in the future, see #194
If you think the project needs improvement or have new feature ideas, please submit a PR:
If the PR is to fix a bug or implement a feature for an existing issue, please submit it to the dev branch.
If the PR is about a new function or involves major changes such as UI, it is recommended to open an issue to discuss it first to avoid duplication or conflict of functions.
This project was inspired by saladict and Bob, and the initial version was developed based on Bob (GPL-3.0). Easydict has made many improvements and optimizations on the original project, and many functions and UI are based on Bob.
The screenshot function is based on isee15's Capture-Screen-For-Multi-Screens-On-Mac and has been optimized on this basis.
The word-drawing function of the mouse refers to PopClip.
Easydict is under the GPL-3.0 open source license and is only for learning and communication. Anyone can obtain the product and source code for free. If you believe that your legal rights have been violated, please contact the author immediately. You are free to use the source code, but must include the appropriate license and copyright notice. Sponsorship support
Easydict is a free and open source non-profit project. It is currently mainly developed and maintained by the author. If you like this project and think it is helpful to you, you can consider sponsoring and supporting this project. Use love to generate electricity and let it go. farther.
If the power generation is enough to cover Apple's $99 annual fee, I will register a developer account to solve the application signature problem so that more people can use Easydict conveniently.