Strings & Keys
A string is a key-value pair: the key is your identifier, and the source value is the text in your base language.
Key: auth.login.button
Value: Log in
Your translators then produce a localized version of that value for each target locale.
Key conventions
Keys can be anything, but dot notation is the most common pattern because it maps directly to nested file structures:
nav.home → { "nav": { "home": "Home" } }
auth.login → { "auth": { "login": "Log in" } }
errors.not_found → { "errors": { "not_found": "Page not found" } }
Stringhive flattens nested files on import and restores the nesting on export, so your file structure stays intact.
File namespacing
Strings belong to a file. When you import auth.php, every key inside becomes part of the auth.php namespace. This matters for exports (the file structure is preserved) and for filtering strings in the UI.
Placeholders
Placeholders are the dynamic parts of a string, like a user's name or a count. Stringhive validates them during translation to make sure nothing gets lost.
The format depends on your Hive's placeholder type setting:
Single curly: Hello, {name}! You have {count} messages.
Double curly: Hello, {{name}}! You have {{count}} messages.
Colon prefix: Hello, :name! You have :count messages.
Dollar sign: Hello, $name! You have $count messages.
printf: Hello, %s! You have %d messages.
Positional: %1$s has %2$d items.
iOS: Welcome, %@!
Percent curly: Hello, %{name}! You have %{count} messages.
If a placeholder from the source is missing in the translation, saving is blocked until all placeholders are present. This check applies to every plural form individually, so each form must carry all the placeholders from the source string.
Plural strings
Some strings change based on a number, like "1 item" vs "3 items". Stringhive supports plural strings with the full CLDR plural categories: zero, one, two, few, many, and other.
When you mark a string as plural, the translation editor shows a separate field for each plural form required by the target locale. German only needs one and other, but Arabic needs all six. Stringhive handles this automatically based on the locale.
Translation states
Every translation has a state:
| State | Meaning |
|---|---|
| Empty | Not translated yet |
| Translated | A translation exists but hasn't been approved |
| Approved | Reviewed and signed off |
| Stale | Was approved, but the source string changed since then |
Stale translations need attention: the source changed, so the translation might be wrong. See Stale Translations.
Adding strings manually
In the Hive view, click New String. Enter a key, a source value, and optionally a file name. You can mark it as plural at creation time.
Context
Context helps translators understand where a string appears, the tone to use, and who it's for. You can write rich context — bold, italic, bullet lists, numbered lists — using the built-in editor.
Context is shown to translators in the right-hand panel of the translation editor. It is never exported.
Attachments
Each string can have one or more file attachments for extra visual context: screenshots, mockups, design references, or any supporting document.
Supported file types: images (PNG, JPG, GIF, WebP, SVG), PDF, TXT, and CSV. Maximum 10 MB per file.
- Images display inline as thumbnails in the translation editor
- Other file types appear as a clickable link that opens in a new tab
Attachments are managed in the New String / Edit String dialog. Existing attachments can be removed by hovering over them and clicking the × button.
Tags
Tags are labels you apply to strings to group them across file boundaries. A string can have multiple tags; tags are scoped to the hive they're created in.
Common uses: marketing, legal, onboarding, mobile-only, needs-review.
Creating and managing tags
Click the Tag button in the toolbar (or Add tags if no tags exist yet) and select Manage tags at the bottom of the dropdown. From there you can:
- Create a tag — give it a name (up to 64 characters) and a color
- Rename or recolor a tag — hover the row and click the edit icon
- Delete a tag — hover the row and click the trash icon; the tag is removed from all strings it was applied to
Applying tags to strings
Open any string with New String or Edit String. If tags exist in the hive, a tag picker appears above the file selector. Click a tag chip to apply it; click it again to remove it.
Filtering by tag
Use the Tag dropdown in the toolbar to filter the string list to a single tag. The URL updates so filtered views are shareable and bookmarkable.
Exporting a tagged subset
When a tag filter is active and you open the Export dialog, that tag is pre-selected under Scope by tag. Only strings carrying that tag are included in the download. You can also change the tag scope inside the export dialog independently of the active filter.
Deleting strings
Select one or more strings using the checkboxes, then use the bulk delete option. Deleting a source string also deletes all its translations. There's no undo.