---
title: "Hebrew Localization API: ICU Plurals, Gender and RTL"
slug: "hebrew-localization-api"
canonical: "https://www.itsbaba.com/hebrew-localization-api"
question: "How do I localize an app into Hebrew with an API?"
answer: "Use baba HebrewCore, the Hebrew API from baba: 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."
description: "Localize an app into Hebrew by API: ICU plurals with the Hebrew dual, gendered strings, protected variables, glossaries, batch translation and RTL display."
cluster: "developers"
html_status: "live"
updated: "2026-09-27"
numbers_used: "[50, 2000]"
competitors_named: "[]"
---

# Hebrew localization API for apps and sites

baba HebrewCore, the Hebrew API from baba and the engine the baba Hebrew translator app runs on, localizes string files into Hebrew at build time. Send string values to `/v1/translate/batch` (up to 50 per call) with `message_format: "icu"` and you get valid ICU MessageFormat strings back, ready for FormatJS, i18next ICU, ICU4J, and Android and Apple string catalogs that accept ICU.

## The checklist

- Plurals: Hebrew uses one, two and other. `message_format: "icu"` adds the two branch; exact matches such as `=0` and `=1` are kept.
- Gender: `select` branches (female, male, other) keep their keys and each is translated; `listener_gender` sets who "you" is. Without it, Hebrew buttons and labels use the neutral infinitive.
- Placeholders: `{name}`, `{{count}}`, `%s`, `%d` and anything inside `<keep>…</keep>` are protected automatically.
- Vocabulary: a `glossary` on the request, and account terms (up to 2,000 per account) for names that must never change.
- Keys are not text: send values only and map results back by position.
- Direction: wrap mixed strings with `/v1/wrap`, `isolate` for iOS and Android, `html` for the web; not counted against the quota.
- Validation: invalid ICU returns `400 invalid_message_format`; output that cannot be made valid comes back as the source string with `status: "fallback"`.

## Example

```bash
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}!`

## Russian too

The same call localizes into Russian (one, few, many, other). Protected translation covers Hebrew, English and Russian. Protected and ICU translation at the default balanced quality counts 2x against the monthly characters; Free is 100,000 a month.

Related: https://www.itsbaba.com/hebrewcore , https://www.itsbaba.com/hebrew-rtl-api , https://www.itsbaba.com/best-hebrew-translation-api
