DocsQuick start6 min read
Quick start
From an empty account to an Arabic UI in about ten minutes. You write three lines; everything else is a decision about where the string appears.
siyak-js 0.1.0 · npm tarball
Browser, Node and React Native. npm install ./siyak-js-0.1.0.tgz
siyak_flutter 0.1.0 · source archive
Unpack, then point pubspec.yaml at the folder with a path dependency.
1 · Get a key
- 1Sign up, then open Projects and create one. A project is a namespace: its glossary, its strings and its keys never mix with another app.
- 2Open API Keys and create a key for that project. The full string is shown once, and only its first characters are kept for display — copy it now or generate another.
- 3Choose test for the first run. A test key behaves identically but never bills real characters and refuses live traffic.
2 · Install
terminal
npm install ./siyak-js-0.1.0.tgz # the file from the download above # or, if you cloned the source: npm install ../siyak/packages/siyak_js # pnpm, yarn and bun take the same tarball path
Flutter takes the same archive: unpack it and point pubspec.yaml at the folder. See the Flutter page.
3 · Three lines
app.js
import { init } from 'siyak-js';
const { t } = init({
apiKey: process.env.SIYAK_KEY, // sk_live_… or sk_test_…
endpoint: process.env.SIYAK_URL, // printed on your API keys screen
target: 'ar', // or 'ar-EG', 'he', 'ur'…
source: 'en', // optional; the project's default is used when omitted
});
t('Your card expires soon', 'screen:checkout');
// first call → the source string, and a request queued in the background
// every call after that → بطاقتك تنتهي قريبًا4 · Wait for the network, or do not
main.js
// Node.js, a CLI, or a server render: await the work.
const text = await siyak.translate('Continue', 'screen:checkout');
// A browser app usually wants neither await nor a spinner:
siyak.t('Continue'); // instant, maybe source text
await siyak.flush(); // then re-render once the batch landstranslate() also never rejects — on any failure it resolves with your source string. Use onError if you want to know why.
5 · See what your app asked for
- 1Open the Inbox. Every string the service had never seen is filed there as pending review, with its context.
- 2Approve the ones that read right. An approved string is served to every device from then on, with no model call and no charge.
- 3Pin a term in Glossary whenever a word must never change — «Account → حساب» once, and no run overrides it again.
Where the numbers live
| 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.