Strings & Translations
Translatable text units with context, placeholders, and plural forms.
What Are Strings?
Strings are the individual pieces of text that need to be translated. Each string is identified by a unique key — a short, descriptive name that stays the same across all languages. The key is what your app or website uses to look up the correct translation at runtime.
For example:
| Key | English Text | French Translation |
|---|---|---|
welcome.message | Welcome back! | Bon retour ! |
button.submit | Submit | Envoyer |
error.network | Connection lost. Please try again. | Connexion perdue. Veuillez réessayer. |
Context for Translators
Every string can include optional context — a note that tells translators where and how the string appears in the product. Good context leads to better translations because translators understand the meaning and tone.
Examples of helpful context:
- "Button label on the checkout page"
- "Error message shown when payment fails"
- "Notification title for new message — keep it short"
- "Placeholder text inside the search input field"
Placeholders
Some strings contain dynamic values that get filled in when the text is displayed — like a user's name, a number, or a date. These are called placeholders, and they are marked with curly braces in the text.
For example, the string "Hello, {name}!" has a placeholder called name. When the app displays this string, it replaces {name} with the actual user's name.
Each placeholder can specify:
- Name — What the placeholder is called (e.g., "name", "count", "date")
- Type — What kind of value it holds (e.g., text, number, date)
- Example — A sample value to help translators (e.g., "Alice", "42", "January 5")
Translators must keep the placeholders in their translations — they can move them around to fit the grammar of the target language, but they should not remove or rename them.
Organizing with Tags
Tags let you organize strings by feature area, screen, or any category that makes sense for your team. This makes it easy to filter, find, and export specific groups of strings.
Common tagging strategies:
- By feature —
onboarding,settings,checkout,notifications - By priority —
launch-critical,post-launch,nice-to-have - By type —
errors,labels,tooltips,emails
Maximum Length
Some strings need to fit within a specific space in the UI — a button, a menu item, or a notification title. You can set a maximum character length on a string to alert translators when their translation might be too long. This is especially important because translations are often longer than the original text (German and French text, for example, is typically 20-30% longer than English).
Translations
Each string has one translation per target language. When you add a new string to a project, it starts with no translations — translators then provide the localized text for each language the project targets.
How Translations Are Created
Every translation tracks its origin — how it was created. This helps teams understand the balance between human and machine work and identify translations that may need extra attention.
| Origin | What It Means |
|---|---|
| Human | Written directly by a human translator |
| AI | Generated by AI translation — requires human review before publishing |
| Import | Bulk imported from an external file (such as XLIFF or CSV) |
| Sync | Pulled in from an external translation management system (such as Crowdin) |
Plural Forms
Some strings change depending on a quantity — "1 item" vs. "5 items" or "No messages" vs. "1 message" vs. "3 messages." These are called plural strings, and they need special handling because different languages have very different plural rules.
English is simple — it only has two forms (singular and plural). But other languages are more complex:
- Arabic has six plural forms
- Polish has four plural forms
- Chinese and Japanese have only one form (no plural distinction)
Bosca uses the international CLDR standard for plural categories. When a string is marked as plural, translators provide a separate translation for each category their language requires:
| Category | When It Is Used | English Example |
|---|---|---|
| Zero | Zero quantity (used in some languages, not English) | -- |
| One | Singular | "1 item" |
| Two | Dual form (used in Arabic, Welsh, etc.) | -- |
| Few | Small quantities (used in Slavic languages, Arabic, etc.) | -- |
| Many | Large quantities (used in Arabic, Polish, etc.) | -- |
| Other | General form — required for every language | "5 items" |
Progress Tracking
Bosca tracks translation progress for each language in a project, giving you a clear picture of where things stand at any time.
| Metric | What It Shows |
|---|---|
| Total strings | The total number of strings in the project |
| Translated | Strings that have at least one translation in this language |
| Approved | Translations that have been reviewed and approved |
| Published | Translations that are live and available in production |
| AI generated | Machine translations that still need human review |
| Human translated | Translations created or reviewed by a person |
| Completion percentage | Overall translation coverage for this language |