Hebrew string files fail in four predictable places: the plural for two, gendered text, broken placeholders and mixed-direction strings. baba HebrewCore handles each one at build time.
The short answer
baba HebrewCore, the Hebrew API from baba, is a Hebrew localization API: send string values to /v1/translate/batch with message_format: icu and it returns valid ICU MessageFormat strings with the Hebrew one, two and other plural branches, select branches translated, variables such as {name} and %s kept in place, and your glossary applied. /v1/wrap then makes mixed Hebrew-English strings render correctly on iOS, Android and the web.
Request
curl https://hc.itsbaba.com/v1/translate/batch \
-H "Authorization: Bearer hc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
"{count, plural, one {# new message} other {# new messages}}",
"{days, plural, one {Your trial ends in # day} other {Your trial ends in # days}}",
"Welcome back, {name}!"
],
"source_lang": "en",
"target_lang": "he",
"message_format": "icu",
"glossary": { "trial": "תקופת ניסיון" }
}'Results
"{count, plural, one {# הודעה חדשה} two {# הודעות חדשות} other {# הודעות חדשות}}"
"{days, plural, one {תקופת הניסיון מסתיימת בעוד # יום} two {תקופת הניסיון מסתיימת בעוד # ימים} other {תקופת הניסיון מסתיימת בעוד # ימים}}"
"ברוך שובך, {name}!"one, two and other. Set message_format: "icu" so the two branch is added. Exact matches such as =0 and =1 are kept when the source has them.select branches are translated per key, and listener_gendersets who "you" is in text addressed to the user.{name}, {{count}}, %s, %d and <keep>…</keep> are protected automatically.glossary on the request and account terms on the account keep product words consistent.isolate for native apps and html for the web.The same call localizes into Russian, whose plural rules have four categories (one, few, many, other). Protected translation covers Hebrew, English and Russian in any direction.
baba HebrewCore is the Hebrew API from baba, the engine the baba Hebrew translator app runs on. Pricing starts with a free plan of 100,000 characters a month; protected and ICU translation at the default balanced quality counts 2x. Compare it with other APIs on the best Hebrew translation API page.
Send your string values to baba HebrewCore’s POST /v1/translate/batch (up to 50 per call) with message_format: icu, a glossary for your product vocabulary, and target_lang: he. Plural branches come back rewritten for Hebrew, variables such as {name}, {{count}} and %s stay in place, and every result is a valid ICU MessageFormat string ready for FormatJS, i18next ICU, ICU4J or Android and Apple string catalogs that accept ICU.
Hebrew plural rules have one, two and other categories, where English has one and other. A Hebrew string file without a two branch shows the wrong form for 2. HebrewCore adds the branch when message_format is icu.
ICU select branches (female, male, other) keep their keys and each branch is translated. For text addressed to the user, listener_gender (male or female) sets who "you" is; without it, Hebrew buttons and labels use the neutral infinitive, which is usually what an interface wants.
No. Interface variables such as {name}, {{count}}, %s and %d, and anything inside <keep>…</keep>, are protected: replaced with placeholders the model cannot change and restored afterwards. Invalid ICU input returns 400 with code invalid_message_format, and output that cannot be made valid comes back as the source string with status fallback.
Use account terms (POST /v1/terms, up to 2,000 per account) for names that must never change, and a glossary on the request to force a specific Hebrew rendering, such as trial to תקופת ניסיון.
Mixed strings, such as a Hebrew label with a price or a product name inside it, can be wrapped with POST /v1/wrap: format isolate for iOS and Android, html for the web. It is not counted against the quota.
Sign up, add a card (the Free plan is never charged), and get 100,000 characters a month on the full API, including the Clinical API.