Hi ~ This is liuyuxin. Due to the National Day holiday and some personal reasons, my weekly report has been on hiatus for a long time. I am planning to tidy up and resume updates starting next week.
In today's article, I will mainly talk about an open-source project I have been working on recently: a word translation software based on Flutter.
Background Review#
In my previous article Weekly 5: Learning Rust, I mentioned that one of the problems I encountered when switching from Windows to Linux was that the word translation software I used, "pot," did not support Ubuntu very well. Even though I am now using Kubuntu, the translation experience with "pot" is still poor, with long response times when using shortcut keys for word translation. So, I decided to develop my own word translation software with faster response times.
For the technology aspect, I chose the Flutter framework, which I am familiar with. At that time, I was busy expanding MeRead to the desktop platform, so I could also familiarize myself with Flutter's application on the desktop.
Development Process#
Thanks to Flutter's excellent development speed, I initially created a usable demo in just half an evening by calling the Baidu translation API for text translation. After the National Day holiday, I spent some time optimizing and improving the software, integrating more translation services. In terms of the "word translation" feature, it is already quite complete.
So, I decided to make it open-source. I randomly found an icon from iconfont to use as the logo, tidied up the code files, and created a documentation website using VitePress. Finally, I uploaded it to Github, and now we have "MeTranslate."
Why is it called "MeTranslate"? Because I have no design skills, I directly used the built-in Material You components in Flutter for UI design. Since it is a translation software that uses "Material Design," I simply named it "MeTranslate."
Here is the open-source repository:
The official website, which is still a work in progress, can be found here: https://metranslate.top
Currently, it has 0 stars. Please give it stars, raise issues, and submit pull requests!
Current Achievements#
Let's start with a screenshot:
Currently, "MeTranslate" has integrated 8 translation services and 2 domestic AI models, which are:
Description | Translation Service |
---|---|
No configuration required | DeepL Translation, Google Translation, Yandex Translation, Volcano Translation Free |
Requires API application | Baidu Translation, Caiyun Translation, Volcano Translation, Xiaoniu Translation, Youdao Translation |
AI models | MiniMax, Zhipu AI |
In terms of functionality, the following have been completed:
- Customizable shortcut keys and global fonts
- Automatic copying and deletion of line breaks
- Proxy settings
- AI model parameter adjustment
- And more, such as history records, auto-start on boot, custom window transparency, window following mouse, etc.
Currently, there are Windows and Linux versions available for download on Github. Please visit the following link to experience it:
https://github.com/gvenusleo/MeTranslate/releases/latest
Just to clarify, I developed and tested the software on Linux, so I'm not sure if there are any unknown bugs on Windows...
Future Plans#
Since the initial purpose of developing "MeTranslate" was for personal use, the software's feature design has always been based on my own needs. I have already completed my main requirement: word translation. In the future, I may consider adding the following features:
- Screenshot translation
- Document translation
- Integration of more translation services and AI models
- More shortcut key support
- And more...
Feedback on Github is also welcome!
Final Thoughts#
Only by experiencing it personally can one realize that Flutter's support for the desktop is not yet perfect. It does not support multiple windows, and font rendering is not great. Many desktop-specific requirements are prioritized after mobile development by the official team, and many features rely on community packages to implement. However, the performance is still satisfactory (at least the memory usage of "MeTranslate" is much better than "pot" currently).
Lastly:
- Thanks to leanflutter for providing a series of desktop Flutter packages.
- Thanks to pot for providing inspiration and design references.
- Thanks to my roommate, who is the first user of "MeTranslate" besides myself, for helping me catch bugs.