Translate an iOS app into German
Upload your Localizable.strings or .xcstrings catalogue and Manuce adds German while keeping keys, format specifiers and file structure intact, plural variations included. You get the same file back, ready to return to your Xcode project, with a report of what was translated and what was left as it was.
What it costs
For the language files of a iOS app totalling about 2,000 words, into German:
To understand, internal use.
Ready to send, by the technical specialist.
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 German does to an iOS interface
German typically runs 20 to 35 % longer than English, and a short label can double in width. On an iPhone that hits tab bars, navigation titles, alert buttons and single-line table cells first. The real trap is compound nouns: “Privacy settings” becomes Datenschutzeinstellungen, a single word the system cannot break cleanly. A one-line UILabel will show “Datenschutzeinst…”.
- Every noun is capitalised:
Neues Album erstellen(“Create new album”). Lower-case nouns look wrong to any German reader straight away. - Formal or informal address: “Tap to continue” becomes
Tippen Sie, um fortzufahren(Sie) orTippe, um fortzufahren(du). Business apps usually use Sie; consumer apps may use du. What matters is not switching between them from one screen to the next. - Punctuation and numbers: quotation marks „like this“, a decimal comma (
1.234,56), dates as24.12.2025. These should come from system formatters (DateFormatter,NumberFormatteror.formatted()), never from a hard-coded string.
Placeholders, plurals and word order
The specifiers %@, %d and positional forms such as %1$@ are checked in every translated value. That matters in German, where the verb often moves to the end of the clause: “%@ shared %d photos” becomes %@ hat %d Fotos geteilt.
When a sentence has two placeholders of the same type, write the source with explicit positions. “Shared by %1$@ on %2$@” can then become Am %2$@ von %1$@ geteilt without the values swapping on screen.
For plurals, German has only two CLDR categories: one and other. Zero falls under other: 1 Foto, 0 Fotos, 5 Fotos. In a String Catalog (.xcstrings), German is added with its plural variations. A plain Localizable.strings has no plural mechanism, so a string like "%d photo(s)" stays clumsy in German too (%d Foto(s)). If your app shows a lot of counts, the catalogue is the format to use.
What Manuce returns, and what it does not do
You get back the same file, in the same format. Indentation, key order, quotation marks, comments, line endings, encoding (UTF-8 or UTF-16) and BOM are preserved; only the values change. A line such as "settings.title" = "Settings"; becomes "settings.title" = "Einstellungen";, with the key untouched.
- Each translated value is compared with the source (placeholders, tags). If a mismatch persists, the source value is kept and the report says so: an untranslated label is better than a missing
%@that breaks a screen. - Not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as not to be translated.
- The report lists the strings translated and those left as they were, with the reason.
Manuce does not run your app: it does not check on-screen layout, catch truncation, or translate text inside images, screenshots or an App Store listing that is not in the files you upload. Pricing is based on the words in the values, with keys and tags excluded; German is charged at the base rate. For text going live on the German App Store, the Professional level is the one intended for ready-to-publish output.
Preparing the file and checking after import
Before uploading:
- Remove concatenation:
"Hello " + namecannot be translated properly. A single string"Hello %@"lets German place the name where it belongs. - Do not reuse one key for two contexts: “Open” as a button and “Open” as a status translate differently (
Öffnen/Geöffnet). - Annotate constrained strings: a comment such as
/* Tab label, max 12 characters */is kept in the file and helps whoever reviews the German. - If your permission prompts (camera, location) live in an InfoPlist.xcstrings catalogue, upload that too: they are often the first sentences a German user reads.
After importing into Xcode:
- Read the report and deal with any strings left in the source language.
- Run the app in German on the smallest iPhone you support, with a large Dynamic Type size: that is where compounds overflow.
- Check Sie/du consistency across alerts, buttons and notifications.
- Have a German speaker review the key screens if you are launching in Germany, Austria or Switzerland.
In practice
- Gather your Localizable.strings and .xcstrings catalogues.
- Upload them to Manuce: the quote appears at once, based on the words in the values.
- Read the free sample to judge tone and register (Sie or du).
- Download the German file and report, then put it back into your Xcode project.
- Test narrow screens and large text sizes before release.
Frequently asked questions
Should the app address German users as Sie or du?
Business and professional apps usually use the formal Sie. Consumer apps may use the informal du. Consistency is what matters most: check the free sample for register and review key screens after import.
Are German plurals handled?
In a String Catalog (.xcstrings), German is added with its plural variations, covering the one and other categories. Localizable.strings has no plural mechanism; if you need one, Xcode can convert your files to a catalogue before translation.
What happens if a %@ placeholder goes missing in translation?
Every translated value is compared with the source. If the mismatch persists, the source value is kept and the report flags it. The returned file never contains a German string with a missing placeholder.
Are keys and comments included in the word count?
No. Pricing covers the words in the values only, with keys and tags excluded. Comments are kept unchanged in the file, and German is charged at the base rate.
Can I add German and other languages in one order?
Yes. A discount applies to the whole order from two languages: −20 % for 2, −30 % for 3, −40 % for 4 and −50 % from 5. Each language comes back in the same format as your source file.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into German, other files
See also
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.