Your app speaks like a local, not Google Translate.
SIYAK sends the screen, the tone and your glossary with every string — so the word Report in your code becomes «إبلاغ» in the moderation queue and «تقرير» in analytics. Three lines, one request, and a free tier that never expires.
import { init } from 'siyak-js';const { t } = init({ apiKey: 'sk_live_…', target: 'ar' });t('Your card expires soon', 'screen:checkout'); // → بطاقتك تنتهي قريبًا
Same word, same API call. The only difference is the context you pass.
What SIYAK is
SIYAK is a translation service for software. You give it a piece of text and tell it where that text appears, and it returns the Arabic your team decided on for that exact screen — through an SDK in your app or one JSON call from your server. It is not a chat translation tool and not a document translator: it exists because a word in an interface is not the same word in a paragraph.
Every string is stored under its text, its target language and its context together, so «Account» on a checkout screen and «Account» in a profile menu are two separate entries that may carry two separate translations. The first time SIYAK sees a string a model drafts it and the draft waits in your Inbox for a person; every call after that returns the approved answer from a cache, at no cost and in milliseconds. Terms you pin in the glossary are put in front of the model on every request, and an answer that ignores one is flagged rather than served quietly.
It is built for products written for Arabic-speaking users — Flutter and React Native apps, React and Next.js sites, Node services, and any other backend that can send JSON. Plans are billed in Egyptian pounds through a mobile wallet with no card on file, the free tier carries no expiry, and when your strings are ready you export them as flat JSON, nested JSON, CSV, an ARB file or Localizable.strings and put them in your own repository.
A dictionary translates words. Context translates meaning.
Pass the screen, not just the string
t("Report", "screen:moderation") — the second argument is what decides the translation.
Your glossary is a hard constraint
Pin «Report → إبلاغ» once and no model run ever drifts from it again.
Unknown strings land in an Inbox
Auto-discovery files every string you have not declared yet as pending review, so nothing ships to users half-translated by accident.
Every one of them answers to one Arabic code. None of them have your context.
What each vendor publishes for itself, read from its own pricing page on 16 October 2026. Where there is no number, this table says so instead of guessing one.
| Vendor | Free tier and price, as published | For Arabic |
|---|---|---|
| Translation APIs | ||
| DeepL API | Its pricing page names API plans but prints no character allowance | One code: Arabic. No regional variants at all |
| Azure Translator | 2 million characters free a month on F0, then pay-as-you-go | Portuguese (Portugal) and French (Canada) exist. Egyptian Arabic does not |
| Google Cloud Translation | No entry in its always-free table; a $300 credit valid 90 days | Arabic, and Arabic (Saudi Arabia). Not Egypt |
| Claude / GPT | No standing free tier; priced per million tokens | Whichever Arabic the model reaches for that day |
| Localisation platforms | ||
| Tolgee | Free: 30,000 words, 3 seats. Then €58 a month billed annually | No dialect option published |
| Localazy | Free: 200 source keys. Paid plans are tiered by source-key count, billed annually | No dialect option published |
| Crowdin | Free plan; paid from $50 a month | No dialect option published |
| Lokalise | No free plan; a 14-day trial; Explorer covers 60,000 words a year, price not published | No dialect option published |
| Phrase | Price not published; capacity-based plans starting at 2.5 million words a year | No dialect option published |
| Siyak | Free: 15,000 characters a month with no card. Pro is $5 for 250,000 | Any locale tag you send — ar, ar-EG, zh-Hans — with the screen and your glossary in the request; every Arabic tag is answered in Modern Standard Arabic |
15,000 characters every month, no card, no countdown. A 14-day trial and a $300 credit that expires in 90 days are not free tiers.
Context, project type and your glossary ride in every request, and the answer is checked against that glossary before it reaches you — the glossary-drift counter in the dashboard is the proof.
Keys live in your backend and translations live beside them. Adding a language is a row, not a migration and not a new column per locale.
Vodafone Cash inside Egypt, TapTap Send into the same number from 30+ countries. No card is charged and no card details are stored.
Pricing that fits a solo developer
Per month, per project. Pay in EGP with Vodafone Cash, or in USD from anywhere else.
- Tolgee€58 / month
- Crowdin$50 / month
- Siyak Pro$5
Their own published numbers, in their own currency — see the table above.
- Unlimited strings
- Auto-discovery inbox
- Siyak badge in your app
- No badge
- 1000 req/min
- Glossary enforcement
- 1000 req/min
- Per-client API keys
Frequently asked questions
What is SIYAK?
A translation service for apps that takes the screen into account. You send a string with the screen it appears on and your glossary; SIYAK keeps the translation your team approved and serves it back, through SDKs for Flutter, React and Node.js or one JSON endpoint for anything else.
Which languages can it translate into?
Any language a BCP-47 tag names. Choose it from a list in the dashboard or type the tag, and it goes through the same prompt with the same per-string context and glossary rules — tr, fr, de, es, he, ur, th, ja, ko and zh-Hans were each run against the live service. The limits are about volume, not languages: 8 target languages per project, and 40 string-language pairs per batch call. What has been read by a person is the next question.
Which languages has anyone actually checked?
Arabic is the checked one: every Arabic answer on this site, in the SDK demos and in the docs has been read by a person, and Arabic means Modern Standard Arabic written the way apps phrase things. Every other target goes through the same pipeline with the same context and glossary rules, but nobody has reviewed a pass of them yet, so what arrives there is model output, not reviewed work. Egyptian colloquial is a separate claim and it is not implemented: ar-EG and ar-SA are answered in MSA, and this page does not claim a colloquial register.
How is this different from Google Translate or DeepL?
They translate whatever you send, every time you send it. SIYAK asks a model only the first time it sees a string, the answer goes to your Inbox for a person to approve, and every later call returns that approved translation — no re-guessing, and no charge for strings you already own.
Is the free tier really free forever?
Yes: 15,000 characters every month with no card and no countdown. It is a standing tier, not a trial — your app keeps running on it as long as you want.
How do I pay?
From inside Egypt by Vodafone Cash, and from 30+ countries through TapTap Send into the same number. You report the transfer in the dashboard and a person confirms it — no card is charged and no card details are stored.
Do I have to change my database?
No. Your keys and strings stay where they are and the translations live beside them on the server. Adding a language is a new row, not a migration and not a column per locale.