A macOS menu bar app that adds one-click localization to Xcode. Translate your .strings, .xcstrings, and .stringsdict files without leaving your workflow.
Run this in Terminal — it installs everything you need:
curl -fsSL https://raw.githubusercontent.com/i18n-agent/xcode-sync/main/scripts/setup.sh | bashThis will:
- Install the
i18nagentCLI (via npm) - Prompt you to log in and get an API key
- Download and install the menu bar app to
/Applications
Then:
- Open your Xcode project
- Click the globe icon in the menu bar
- Click Pull Translations — pick your languages and go
That's it.
| Action | What happens |
|---|---|
| Pull | Detects your active Xcode project, scans for localization files, lets you pick target languages, translates, and writes files to the correct .lproj directories |
| Push | Finds all .lproj translation files in your project and uploads them as translation memory pairs for future use |
The app auto-detects your active Xcode project via AppleScript — no manual configuration needed.
If you prefer to set things up yourself:
npm install -g i18nagent
i18nagent loginOption A — Download the DMG:
Download i18n-Agent.dmg from the latest release, open it, and drag to Applications.
If macOS says "can't be opened because it is from an unidentified developer", right-click the app → Open → click Open.
Option B — Build from source:
Requires Xcode 15+ and XcodeGen.
brew install xcodegen
git clone https://github.com/i18n-agent/xcode-sync.git
cd xcode-sync
xcodegen generate
xcodebuild -scheme i18nAgent -configuration Release buildCopy to Applications:
cp -R ~/Library/Developer/Xcode/DerivedData/i18nAgent-*/Build/Products/Release/i18n\ Agent.app /Applications/Open i18n Agent from Applications or Spotlight. A globe icon appears in your menu bar.
The first time you click Pull or Push, macOS will ask permission to control Xcode — click OK.
Open Settings from the menu bar dropdown (or Cmd+,) to see:
- CLI path — where
i18nagentis installed - API key — whether you're logged in
- Config file —
~/.config/i18nagent/config.json
- macOS 14.0+
- Node.js (for the CLI)
- i18n Agent account
# Unsigned (local testing)
./scripts/build-release.sh --dmg
# Signed + notarized (for distribution)
export DEVELOPER_ID_APPLICATION="Developer ID Application: Your Name (TEAM_ID)"
export APPLE_ID="[email protected]"
export APPLE_TEAM_ID="YOUR_TEAM_ID"
export NOTARIZE_PASSWORD="xxxx-xxxx-xxxx-xxxx"
./scripts/build-release.sh --notarize --dmgPush a version tag to trigger the GitHub Actions workflow:
git tag v1.0.0
git push origin v1.0.0Required GitHub secrets:
| Secret | Description |
|---|---|
DEVELOPER_ID_CERTIFICATE_BASE64 |
Base64-encoded .p12 Developer ID certificate |
DEVELOPER_ID_CERTIFICATE_PASSWORD |
Password for the .p12 file |
DEVELOPER_ID_APPLICATION |
Signing identity, e.g., Developer ID Application: Name (TEAM_ID) |
APPLE_ID |
Apple ID email for notarization |
APPLE_TEAM_ID |
Apple Developer Team ID |
NOTARIZE_PASSWORD |
App-specific password for notarization |
xcodegen generate
xcodebuild test -scheme i18nAgent -destination 'platform=macOS'A dummy Xcode project is included in the example/ directory for testing the Pull Translations workflow. It contains a minimal .xcodeproj with localization files you can use to verify the menu bar app end-to-end.
See example/README.md for full setup instructions.
MIT License - see LICENSE file.
Built by i18nagent.ai