Skip to content

Repository files navigation

Omarchy Translation

Local-model translation and localization-file workflows, directly in the Omarchy bar. Translate a short message, shape it for its destination, check the meaning with a quick language swap, or process an application's locale files without leaving the desktop. The bar icon opens it as an ordinary floating window, centred, that you can move, resize and keep beside your work.

The plugin is self-contained and dependency-light:

window → Python standard-library backend → local OpenAI-compatible API

No install hook runs, no cloud translation provider is required, and no third-party Python package is installed.

Window rule

Hyprland tiles new windows, and floating one after it appears reflows every tiled window on the workspace twice. Add this rule so the window floats from its first frame (Quickshell windows share one class, so the rule matches the title):

-- ~/.config/hypr/hyprland.lua
o.window({ class = "^org\\.quickshell$", title = "^Translation$" }, {
  float = true,
  center = true,
})

The window sets its own size; the rule deliberately names none.

Features

  • Text translation — editable source and target languages with common i18n presets, independent context and tone controls, and a copy-ready result
  • Quick swap — a translator-style swap button reverses the panes for a one-time semantic check; the reversed direction is temporary and never changes saved settings
  • Complete file output — translates user-facing values while preserving keys, code, placeholders, URLs, and the surrounding file structure
  • Locale-folder sync — previews missing or empty entries, preserves existing translations, fills only the gaps, and backs up every changed file
  • Local model configuration — OpenAI-compatible endpoint, optional model discovery, timeout, and optional API key managed from the window

Localization formats

Ecosystem Translate one complete file Fill missing locale entries
Web and cross-platform JSON, ARB, JavaScript, TypeScript, JSX, TSX, gettext PO JSON and ARB locale files
Android res/values/*.xml res/values-*/*.xml, including strings, plurals, and string arrays
Apple platforms .strings, .stringsdict, .xcstrings matching .lproj/*.strings files

Requirements

  • Omarchy Shell with third-party plugin support
  • Python 3.11 or newer
  • An OpenAI-compatible local model endpoint

Install

omarchy plugin add https://github.com/ryuhzk/omarchy-translation --enable --yes

Or from a local clone:

omarchy plugin validate ~/path/to/omarchy-translation
omarchy plugin add file://$HOME/path/to/omarchy-translation --enable --yes

The widget defaults to the center section. Move it at any time with:

omarchy bar move ryuhzk.translation --section center

Remove

omarchy plugin remove ryuhzk.translation

This unregisters the plugin and deletes its installed files. Private settings remain at ~/.config/omarchy-translation/config.env; remove that file only if you also want to discard the saved endpoint, model, and API key.

Usage

Use Text for short-form translation and Files for localization assets. The file workflow has two modes:

  1. Translate one file returns the complete translated document and refuses to overwrite the selected source file.
  2. Fill locale folder treats the selected file as canonical, discovers compatible target locales, previews the missing count, and updates only missing or empty entries.

Folder-sync backups are stored under ~/.local/state/omarchy-translation/backups/.

Shortcuts

Key Action
Ctrl+Enter Translate text
Ctrl+L Clear text and result
Ctrl+O Show or hide writing options
Ctrl+Shift+C Copy the current result
Esc Close the window

Settings

Key Default Description
panelWidth 800 Window width in layout units
Source language auto Detect the input language unless specified
Target language English Output language; common locale presets are included
Tone natural Writing style used for text translation
Context general Destination context used for text translation
Local endpoint http://127.0.0.1:8888/v1 OpenAI-compatible API base URL
Model (empty) Discover the endpoint's first model automatically
Timeout 5 Text request timeout in seconds

Translation settings are stored with mode 0600 at ~/.config/omarchy-translation/config.env. The API key is never returned to the window after it is saved.

Development

./check
omarchy plugin validate .

./check validates Python syntax, unit tests, manifest metadata, executable permissions, and English-only user-visible copy.

Security notes

  • Plugins run unsandboxed inside the long-lived Omarchy Shell; inspect the source before enabling it.
  • The backend accepts only local file paths, limits file size and batch count, validates placeholders after model output, and writes files atomically.
  • Single-file translation cannot overwrite its source. Folder sync changes only discovered locale targets and creates backups before replacement.
  • API credentials live only in the private configuration file and are sent solely to the configured endpoint.

License

MIT

About

Translate text and localization files from the Omarchy bar.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages