Translate a Ruby on Rails App into German
Manuce translates the <code>config/locales/*.yml</code> files of your Rails app into German: the root key becomes <code>de:</code>, <code>%{count}</code> variables and <code>one</code>/<code>other</code> keys are checked, and the YAML comes back unchanged apart from the values. A report lists which strings were translated and which were left as they were, and why.
What it costs
For the language files of a Ruby on Rails app totalling about 3,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 changes in Rails locale files
Moving an en.yml or fr.yml file to German brings four constraints that show up across the whole interface.
- Length. German text often runs 20 to 35% longer than English, and compound nouns hit short labels hardest: ‘Permission management’ becomes
Berechtigungsverwaltung, a single word that cannot wrap. Buttons, tabs, table headers and navigation items suffer first. - Capitals. Every noun is capitalised, even mid-sentence:
Ihre Bestellung wurde gespeichert. Adowncaseortitleizeapplied to a translated value in a view will break this. - Register. Professional contexts use formal Sie:
Bitte geben Sie Ihr Passwort ein. If your audience expects informal du, decide before translating and keep it consistent across every file. - Punctuation. German quotation marks are written „like this“, and there is no space before
:or?:Passwort vergessen?.
Plurals, interpolation and Active Record messages
German uses the same Rails plural categories as English: one and other. So one: %{count} file and other: %{count} files become one: %{count} Datei and other: %{count} Dateien, and zero is plural in both languages (0 Dateien). If your source is French, watch out: French treats zero as singular, so a zero key written in the singular needs rewording.
The variable name must stay %{count}; Manuce compares every translated value with its source to make sure variables survive.
Keys under activerecord.models and activerecord.attributes feed generated messages through the %{attribute} %{message} format. ‘Email can't be blank’ becomes E-Mail muss ausgefüllt werden; the word order is fixed by that format, so check a few complete messages in the running app rather than isolated keys.
Be careful with sentences that put an article next to a variable. In German the article depends on the noun's gender: der Kunde, die Rechnung, das Projekt. A phrasing such as %{model} wurde gelöscht works for every model; ‘The %{model} was deleted’, translated literally, does not.
What Manuce delivers, and what it does not
You get the same YAML file back, ready to drop into the project:
- the source root key (
en:,fr:…) replaced withde:; - indentation, key order, quotes, comments, line endings, encoding and BOM preserved: only the values change;
- each value checked against its source (variables such as
%{name}, tags in_htmlkeys); if a mismatch persists, the source value is kept and the report says so; - left untranslated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything you have marked as non-translatable.
Word count covers values only, keys and tags excluded; German is charged at the base rate (×1 coefficient).
What Manuce does not do:
- strings hard-coded in
.erbviews or controllers are not in the YAML and are not handled; - a format such as
%m/%d/%Ystays as it is: you will want%d.%m.%Y, the German convention; - month names and number separators (
1.234,56) usually come from the rails-i18n gem, not from your own files; - no sworn or certified translation: an interface does not need one, but a contractual document for a German authority might.
Preparing the files and checking the result
Before uploading:
- gather every source-language YAML file: Rails projects often split strings across
en.yml,models/en.ymlordevise.en.yml; - remove keys you no longer use, as they would be counted and translated;
- mark brand and product names as non-translatable;
- make sure the file loads without errors in your app.
After delivery:
- save the file as
de.yml(ordevise.de.yml) and add:detoconfig.i18n.available_locales; - read the report: a string left in the source language because of a variable mismatch needs fixing by hand;
- walk through the screens with the longest labels at the narrowest width to catch compound nouns that overflow;
- a tool such as i18n-tasks helps spot keys present in the source locale but missing from
de.
In practice
- Upload your config/locales YAML files.
- Choose German and a level, then read the free sample.
- Download the file with its de: root key and the string report.
- Save it as de.yml, add :de to the available locales and adjust date formats.
- Test the screens with the longest labels.
Frequently asked questions
Will my keys or YAML structure be changed?
No. Keys are never translated, and indentation, order, quotes, comments, encoding and BOM are preserved. Only the root key changes to de:, and only the values are replaced.
How are one and other plurals handled in German?
German uses the same two categories as English, one and other, and Manuce adapts both forms while checking that %{count} is still there. Zero takes the plural in German, as in English.
Are Devise and validation messages translated?
Yes, if they are in your YAML files, for example devise.en.yml or your activerecord keys. Default messages shipped by a gem such as rails-i18n are not in your files, so they are outside the job.
Will the translation use Sie or du?
Formal Sie is the norm in professional contexts and is the default. If your app speaks to an audience that expects du, say so before ordering and check the free sample.
How long does around 3,000 words take?
A file of that size is delivered within minutes. The quote appears as soon as you upload, based on the exact word count of the values, and the file stays available in your account.
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.