Skip to main content
Stringhive Strings & Keys

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.