Online i18n Tool

    i18n Message Format Converter

    Seamlessly convert translation strings and dictionaries between ICU MessageFormat, i18next, Vue I18n, Gettext PO, and Intlayer. Test dynamic variables in real-time.

    Load Example Preset
    icu
    ICU Plural with Exact Match
    icu
    ICU Select (Gender / Role)
    icu
    ICU Selectordinal (Rankings)
    vue-i18n
    Vue I18n Pipe Plural
    i18next
    i18next Simple Interpolation
    icu
    ICU Number & Percentage Format
    icu
    HTML / Rich Text Formatting
    icu
    Full JSON Dictionary
    Source Formatformatjs / next-intl
    79 characters
    Target Formatreact-i18next
    {count, plural, =0 {No items yet} =1 {# item in cart} other {# items in cart}}
    Valid Syntax

    Interactive Live Preview & Evaluation

    Set test values for detected variables to see the final interpolated string rendered in real time.

    Locale:
    Rendered String Preview (en):
    1 item in cart

    Message Format Comparison & Syntax Guide

    See how interpolation, plurals, select options, and number formatting compare side-by-side across all supported formats.

    FeatureICU MessageFormati18nextVue I18nIntlayer
    Simple Variable
    Replace named variable inside text
    Hello {name}!Hello {{name}}!Hello {name}!Hello {{name}}!
    CLDR Plural
    Category-based plural rules (one, few, many, other)
    {count, plural, one {# item} other {# items}}{count, plural, one {# item} other {# items}}1 item | {count} itemsplural({ one: '{{count}} item', other: '{{count}} items' })
    Exact Match Plural
    Specific numbers like 0, 1 mapped explicitly
    {count, plural, =0 {No items} other {# items}}{count, plural, =0 {No items} other {# items}}No items | {count} itemsenu({ '0': 'No items', fallback: '{{count}} items' })
    Select / Gender
    String condition match
    {gender, select, male {He} female {She} other {They}}{gender, select, male {He} female {She} other {They}}{gender: {male: "He", female: "She"}}gender({ male: 'He', female: 'She', fallback: 'They' })
    Number / Percent Format
    Localized numeric formatting styles
    {val, number, percent}{{val, percent}}$n(val, 'percent'){val, number, percent}
    HTML / Rich Text
    Markup tags preserved for formatting
    Read <strong>{doc}</strong>Read <1>{{doc}}</1><i18n-t> or raw HTMLhtml('Read <strong>{{doc}}</strong>')

    Type-Safe Compilation

    Unlike legacy systems where mistyped variables fail silently at runtime, Intlayer enforces end-to-end TypeScript compilation and IDE auto-complete.

    Universal Compat Layer

    Seamlessly import or export messages from Next-intl, FormatJS, i18next, or Nuxt with zero vendor lock-in.

    Visual CMS & AI Translation

    Content declared in Intlayer can be edited visually in real-time or translated automatically across 18+ languages via the integrated AI pipeline.

    Intlayer Ecosystem

    Migrate to Intlayer for Complete Type Safety

    Declare translations next to your code, catch missing keys at build time, and empower content editors with the visual CMS.