Your app speaks like a local. Here is how.
SIYAK takes the string, the screen it appears on and your glossary, and returns the target language that fits. You keep writing your source language in your code; the translations live on the server, learn from your corrections, and come back as a file your build already understands.
I want it working today
A key, an install, three lines, and the first Arabic on screen.
I am shipping a mobile app
Flutter and React Native: the cache survives the app being killed, and the first frame never waits.
My strings live on the server
Express, Laravel, Django: one call for eight languages, keyed by the names you already use. No column per language.
I need the strings back
JSON, ARB, .strings or CSV, named by your keys, from what your team approved.
Is a key in my bundle safe?
The honest answer, and the two controls that make it true.
Nothing is translated
Nine symptoms, in the order they actually happen.
There is no SDK for my stack
Plain HTTP. Four endpoints, one header, JSON both ways.
The shortest version
import { init } from 'siyak-js';
const { t } = init({ apiKey: 'sk_live_…', target: 'ar' });
t('Your card expires soon', 'screen:checkout'); // → بطاقتك تنتهي قريبًاThe first call returns your own string and asks the server in the background; every call after that returns the translation. Nothing here blocks a paint, and nothing here throws.
Read the quick startWhat this deployment allows
Read live, not copied from a marketing page — these are the numbers the API enforces right now.
| Plan | Characters / month | Projects | Requests / minute | Price |
|---|---|---|---|---|
| free | 15K | 1 | 60 | — |
| pro | 250K | 2 | 1000 | 250 EGP |
| agency | 1M | 5 | 1000 | 950 EGP |
Read live from this deployment. The operator can move any of these numbers without a release.
Every page
- Quick start6 min
- How a string is resolved5 min
- JavaScript — browser and Node7 min
- React (Vite, CRA)4 min
- Next.js (App Router)4 min
- Flutter6 min
- HTTP API6 min
- From your backend7 min
- Keys, origins and quotas4 min
- The dashboard, screen by screen5 min
- Exporting strings into your repo5 min
- Nothing is translated4 min