new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
Free, open-source tool to translate your App Store and Google Play listings using AI. Support for 40+ languages.
MarketingJavaScript · HTMLGitHub @fayharinnOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Translate iOS/Android store metadata using AI. Create, localize and send screenshots to stores.
Taken from the repository README
Loading the full README.
Read the full README ↗Ship your app worldwide — translate, price, and design your store listings with AI.
One tool for the whole store pipeline: .xcstrings translation · App Store Connect & Google Play sync ·
ASO keywords · device screenshots · GDP-fair subscription pricing — plus an AI agent that drives it all by chat.
Going global is brutal when you do it by hand:
| The manual way | With StoreLocalizer | |
|---|---|---|
| 🌍 Localizing 40+ languages | Weeks of copy-paste | Minutes — batched AI translation, synced to your stores |
| 💸 Pricing in 175 countries | Guesswork | GDP-adjusted recommendations per market |
| 📸 Screenshots per language | A designer's nightmare | Generated for every locale from one template |
| 🔑 ASO keywords per locale | Spreadsheets | Suggested, scored & reviewed per keyword |
Everything talks directly to App Store Connect and Google Play Console — no exports, no copy-paste.
Tell it what you want in plain words and it calls 24 functions against your real accounts: list apps and versions, audit localizations, translate and push "What's New" to five locales, mine ASO keywords from AppCompete, or find what's missing in your .xcstrings. It can even see your App Store screenshots — ask for feedback and it reviews each one, with an in-chat gallery to switch locales and a lightbox to zoom in.
Drop an .xcstrings file from Xcode, pick your target languages, translate everything with AI, and export straight back to your project. Format specifiers (%lld, %@) and protected brand words are preserved, and batched + concurrent requests make 1,000 strings a coffee-break job. Every translation stays one click away from a manual fix:
Generate keywords with AI — or plug your AppCompete account and work with real data: suggestions scored by popularity & difficulty with a live capacity gauge, keywords mined from the competitors you track, and a per-keyword review that tells you what to keep, replace, or stop dreaming about:
Connect once with your API keys — then translate descriptions, what's new, keywords and promotional text across every locale, manage screenshots, create versions, and push everything back without leaving the browser.
/en-US, /fr-FR… folder is validated, uploaded and placed per locale in one go.A device-frame screenshot generator that lives next to your translations. Gradient preset galleries, 2D/3D frames (Three.js), AI-generated marketing headlines, one-click caption translation to every project language — then export all locales as a ZIP, sized for any store format.
Set your USA base price and get a recommended price for every storefront based on local purchasing power — then push them to App Store Connect and translate your subscription display names while you're at it.
Pick a provider in the sidebar, paste a key, done — keys never leave your browser.
| Provider | Models | Notes |
|---|---|---|
| OpenAI | gpt-5.6-luna | model list fetched live from your account |
| Anthropic (Claude) | haiku-4.5 · sonnet-4.6 · opus-4.8 | direct browser access |
| Google (Gemini) | 3.1-flash-lite · 3.5-flash · 3.1-pro | JSON-native responses |
| DeepSeek | v4-flash · v4-pro | |
| Cloudflare Workers AI | Llama 3.3/4 · GPT-OSS · Mistral… | 13 open-weight LLMs |
| AWS Bedrock | Claude family | bearer-token auth |
| Azure OpenAI | your deployments | |
| GitHub Models | gpt-4o · gpt-4.1 | free-tier friendly |
The Agent needs function calling — it works with OpenAI, Anthropic, Gemini, Azure, Bedrock, GitHub Models and DeepSeek.
git clone https://github.com/fayharinn/StoreLocalizer.git
cd StoreLocalizer
bun install # or npm install
bun run dev # → http://localhost:5173
That's it for local use — the dev server proxies all App Store Connect / Google Play calls for you.
No install? Use the hosted version at storelocalizer.com.
Desktop app (Tauri 2, Rust toolchain required):
bun run tauri:dev # develop
bun run tauri:build # package
.p8 file.p8 is encrypted with your password before being stored┌─────────────────────────────────────────────────────────────────────────────┐
│ App Store Connect Auth Flow │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ password ┌──────────────┐ │
│ │ .p8 Key │ ──────────────► │ Encrypted │ ◄─── Stored in localStorage │
│ │ (file) │ encrypt │ .p8 Key │ (persistent) │
│ └────┬─────┘ └──────┬───────┘ │
│ │ │ │
│ │ sign │ password │
│ │ │ decrypt │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────────┐ │
│ │ JWT │ ◄───────────────│ Decrypted │ │
│ │ Token │ sign │ .p8 Key │ ◄─── In memory only │
│ └────┬─────┘ └──────────────┘ (cleared on reload) │
│ │ │
│ │ cache │
│ ▼ │
│ ┌──────────────┐ │
│ │ sessionStorage│ ◄─── JWT cached for ~19 min │
│ │ (JWT only) │ Auto-reconnect on page reload │
│ └──────┬───────┘ │
│ │ │
│ │ Bearer token │
│ ▼ │
│ ┌──────────────┐ │
│ │ App Store │ │
│ │ Connect API │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Security model in one paragraph: your .p8 key is encrypted in-browser (AES-GCM, PBKDF2 100k iterations) before touching localStorage; the decrypted key only ever exists in memory. JWTs are signed client-side with jose. AI provider keys go straight from your browser to the provider. The only backend is a thin CORS proxy that forwards your Authorization header — it stores nothing. It's all open source: audit it.
The web app is static (Vite). Apple & Google block browser CORS, so production needs the bundled Cloudflare Worker as a proxy:
# 1. Deploy the CORS proxy worker
wrangler deploy -c wrangler.proxy.jsonc
# 2. Point the site at it
echo 'VITE_ASC_PROXY_URL=https://your-worker.workers.dev' >> .env.production
echo 'VITE_GP_PROXY_URL=https://your-worker.workers.dev' >> .env.production
# 3. Ship the site
bun run deploy:cloudflare # Cloudflare Pages
bun run deploy # …or GitHub Pages
Remember to add your domain to ALLOWED_ORIGINS in worker/index.js.
React 19 + Vite · Tailwind + shadcn/ui · Three.js (3D device frames) · jose (ES256 JWT signing in-browser) · Tauri 2 (desktop) · Cloudflare Workers (CORS proxy)
src/
├── components/ # six pages: agent · xcstrings · appstore · googleplay · screenshots · subscriptions
├── hooks/ # top-level state (useAppState, useTranslation, …)
├── services/ # every external call: ASC, Google Play, 8 AI providers, AppCompete + the agent's tool registry
└── utils/ # xcstrings parser, AES-GCM crypto
Issues and PRs are welcome! Run bun run lint before submitting. The screenshots in this README are generated with node scripts/take-screenshots.mjs against the dev server (scripts/take-agent-screenshot.mjs for the agent shot).
This grid refreshes automatically on every push.
Credits: screenshot generator originally based on appscreen by Stefan from yuzuhub.com.
AGPLv3 — free to use, modify and self-host; derivatives must stay open source.
Crafted with ❤️ by Fayhe
⭐ If this saves you a localization weekend, a star helps others find it.