Product
Services
Solutions
BlogDocs
Back

Universal Placeholders in Translation Editor

Localit.io supports working with various types of placeholders and provides a convenient interface for their use in the translation process. The system automatically detects and visualizes placeholders, simplifying translators' work.

Placeholder visualization

Blue circles with numbers

By default, all placeholders in the editor are displayed as blue circles with numbers instead of complex code. This significantly simplifies text perception and translator workflow.

Visualization example:

Source code:"Welcome, [%s:username]! You have [%d:count] new messages."

Display in editor:"Welcome, ①! You have ② new messages."
187

Number assignment

Numbers in circles correspond to the sequential number of placeholders in the text:

  • — first placeholder in text

  • — second placeholder in text

  • — third placeholder in text

  • And so on...

This is especially useful when there are many placeholders in the text, and you need to stay oriented during translation.

188

Working with placeholders during translation

Inserting placeholders

During translation, the translator can simply click on the blue circle, and the placeholder will automatically be inserted into the translation field in the correct format.

Insertion process:

  1. Translator writes the translation text

  2. Reaches the place where a placeholder is needed

  3. Clicks on the corresponding blue circle

  4. Placeholder is automatically inserted into the text

Process example:

Source text: "Hello, ①! You have ② messages."
Translation process: "Привет, [click on ①]! У вас ② сообщений."
Result: "Привет, [%s:username]! У вас ② сообщений."
189

Tracking unused placeholders

Below the translation field, the system shows which placeholders have not yet been added to the translation. This helps translators not forget any important elements.

Indication:

Translation: "Привет, [%s:username]! У вас сообщений."
Not added: ② ([%d:count])
202

Automatic warning

If not all placeholders were used when saving the translation, the system will automatically warn about this and suggest correcting the translation.

191

Displaying placeholder code

Enabling code display

If you need to see the actual placeholder code, you can enable the "Display placeholders and tags as a block" option.

Enabling methods:

1. For a specific key:

  • Click the button to the right of the translation field

  • Placeholder code will be shown only for this key

200

2. For all keys:

  • Enable the option on the filter panel for all keys

  • Placeholder code will be shown for all keys in the project

193

View with enabled code

When code display is enabled, placeholders are shown in block view with full code:

Example:

Normal view:"Welcome, ①! You have ② new messages."

With code display:"Welcome, [%s:username]! You have [%d:count] new messages."

Supported placeholder types

Localit.io uses a universal placeholder system that allows working with one set of translations for all platforms, automatically converting them to the appropriate format during export.

Universal format

Localit.io uses a unified format with square brackets:

Type

Format

Example

Description

String

[%s]

[%s], [%1$s], [%s:name]

String values

Integer

[%d]

[%d], [%1$d], [%d:count]

Integers

Float

[%f]

[%f], [%.2f], [%1$.2f:price]

Floating point numbers

Named parameters

Add :name after the type for convenience:

  • [%s:username] — string with name

  • [%d:count] — number with name

  • [%.2f:price] — float with name and precision

Examples in editor

Universal placeholders:

Source text:"Hello, [%s:username]! You have [%d:count] new messages."

Display in editor:"Hello, ①! You have ② new messages."

Placeholder types:
① — [%s:username] (String)
② — [%d:count] (Integer)
195

Conversion during export

Universal placeholders are automatically converted to the required format:

Platform

Result

Web (i18n)

"Hello, {{username}}! You have {{count}} new messages."

iOS

"Hello, %@! You have %li new messages."

Android

"Hello, %s! You have %d new messages."

Web (ICU)

"Hello, {username}! You have {count} new messages."

201

Additional information

For studying technical aspects of working with placeholders, including import and export settings, we recommend reading our Universal Placeholders Guide.

Universal placeholders advantages

Multi-platform support

Problem without universal placeholders: Imagine you have an application for three platforms with one message:

Web (JSON):{"welcome": "Hello, {{username}}! You have {{count}} new messages."}

iOS (.strings):"welcome" = "Hello, %@! You have %li new messages.";

Android (XML):
<string name="welcome">Hello, %s! You have %d new messages.</string>

Without universal placeholders, you need to translate the same text three times.

Solution with universal placeholders:

  • Translate once for all platforms

  • Automatic conversion during export

  • Consistent translations everywhere

  • Time and budget savings

Resource savings

Usage results:

  • Translation volume reduction by 60-80%

  • Process acceleration by 3x

  • Consistency between platforms

  • Translation budget savings

Editor interface

Visual indicators

The translation editor uses text markers for different key types:

regular_key              — Regular text (no marker)
[plural] plural_key      — Plural forms  
[array] array_key[0]     — Array element
[array] array_key[1]     — Array element

Type markers:

  • [plural] — before the name of keys with multiple forms

  • [array] — before the name of array keys with element index

  • No marker — regular text keys

View modes

List mode:

  • Displays all keys in table format

  • Shows key type, source and translated text

  • Allows quick switching between keys

197

Card mode:

  • Shows detailed information for each key

  • Convenient for working with long texts

  • Displays additional information (comments, status)

199

Practical tips

For translators

Quality control:

  • Always check the unused placeholders indicator

  • Pay attention to system warnings

  • When in doubt, enable placeholder code display

  • Test export results on all target platforms

Working with universal placeholders:

  • Use named parameters: [%s:username] instead of [%s]

  • Plan types in advance: String for names, Integer for counters, Float for prices

  • Check type correctness when manually editing

For project editors

Display settings:

  • Use global code display enabling for verification

  • Configure individual team preferences

  • Train new translators to work with placeholders

Quality control:

  • Regularly check translations with placeholders

  • Pay attention to automatic warnings

  • Test results in real applications