[Google Translate] update `Keyboard` shortcuts + modernize to use latest React
Description
- Make
Shortcuts cross-platform - Modernize to latest Raycast configuration with updated
React(hopefully fixes #23410) - Fix "Javanese" language code
Screencast
Checklist
- [X] I read the extension guidelines
- [x] I read the documentation about publishing
- [X] I ran
npm run buildand tested this distribution build in Raycast - [x] I checked that files in the
assetsfolder are used by the extension itself - [x] I checked that assets used in the
READMEare located outside the metadata folder if they were not generated with our metadata tool
Thank you for your contribution! :tada:
🔔 @gebeto @FezVrasta @ickas @metakirby5 @tangerine1202 @nirtamir2 @pernielsentikaer @rasitayaz @Popalay @LitoMore @channingkuo @likid1412 you might want to have a look.
You can use this guide to learn how to check out the Pull Request locally in order to test it.
📋 Quick checkout commands
BRANCH="ext/translate"
FORK_URL="https://github.com/xmok/raycast-extensions.git"
EXTENSION_NAME="google-translate"
REPO_NAME="raycast-extensions"
git clone -n --depth=1 --filter=tree:0 -b $BRANCH $FORK_URL
cd $REPO_NAME
git sparse-checkout set --no-cone "extensions/$EXTENSION_NAME"
git checkout
cd "extensions/$EXTENSION_NAME"
npm install && npm run dev
Due to our current reduced availability, the initial review may take up to 10-15 business days.
Greptile Summary
This PR successfully modernizes the Google Translate extension to support cross-platform operation and resolves the React compatibility issue reported in #23410.
Key Changes:
- Updated keyboard shortcuts to cross-platform format (macOS:
cmd, Windows:ctrl/alt) - Upgraded to latest Raycast API (1.104.1) and utils (2.2.2) with modern React support
- Migrated ESLint configuration to flat config format using
@raycast/eslint-config - Removed manual
TranslatePreferencesinterface (now auto-generated inraycast-env.d.ts) - Updated TypeScript to ES2023 with modern JSX transform
- Added Windows platform support to
package.json - Added README documentation
Technical Implementation:
The shortcuts now use platform-specific modifiers: {{ macOS: {{ modifiers: ["cmd"], key: "t" }}, Windows: {{ modifiers: ["ctrl"], key: "t" }} }}. Some shortcuts like MoveUp/MoveDown use Raycast's built-in common shortcuts for consistency.
The dependency updates resolve the React hook error from #23410 by upgrading from React 17 to React 19, ensuring proper hook context handling.
Confidence Score: 5/5
- This PR is safe to merge - it's a clean modernization with no breaking changes
- The changes are straightforward dependency updates and keyboard shortcut migrations. The code follows Raycast best practices, removes deprecated patterns (manual Preferences interface), and adds proper cross-platform support. All changes are well-documented in the changelog.
- No files require special attention
Important Files Changed
| Filename | Overview |
|---|---|
| extensions/google-translate/package.json | Updated dependencies to latest Raycast API (1.104.1) and utils (2.2.2), upgraded React, TypeScript, ESLint, and other dev dependencies. Added Windows platform support. |
| extensions/google-translate/src/translate.tsx | Updated keyboard shortcuts to use cross-platform format with separate macOS/Windows specifications. No functional changes to translation logic. |
| extensions/google-translate/src/actions.tsx | Updated keyboard shortcuts to cross-platform format (cmd→ctrl on Windows, opt→alt on Windows). Clean implementation with no issues. |
| extensions/google-translate/eslint.config.js | Migrated to modern ESLint flat config format using @raycast/eslint-config. Clean migration with proper imports. |
| extensions/google-translate/tsconfig.json | Updated TypeScript config to ES2023, added jsx react-jsx transform. Modern configuration aligned with latest Raycast standards. |
| extensions/google-translate/src/types.ts | Removed manual TranslatePreferences interface definition (now auto-generated in raycast-env.d.ts). Follows best practices. |
Published to the Raycast Store: https://raycast.com/gebeto/translate
:tada: :tada: :tada:
We've rewarded your Raycast account with some credits. You will soon be able to exchange them for some swag.