ManuceTranslate a fileTranslate a JSON i18n file into German

Translate a JSON i18n file into German

Upload your string file (i18next, react-intl, vue-i18n, next-intl, ngx-translate) and Manuce translates the values into German, leaves every key alone, checks each placeholder and ICU message, and returns the same file, ready to drop in as your de.json. German is charged at the base rate, and a free extract shows you the result before you pay.

Upload my file See pricing

What it costs

For a JSON i18n file with about 2,000 words of values, into German:

Essentiel
€12

To understand, internal use.

Professional
€36

Ready to send, by the technical specialist.

Premium
€70

Cross-checked. For documents that commit you.

Price for one language, original layout included. VAT not applicable — article 293 B of the French General Tax Code (CGI). The exact quote, based on your file's word count, is shown before you pay.

What changes when your UI strings go into German

German uses the Latin alphabet, runs left to right and adds only ä ö ü ß, so encoding is rarely the issue. The real changes land in your interface.

  • Length. German text is often 20 to 35% longer than English, and compounds do not break on their own: "settings.notifications": "Notification settings" becomes "Benachrichtigungseinstellungen", a single 30-letter word. Fixed-width tabs and buttons overflow.
  • Capitals. Every noun is capitalised, even mid-label: "Datei hochladen", "Neues Passwort festlegen". A CSS text-transform forcing lowercase or uppercase destroys that information, and English-style title case does not apply.
  • Infinitives on buttons. German UI convention favours the infinitive for actions: "Speichern", "Abbrechen", "Löschen".
  • Register. Professional software addresses the user formally with Sie, and the polite pronoun is capitalised: "{name} hat eine Datei mit Ihnen geteilt". Many consumer apps use the informal du; it is a brand decision worth checking in the free extract.

Plurals, gender and word order: German-specific traps

German has only two CLDR plural categories, one and other, exactly like English. If your source already uses them (i18next _one / _other suffixes or an ICU block), no extra forms are needed, and 0 falls under other in both languages. If your source is French or another language that treats 0 as singular, make sure the German other form reads correctly for zero.

A typical ICU message after translation:

{count, plural, one {# Datei ausgewählt} other {# Dateien ausgewählt}}

The harder problems come from grammar:

  • The verb moves. Infinitives and participles go to the end: “Delete {item}” becomes "{item} löschen". If your code glues a key such as "delete_prefix": "Delete" to a noun, German cannot put the verb where it belongs. Use whole sentences with a placeholder instead.
  • Three genders and four cases. The article depends on the noun (der, die, das) and its role in the sentence. A placeholder that drops a noun into a fixed sentence (“The {object} was deleted”) often ends up with the wrong article. A select message lets you provide variants, and Manuce checks that each branch keeps the same placeholders.
  • Numbers and dates. German writes 1.234,5 and 31.12.2025. Such formats are not translated in the file: leave them to Intl or your library's formatter with the de locale rather than hard-coding them in a value.

What Manuce returns, and what it does not do

You get the same file back: same indentation, key order, quote style, comments, line endings, encoding and BOM. Only the values are in German. Flat and nested structures and arrays of strings are all handled.

  • Keys are never translated: "auth.login.submit" stays as it is; only its value becomes "Anmelden".
  • Placeholders {name}, {{count}}, %s and ICU messages (plural, select) are checked string by string: same placeholders, same number of times, even when German word order moves them.
  • Left untranslated: empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable.
  • Every translated value is compared with the source. If a placeholder or tag mismatch persists, the source value is kept and the report says so.

The report lists translated strings, strings left as they were and the reason (URL, empty value, placeholder mismatch).

What Manuce does not do: it cannot see your interface, so it does not know a button is 120 pixels wide and will not shorten a label to fit. It does not take glossaries or translation memories. It does not produce sworn or certified translations, should your file contain legal wording that requires one.

Preparing the file and checking the German build

Before uploading:

  • Find strings assembled by concatenation and rewrite them as full sentences with placeholders. For German, this is the main flaw a translation cannot fix.
  • Check that every plural message has an other branch and that your _one / _other keys are complete.
  • Mark product or feature names that must stay in the source language as non-translatable.

After delivery:

  1. Save the file where your library expects it (for example locales/de/common.json) and run the app in de.
  2. Walk through narrow screens: menus, tabs, buttons, table cells. For overlong compounds, CSS hyphens: auto together with lang="de" on the page lets the browser break them properly.
  3. Test plurals with 0, 1 and 2, and every value of each select.
  4. Read the report: a string left untranslated because of a malformed placeholder in the source should be fixed in the source first.

For a term that must stay unchanged, check the free extract and then the delivered translation.

In practice

  1. Upload your source JSON file (en.json, fr.json…): the quote appears at once, based on the words in the values.
  2. Choose German and a level, then read the free extract: Sie or du, noun capitals, label length.
  3. Pay and download the translated file and its report from your client area.
  4. Add it as your de locale, run the app and check overflow, plurals and select messages.

Frequently asked questions

Will the keys in my JSON file be translated?

No. Only the values are translated; keys, order, indentation and encoding stay identical. The German file therefore loads with exactly the same code as the source.

Do I need extra plural forms for German?

No. German uses only one and other, like English, and 0 takes the other form in both. If your source language treats 0 as singular, as French does, just make sure the German other form reads well for zero.

Will the translation use Sie or du?

Formal Sie is standard in professional contexts. If your product addresses users informally, check the register in the free extract before paying, then in the delivered file.

What happens if a placeholder causes a problem?

Each translated value is compared with the source. If placeholders or tags do not match and the mismatch persists, the source value is kept and the report flags it, so you know exactly which string to revisit.

How is German priced?

On the exact word count of the values, with keys and tags excluded. German is charged at the base rate, with no language coefficient. Ordering the same file in two or more languages applies a discount to the whole order.

The specialist in charge

This subject goes to Dédale, the technical specialist. See how it works.

Try it on your own file, free

A sample of your file translated at the level you choose, before any payment. You judge, then you decide.

Upload my file