This site is available in your language too. Obviously — we're a translation app.
The others are still debating whether it's worth the effort.
BabelKitBabelKit.dev
Log InSign Up

Function Parametrization

Turn static text into dynamic, translatable functions with variables. Double-click, define, done.

Get Started Free

Without parametrization

"Hello John" → different key for every user
"3 items in cart" → different key for every number
"Order #12345" → impossible to translate
Thousands of duplicate keys

With parametrization

"Hello {username}" → one key, infinite users
"{count} items in cart" → works for any number
"Order #{orderId}" → dynamic, translatable
Clean, maintainable key structure

How it works

1

Double-click any text card

In the Kanban board, double-click a text card to open the parametrize editor. The original text from Figma is shown with each word selectable.

2

Select the dynamic part

Click or drag to select the part of the text that should be a variable. For "Hello John", select "John". For "3 items", select "3".

3

Name the variable

Give it a meaningful name like {username} or {count}. BabelKit replaces the selected text with the variable placeholder.

4

Translators see the template

Translators get "Hello {username}" and translate around the variable. The SDK generates a type-safe function: greet(username: String) → String.

Variants for every scenario

One key can have multiple variants based on context.

Pluralization

Define zero, one, and other variants. "No items", "1 item", "{count} items" — all from a single key.

cart.items → zero: "No items" | one: "1 item" | other: "{count} items"

Gender variants

Languages like French or Spanish need gendered text. Define masculine, feminine, and neutral forms for the same key.

welcome → male: "Bienvenu" | female: "Bienvenue"

Platform-specific

Different wording for iOS vs Android. "Tap" on mobile, "Click" on desktop — same key, different output.

action.select → iOS: "Tap to select" | Android: "Touch to select"

Length variants

Short version for compact UI, long version for full screens. The SDK picks the right one based on available space.

save → short: "Save" | long: "Save changes"

Type-safe output in every SDK

Parametrized strings become real functions with typed parameters.

Swift
BabelKit.greet(username: "John")
// → "Hello John"
Kotlin
BabelKit.greet(username = "John")
// → "Hello John"
Dart
BabelKit.greet(username: "John")
// → "Hello John"
TypeScript
BabelKit.greet({ username: "John" })
// → "Hello John"

Stop hardcoding strings

Make every text dynamic, translatable, and type-safe.

Get Started Free