Translate a Flutter app into Spanish
Upload your template .arb file, such as app_en.arb, and Manuce returns the same file with Spanish values: placeholders untouched, ICU messages completed with Spanish plural categories and @@locale set to "es". Save it as app_es.arb and regenerate your localisations.
What it costs
For the language files of a Flutter app totalling about 2,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 strings
Spanish UI text runs longer than English. "Settings" becomes "Configuración", "Sign in" becomes "Iniciar sesión". In Flutter, a Text inside a Row or a fixed-width button may overflow, so look for widgets without Flexible, maxLines or overflow.
Questions and exclamations also open with a mark: ¿ and ¡. "Delete this file?" becomes "¿Eliminar este archivo?". If your code builds a question from several fragments, the opening mark ends up in the wrong place. A single string with a placeholder avoids this: "deleteConfirm": "¿Eliminar {fileName}?".
Spanish marks grammatical gender. "welcomeUser": "Welcome, {name}" forces a choice between "Bienvenido" and "Bienvenida". Either add a select message on gender or accept a neutral wording such as "Te damos la bienvenida, {name}". Register matters too: consumer apps usually address the user as tú, while banking or public-service apps often use usted. Whichever you choose, keep it consistent across screens.
ICU plurals: one, many, other
CLDR gives Spanish three plural categories: one, many and other. many covers large round numbers such as a million, where Spanish inserts "de": "1 millón de descargas". In most apps one and other do the heavy lifting, but a complete ICU message covers all three.
Source:
"filesCount": "{count, plural, =0{No files} =1{1 file} other{{count} files}}"
Spanish value:
"filesCount": "{count, plural, =0{Ningún archivo} =1{1 archivo} one{{count} archivo} many{{count} de archivos} other{{count} archivos}}"
Manuce checks the structure of these messages, leaves placeholders exactly as they are ({count} stays {count}) and adds the Spanish plural categories where they are missing. select messages are handled the same way: the selectors male, female and other stay put; only the text in each branch is translated.
Spain or Latin America: organising your files
Common interface words differ: "ordenador" or "computadora", "móvil" or "celular", "vídeo" with an accent in Spain, "video" without one in Mexico. Plural address differs as well: "vosotros" in Spain, "ustedes" in Latin America.
In Flutter, the usual set-up is a generic app_es.arb, plus, if needed, a regional file such as app_es_MX.arb holding only the strings that differ; generation falls back to the es file for everything else. State your audience in the @ key descriptions ("button, Mexican users, informal tú"): Manuce reads them as context.
Formats follow the locale, not the translation: Spain writes 1.234,56 €, Mexico 1,234.56. If a placeholder is declared with a type and format (double as currency, DateTime as yMMMd), Flutter formats it for the active locale, so avoid hard-coding a currency symbol or date in the string itself. Manuce does not translate numbers or date formats, which keeps those declarations intact.
What Manuce returns, and what it does not do
- The same .arb file: indentation, key order, quotes, comments, line endings, encoding and BOM preserved; only the values change.
@@localeis set to"es".@metadata keys are not translated; their descriptions are used as context.- Every translated value is compared with the source. If a placeholder or tag goes missing and the mismatch persists, the source value is kept and the report says so.
- Left as they are: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable.
- A report listing translated strings, strings left unchanged and why.
Manuce does not edit your Dart code, l10n.yaml or Info.plist, and it does not run the app, so it cannot see on-screen overflow. Pricing is based on the words in the values, keys and tags excluded; Spanish is charged at the base rate (×1 coefficient).
Preparing the file and checking it afterwards
- Start from the complete, up-to-date template file named in
template-arb-file. - Add descriptions to ambiguous keys: "Open" on a button is "Abrir", "Open" as a shop's status is "Abierto".
- Replace concatenated fragments with full strings using placeholders, especially for ¿…? questions.
- Once delivered, save the file as
app_es.arb, runflutter gen-l10nand confirm thatesappears inAppLocalizations.supportedLocales. For iOS, also declareesinCFBundleLocalizations. - Test narrow screens and plurals with 0, 1, 2 and one million.
Finally, read the report: any string left in the source language is explained there, for instance a placeholder not found in the translation or a value marked as non-translatable.
In practice
- Upload your template .arb file (app_en.arb or your source language).
- Check the instant quote and the free Spanish sample.
- Download the translated file and the string report.
- Save it as app_es.arb, run flutter gen-l10n and test your screens.
Frequently asked questions
Will the translation be European or Latin American Spanish?
Vocabulary differs (ordenador or computadora, móvil or celular). State your audience in the @ key descriptions, which Manuce reads as context. If you target both, ship a generic app_es.arb and add a regional file for the strings that change.
Will my placeholders and ICU messages still compile?
They are checked: every translated value is compared with the source, placeholders and tags included. Spanish plural categories (one, many, other) are added where missing. If a mismatch persists, the source value is kept and flagged in the report.
Are the @ key descriptions translated?
No. @ keys are metadata and stay as they are in the returned file. Their descriptions are used as context to pick the right term, which helps with short, ambiguous labels.
Should my app use tú or usted?
Consumer apps mostly use tú; banking and public-service apps often prefer usted. Note your choice in the key descriptions and check consistency on the free sample before paying.
Can I translate the app into Spanish and other languages at once?
Yes. A discount applies to the whole order from two languages: −20% for two, −30% for three, −40% for four, −50% from five. Each language comes back as its own .arb file with its own report.
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.