Recent

Author Topic: Trayslate 1.1.0 - Free tray translator with hotkeys and configurable services  (Read 1689 times)

AlexanderT

  • New Member
  • *
  • Posts: 27
Hello,

I’ve created a lightweight open-source tray translator for Windows:
Trayslate (a combination of “tray” and “translate”).

Main features:
  • Global hotkeys for instant translation
  • Works with clipboard and selected text
  • Configurable translation services
  • Runs silently in the system tray

The project is open-source and written in Lazarus (Free Pascal).
At the moment, only Windows is supported.

GitHub:
https://github.com/plaintool/trayslate

New Version is now available!
Download here
Changelog
« Last Edit: April 29, 2026, 12:12:34 pm by AlexanderT »

JuhaManninen

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 4715
  • I like bugs.
It does not compile on Linux.
"Registry" is inside {$IFDEF Windows} block in unit systemtool.
Unit langtool has a useless {$IFDEF Windows} block.
Then there are some Windows specific defines ...

Such an application can be written without any {$IFDEF Windows} or using the "Windows" unit.
LCLIntf ports part of Windows API and LCLType defines Windows compatible stuff.
« Last Edit: April 04, 2026, 09:56:29 am by JuhaManninen »
Mostly Lazarus trunk and FPC 3.2 on Manjaro Linux 64-bit.

AlexanderT

  • New Member
  • *
  • Posts: 27
It does not compile on Linux.
"Registry" is inside {$IFDEF Windows} block in unit systemtool..
Unit langtool has a useless {$IFDEF Windows} block.
Then there are some Windows specific defines ...

Such an application can be written without any {$IFDEF Windows} or using the "Windows" unit.
LCLIntf ports part of Windows API and LCLType defines Windows compatible stuff.

Hello,
Thank you for your feedback and for reviewing the code.

At the moment, I haven’t built or tested the application on Linux yet. Cross-platform support is planned for future versions. When I start working on Linux builds, I will review and clean up Windows-specific parts and unnecessary {$IFDEF} blocks.

In version 1.0.0, the application is intended and officially supported only on Windows.

dbannon

  • Hero Member
  • *****
  • Posts: 3808
    • tomboy-ng, a rewrite of the classic Tomboy
At the moment, I haven’t built or tested the application on Linux yet. Cross-platform support is planned for future versions. When I start working on Linux builds, I will review and clean up Windows-specific parts and unnecessary {$IFDEF} blocks.
:'(  :'(  :'(  :'(

When you do get around to Linux (Mac is easy) please have a look at my app, mentioned below. While what you have hopefully done will work with sensible Desktops like Mate, xfce or Cinnamon unfortunately, the most common default Desktop, Gnome, requires heroic efforts to get the System Tray working. Sad but true.

So, start testing with, my recommendation, Mate, to get your confidence up. Then try Gnome and KDE.  :o  :o

Davo 
Lazarus 3, Linux (and reluctantly Win10/11, OSX Monterey)
My Project - https://github.com/tomboy-notes/tomboy-ng and my github - https://github.com/davidbannon

AlexanderT

  • New Member
  • *
  • Posts: 27
When you do get around to Linux (Mac is easy) please have a look at my app, mentioned below. While what you have hopefully done will work with sensible Desktops like Mate, xfce or Cinnamon unfortunately, the most common default Desktop, Gnome, requires heroic efforts to get the System Tray working. Sad but true.

So, start testing with, my recommendation, Mate, to get your confidence up. Then try Gnome and KDE.  :o  :o

Hello Davo,

Thanks for the advice — I’m aware of the system tray issues in GNOME, so that’s something I’ll keep in mind. It might make sense to look into macOS first, since I haven’t had experience building for it yet.

Right now I’m trying to promote the project and improve its visibility to get more downloads and feedback. If you have any suggestions, I’d be glad to hear them.

Xenno

  • Jr. Member
  • **
  • Posts: 88
    • BS Programs
Is it okay to access Google Translate using REST with AndroidTranslate as User Agent's value?
Lazarus 4.0, Windows 10, https://www.youtube.com/@bsprograms

AlexanderT

  • New Member
  • *
  • Posts: 27
Is it okay to access Google Translate using REST with AndroidTranslate as User Agent's value?

Hello,

The application itself does not include any built-in integration with Google Translate.
The provided configurations are intended only as examples. If needed, you can use official APIs — for instance, obtain a Google Translate API key and create your own configuration based on it.
The User-Agent used in the example configuration was taken from a popular public repository (similar to py-googletrans), though I don’t remember the exact source.

Best regards,
« Last Edit: April 04, 2026, 03:48:17 pm by AlexanderT »

AlexanderT

  • New Member
  • *
  • Posts: 27
Trayslate v1.0.1 (2026-04-06)

[Full Changelog: click here]

Quote
✨ Enhancements
- Add global Ctrl+Shift+Number hotkeys for recent language pairs and set checked state for the current pair #6

🐛 Fixed Bugs
- Fixed installer issues #5
- Titles were not updated when showing the main window #3
- To determine the language, send only a text sample #2
- The application in some cases did not open by clicking on the tray icon #1

Xenno

  • Jr. Member
  • **
  • Posts: 88
    • BS Programs
Thanks for the clarity. It’s important for anyone using or collaborating on this app to understand that translation services have strict TOS regarding indirect access. We want to stay fully compliant to avoid any impact on our users. On a separate note, the app itself is looking great.
Lazarus 4.0, Windows 10, https://www.youtube.com/@bsprograms

AlexanderT

  • New Member
  • *
  • Posts: 27
Thanks for the clarity. It’s important for anyone using or collaborating on this app to understand that translation services have strict TOS regarding indirect access. We want to stay fully compliant to avoid any impact on our users. On a separate note, the app itself is looking great.

There are many projects on GitHub that use Google services by emulating a browser in one way or another. In my case, this kind of logic is not implemented in the code, but the configurations are even more transparent than the code itself.
I am aware that this can be a concern. For now, I have noted it in the disclaimer section of the README.md. I am also considering adding a warning directly inside the application itself to make this more visible to users. I may also take additional measures if needed.

AlexanderT

  • New Member
  • *
  • Posts: 27
New Version Changelog
« Reply #10 on: April 29, 2026, 12:07:19 pm »
v1.1.0 (2026-04-28)

🚀 New Features
  • Possibly use AI in configs, prompt is set via custom parameters #10
  • New config with patterns for AI #20
  • Ability to select an icon for the config #19
  • Added buttons to copy the contents of the source text and translation over Memo #17
  • Add configurable colors for frequent language pairs in config #13
  • Automatic check for updates with the ability to disable #7

✨ Enhancements
  • Check for updates in a thread #28
  • New config parameter: Allow translation only by translation button #24
  • New config parameter: Ability to disable real-time translation for the config #21
  • Adjusting colors of frequent pairs for dark mode #12
  • Protection against possible wiping of settings when a load fails #11

🐛 Fixed Bugs
  • When added to recent pairs, the language was added with the old case #27
  • When switch config add a pair to the recent panel in auto add mode #26
  • When saving settings, an error occurs if the config for swap the language pair is empty #25
  • By the button of the new translation, we stop the old one #23
  • Solved Ini saving problems #22
  • Bug that led to the config being overwritten when changing the config outside the editor #18
  • Real-time translation did not respond to the Enter Del Back keys #16
  • Carefully saving the config trying not to change the order of elements #15
  • When changing the list of configs, the language detection config setting could reset #14
  • Progress did not stop if there was nothing to translate #9
  • The recent language pair selector didn’t allow choosing the same pair in different configs #8

 

TinyPortal © 2005-2018