Translate a Ruby on Rails App into Spanish
Manuce translates the <code>config/locales/*.yml</code> files of your Rails app into Spanish and returns the same file with an <code>es:</code> root key, interpolations checked and plural keys adapted. Spanish then asks three things of you that English never did: choose between tú and usted, pick Spain or Latin America, and deal with grammatical gender in interpolated messages.
What it costs
For the language files of a Ruby on Rails app totalling about 3,000 words, into Spanish:
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 Spanish changes in your Rails strings
Coming from an English locale file, Spanish introduces problems that simply did not exist in the source. Punctuation first: questions and exclamations open with ¿ or ¡. confirm: "Are you sure?" becomes confirm: "¿Está seguro?".
Then gender. English created: "%{model} was successfully created" works for any model. In Spanish, "%{model} creado correctamente" is right for Usuario and wrong for Factura, which needs creada. Split the key per model, or rephrase neutrally (Se ha creado: %{model}).
Then register. English “you” hides a choice Spanish makes on every button: informal tú (Guarda tus cambios) or formal usted (Guarde sus cambios). Consumer apps in Spain often use tú; business software leans towards usted. Decide before translating.
Finally length: Spanish runs noticeably longer than English. “Save” becomes Guardar, “Sign in” becomes Iniciar sesión. Check fixed-width buttons, tabs and table headers.
Plurals: one, many, other, and what Rails actually reads
CLDR gives Spanish three plural categories: one, many and other. many mainly covers large round numbers and compact notation (1 millón de usuarios, with de). Rails' default I18n backend only picks between one (when count is 1) and other, plus an optional zero key if you defined one.
Manuce adapts the one and other keys in your file and checks that %{count} survives in each:
one: "%{count} comment"→one: "%{count} comentario"other: "%{count} comments"→other: "%{count} comentarios"
Zero behaves as in English: 0 comentarios falls under other. An existing zero key (“No comments”) is translated like any other value (Ningún comentario). Manuce does not add a many key that is not in your source; if you display counts in millions, add it yourself and configure a matching pluralisation rule.
Spain or Latin America: choosing the locale key
The returned file uses the es: root key, which suits a single Spanish-speaking audience. If you target Mexico or Argentina specifically, rename the key and file (es-MX:, es-MX.yml), add the locale to config.i18n.available_locales and enable config.i18n.fallbacks so a key missing in es-MX is looked up in es.
Vocabulary differences hit interface text directly:
- ordenador (Spain) / computadora (Latin America);
- móvil / celular;
- vosotros / ustedes when addressing several people, for example in a team notification.
State the variant at the outset and keep it consistent across every locale file: a product that mixes ordenador and computadora is quickly noticed by users.
What Manuce returns, and what it does not do
You get back the same YAML file, ready to drop into the project: indentation, key order, quotes, comments, line endings, encoding and BOM preserved. Only the values change, and the root language key (en:, fr:…) becomes es:.
- Every translated value is compared with its source for variables (
%{name},%{count}) and tags, for instance in awelcome_htmlkey. If a mismatch persists, the source value is kept and the report says so. - Not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats such as
"%d/%m/%Y", identifiers, and anything you mark as non-translatable. - The report lists translated strings and those left unchanged, with the reason.
Pricing counts the words in values only, excluding keys and tags. Manuce translates the files you upload: text hard-coded in .erb views or stored in the database is not included. For terms and conditions needing legal standing, note that Manuce does not provide certified (sworn) translation.
Preparing your files and checking the result
Before uploading:
- Add the
rails-i18ngem: it already ships Spanish month names, number formats and common validation messages (no puede estar en blanco). Upload only your own strings so you do not pay for those. - Find messages that interpolate a model or attribute name and decide how to handle gender.
- Mark brand names and plan names as non-translatable.
After delivery:
- Run
i18n-tasks missing esif you use that tool, to spot missing keys. - Browse the app with
I18n.locale = :es: flash messages, form errors, Action Mailer emails, and any button where the longer Spanish wording may wrap. - Review the values the report kept in the source language and fix them by hand if needed.
In practice
- Collect your app's config/locales/*.yml files, leaving out strings already provided by rails-i18n.
- Upload them to Manuce: the quote is based on the exact word count of the values, with a free sample.
- Choose a level, pay, then download the es.yml file and its report.
- Place the file in config/locales, add :es to the available locales and test the app in Spanish.
Frequently asked questions
Does Manuce handle the Spanish many plural category?
Manuce adapts the one and other keys present in your file and checks %{count} in each. It does not add a many key that is missing from the source. Rails' default I18n backend only reads one, other and optionally zero anyway.
Can I get an es-MX file instead of es?
The file is returned with the es: root key. For a regional locale, rename the key and file to es-MX and enable fallbacks to es in your I18n configuration. Tell us the target variant so vocabulary matches, such as computadora rather than ordenador.
What if a %{name} variable gets lost in translation?
Every translated value is checked against its source, including variables and tags. If a mismatch persists, the source value is kept and flagged in the report. That avoids a missing interpolation error in production.
Will my date formats be changed?
No. Date formats such as %d/%m/%Y are not translated, nor are numbers, URLs or identifiers. Spanish month and day names are already provided by the rails-i18n gem.
Will my YAML file be reformatted?
No. Indentation, key order, quotes, comments, line endings, encoding and BOM are preserved. Only the values change, so your Git diff stays readable.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into Spanish, 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.