Thanks for taking the time to contribute.
Prerequisites: Rust stable, Node.js 18+, pnpm 10+.
On Linux, install the Tauri system dependencies first:
sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev patchelfThen:
git clone https://github.com/tonhowtf/omniget.git
cd omniget
pnpm install
pnpm tauri devRun these locally — CI runs the same checks:
cd src-tauri
cargo fmt --all
cargo clippy --workspace --all-targets
cargo test --workspace
cd ..
pnpm checkTranslations live in two places:
Main app (src/lib/i18n/):
-
Copy
en.jsonto<locale>.json(e.g.es.json) and translate the values. -
Register the locale in
src/lib/i18n/index.tsby adding an entry to theloadersarray:{ locale: "es", key: "", loader: async () => (await import("./es.json")).default, },
-
Add a
lang_<locale>entry (e.g."lang_es": "Español") undersettings.appearancein everysrc/lib/i18n/*.jsonfile. -
Add a matching
<option>to the language selector insrc/routes/settings/+page.svelte:<option value="es">{$t('settings.appearance.lang_es')}</option>
-
Regenerate the translation key types:
pnpm generate:i18n-keys
Browser extension (browser-extension/chrome/_locales/ and browser-extension/firefox/_locales/):
- Create an
<locale>/folder in both (e.g.es/). - Copy
en/messages.jsoninto it and translate themessagefields. Leave the keys anddescriptionfields unchanged.
Run pnpm check before opening the PR.
Follow Conventional Commits: feat:, fix:, refactor:, docs:, chore:. Keep the subject under 72 characters.
Do not file public issues for security problems. See SECURITY.md.
By contributing you agree that your changes are licensed under GPL-3.0.