[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80428":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":13,"lastSyncTime":24,"discoverSource":25},80428,"my-translator-mobile","phuc-nt\u002Fmy-translator-mobile","phuc-nt",null,"TypeScript",57,21,56,2,0,1,4.03,false,"main",true,[],"2026-06-12 02:04:02","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"assets\u002Fimages\u002Ficon.png\" width=\"96\" alt=\"My Translator icon\" \u002F>\n\n# My Translator — Mobile\n\n**Live translation for talks and lectures.**\nPoint your phone at the speaker, read the talk in your language, in real time.\n\nA lightweight stand-in for a human cabin (booth) interpreter when there isn't one.\n\n\u003C\u002Fdiv>\n\n---\n\n## Install\n\n### iPhone \u002F iPad — TestFlight\n\n1. Install **[TestFlight](https:\u002F\u002Fapps.apple.com\u002Fapp\u002Ftestflight\u002Fid899247664)** from the App Store.\n2. Open this link on your device → tap **Accept** → **Install**:\n\n   **https:\u002F\u002Ftestflight.apple.com\u002Fjoin\u002FFw9VJXfE**\n\n### Android — APK\n\n1. Open the **[latest release](https:\u002F\u002Fgithub.com\u002Fphuc-nt\u002Fmy-translator-mobile\u002Freleases\u002Flatest)** on your phone and download the `.apk`.\n2. Allow your browser to \"install unknown apps\" when prompted.\n3. Open the file → **Install** (tap **Install anyway** if Play Protect warns).\n\n---\n\n## First-run setup\n\n1. Open the app — it sends you straight to **Settings** (no API key saved yet).\n2. Paste **one** API key:\n   - **Soniox** — get one at \u003Chttps:\u002F\u002Fconsole.soniox.com>. Cheap (~$0.12\u002Fhr), text only. **Recommended for budget.**\n   - **OpenAI** — get one at \u003Chttps:\u002F\u002Fplatform.openai.com\u002Fapi-keys>. ~$4\u002Fhr, highest translation quality. Tip: set a low monthly cap.\n   - **Qwen** — get a DashScope key (Singapore region) at \u003Chttps:\u002F\u002Fbailian.console.alibabacloud.com>. Currently a **free preview**, fastest streaming. Source language must be picked explicitly.\n\n   Hướng dẫn chi tiết bằng tiếng Việt: [docs\u002Fapi-key-guide-vi.md](docs\u002Fapi-key-guide-vi.md)\n   So sánh chi tiết các engine: [docs\u002Fengine-comparison-vi.md](docs\u002Fengine-comparison-vi.md)\n3. Pick your **source** and **target** language from the dropdowns (60+ languages on Qwen, auto-detect on Soniox\u002FOpenAI).\n4. Back on the main screen, tap **Start**, allow the microphone, and listen.\n\nAfter **Stop** you can **Copy** \u002F **Share** the transcript, or **Summarize** the\nsession with OpenAI (needs an OpenAI key — works even after a Soniox session).\nFinished sessions are saved on-device; review them under 🕘 in the header. Each\nsaved session can be searched, **Exported** as a Markdown file (also kept under\n**Saved files**), and is **auto-named** by OpenAI when a key is set. The screen\nstays awake while translating, and **Settings → Check for updates** pulls the\nlatest over-the-air JS bundle.\n\n> Your key stays in the device's secure keychain. Audio goes **straight to the provider you chose** — no backend, no tracking. Session history is stored **only on your device** and never leaves it. See [PRIVACY.md](PRIVACY.md).\n\n---\n\n## Screenshots\n\n\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"docs\u002Fapp-store-screenshots\u002Freadme-thumbs\u002F01-live-translation-6.9.png\" width=\"240\" alt=\"Live translation\" \u002F>\n\u003Cimg src=\"docs\u002Fapp-store-screenshots\u002Freadme-thumbs\u002F02-settings-byok-6.9.png\" width=\"240\" alt=\"Settings — bring your own key\" \u002F>\n\u003Cimg src=\"docs\u002Fapp-store-screenshots\u002Freadme-thumbs\u002F03-empty-state-6.9.png\" width=\"240\" alt=\"Ready to start\" \u002F>\n\n*Live translation · Settings (bring your own key) · Ready to start*\n\n\u003C\u002Fdiv>\n\n---\n\n## Engines\n\n| Engine | Cost | First final (≈) | Strength | Source transcript |\n| --- | --- | ---: | --- | --- |\n| **Soniox** | ~$0.12\u002Fhr | ~3s | Cheapest, stable | Yes (dual panel) |\n| **OpenAI Realtime** | ~$4\u002Fhr | ~7s | Most natural translation | Yes (dual panel) |\n| **Qwen Live Flash** | Free preview | **~4s** | Fastest streaming, 60+ langs | No (translation-only) |\n\nSoniox + OpenAI auto-detect the spoken language. Qwen Live needs an explicit\nsource language (auto isn't reliable on real mic input). Spoken voice output is\ndisabled (the speaker echoes back into the mic and causes a translation loop)\n— translations are read on screen only. Full comparison:\n[docs\u002Fengine-comparison-vi.md](docs\u002Fengine-comparison-vi.md).\n\n---\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>For developers\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n### Stack\n\nExpo SDK 54 · React Native 0.81 · TypeScript · Expo Router v4 · NativeWind v4 ·\n`react-native-audio-api` (mic + PCM playback) · `expo-secure-store` (keys) ·\n`expo-file-system` + `expo-sharing` (Markdown export) · `expo-keep-awake` ·\n`expo-haptics` · `expo-updates` (in-app OTA check).\nDistribution: EAS Build → TestFlight (iOS) + APK on GitHub Release (Android).\n\n### Develop\n\n```bash\nnpm install\nnpx expo prebuild --clean\nnpx expo run:ios       # or: npx expo run:android\n# iterate after first native build:\nnpx expo start --dev-client\n```\n\nSee [docs\u002Freact-native-dev-vs-production.md](docs\u002Freact-native-dev-vs-production.md)\nfor how the dev client \u002F Metro \u002F production builds differ, and\n[docs\u002Feas-update-guide.md](docs\u002Feas-update-guide.md) for shipping OTA\n(over-the-air) JS updates without a rebuild.\n\n### Build & ship\n\n```bash\nnpm i -g eas-cli && eas login\n\n# iOS → TestFlight\neas build --profile production --platform ios\neas submit --platform ios --latest\n\n# Android → APK (download artifact, attach to a GitHub Release)\neas build --profile production --platform android\n```\n\n`eas.json` profiles: `development` (dev client), `preview` (internal APK \u002F ad-hoc iOS), `production` (TestFlight + signed APK).\n\n### Layout\n\n```\napp\u002F        Expo Router screens (index = translate, settings, history, exports)\nsrc\u002F\n  engines\u002F    soniox-client.ts, openai-realtime-client.ts,\n              qwen-realtime-client.ts (qwen3-livetranslate-flash-realtime)\n  lib\u002F        audio-capture, audio-output-queue, secure-keys, languages,\n              history-store, session-export, haptics, ota-update\n  components\u002F transcript-stream.tsx, session-detail-view, icon-button\n  state\u002F      Settings + Session contexts\n```\n\n\u003C\u002Fdetails>\n\n## License\n\nSame as desktop [my-translator](https:\u002F\u002Fgithub.com\u002Fphuc-nt\u002Fmy-translator).\n","My Translator — Mobile 是一款实时翻译应用，旨在为演讲和讲座提供即时翻译服务。用户只需将手机对准演讲者，即可在屏幕上实时阅读到所选语言的翻译内容。该应用支持多种翻译引擎（如Soniox、OpenAI和Qwen），允许用户根据需求选择最合适的API密钥进行配置。其核心功能包括语音识别与翻译、多语言支持以及会话记录保存等。特别适合于国际会议、在线课程或任何需要即时跨语言沟通的场合使用。通过简洁直观的操作界面，即使是没有专业翻译人员在场的情况下也能轻松实现高质量的语言交流。","2026-06-11 04:00:42","CREATED_QUERY"]