A Raycast extension that translates words and short text between languages with the AI provider of your choice — Gemini, Anthropic, OpenAI, or any OpenAI-compatible server — and saves a local translation history to help you build vocabulary over time.
Basic note file, or Quizlet-ready TSVAIza…), Anthropic (sk-ant-…), and OpenAI (sk-…) keys.https://openrouter.ai/api/v1 or http://localhost:11434/v1) and Translation Model. Local servers that need no key accept any value in API Key.| Provider | Default translation model | Pronunciation |
|---|---|---|
| Gemini | gemini-3.5-flash-lite | gemini-3.1-flash-tts-preview |
| Anthropic | claude-haiku-5-5 | macOS system voice |
| OpenAI | gpt-6-luna | gpt-4o-mini-tts |
| OpenAI-compatible | none — set Translation Model | macOS system voice |
OpenAI speech overrides tts-1 and tts-1-hd use the macOS system voice to preserve the selected pronunciation language. Pronunciation is unavailable when that language has no system voice.
API Server URL also routes Gemini, Anthropic, or OpenAI traffic through a proxy or gateway. Your API key is sent to whichever host you configure, so plain http is accepted only for local addresses, and URLs carrying credentials or a query string are rejected.
| Command | Description |
|---|---|
| Translate | Translate a word or short text |
| Translation History | Open your saved translations |
| View Flashcards | Review words you've saved |
English, Ukrainian, Polish, German, French, Spanish, Italian, Portuguese, Dutch, Czech, Swedish, Japanese, Korean, Chinese, Turkish, Russian, Belarusian
| Shortcut | Action |
|---|---|
⌘ C | Copy translation |
⌘ ⇧ L | Pronounce source word |
⌘ ⇧ R | Pronounce translation |
⌘ 1 → ⌘ 5 | Pick a word sense and save it to history |
⌘ ⇧ H | Open History (from Translate) |
⌘ ⇧ T | Toggle source and target languages |
⌘ D | Delete entry (from History) |
⌘ ⇧ D | Clear all history |
⌘ E | Export history as JSON |
⌘ ⇧ A | Export word history for Anki |
⌘ ⇧ Q | Export word history for Quizlet |
Use the Node version pinned in .nvmrc — Node 22.22.2, which bundles npm 10.9.7 and matches the current Raycast extension toolchain. Then run the extension in Raycast dev mode:
nvm use # Node 22.22.2 / npm 10.9.7
npm install
npm run dev
Regenerate
package-lock.jsononly on npm 10.x. npm 11 records optional peer dependencies differently, producing a lockfile that passes locally but fails the store CI'snpm ci.
Built with the Raycast API, TypeScript + React, and Zod for runtime validation. Each provider is a small adapter over plain fetch in src/lib/providers/; the prompt, response validation, and sense de-duplication are shared in src/lib/translation.ts.
Tests run with npm test. The translation quality evals read their keys from .env — copy .env.example to start. npm run eval scores the Gemini provider and needs only GEMINI_API_KEY, which the eval judge also uses; npm run eval:all scores Gemini, Anthropic, and OpenAI side by side and also needs ANTHROPIC_API_KEY and OPENAI_API_KEY.
MIT