ManuceTranslate a fileTranslate a Laravel App into English

Translate a Laravel App into English

Upload your Laravel language file, such as <code>lang/fr.json</code> or <code>lang/de.json</code>, and Manuce returns the same file with English values, while keys, <code>:name</code> placeholders and formatting stay exactly as they were. Save it as <code>lang/en.json</code>; a report lists which strings were translated and which were left alone, and why.

Upload my file See pricing

What it costs

For the language files of a Laravel app totalling about 2,500 words, into English:

Essentiel
€15

To understand, internal use.

Professional
€45

Ready to send, by the technical specialist.

Premium
€88

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 a Laravel interface moves to English

English tends to be more compact than French, German or Spanish (around 10 to 15% shorter than French), so buttons and table headers in your Blade views rarely overflow. The real decisions lie elsewhere.

  • British or American. Decide before ordering: colour or color, cancelled or canceled, organisation or organization. If you serve both, separate files (en_GB.json, en_US.json) keep things clean; otherwise a single en.json will do.
  • Plurals. English has two CLDR categories, one and other, and zero takes the plural: “0 items”. Your source language may treat zero differently (French says “0 article”), or have more forms (Polish, Russian). With the short form item|items, Laravel applies the active locale’s rule. With explicit ranges such as {0} No items|{1} :count item|[2,*] :count items, your boundaries decide, and they remain valid in English.
  • Punctuation. No space before colons or question marks (Total : becomes Total:), and “ ” or ‘ ’ instead of « » or „ “.
  • Capitalisation. American interfaces often use title case on buttons (Save Changes); British ones lean towards sentence case (Save changes). State your convention so new strings match those already in English.

Placeholders, keys and markup: where an app breaks

In Laravel JSON files the key is often the source sentence itself, called in code as __('Willkommen zurück'). Keys are never translated, so that call keeps working once the locale is switched to English; only the value changes.

Placeholders must come back unchanged, case included, because Laravel treats :name, :Name (capitalised) and :NAME (upper case) as different replacements. Their position, however, can move to suit English word order:

  • "Bonjour :name, vous avez :count messages" → "Hello :name, you have :count messages"
  • "Bestellung :id wurde am :date versandt" → "Order :id was shipped on :date"

Values containing HTML, such as Read the <a href=":url">terms</a>, keep their tags and their :url attribute. Every translated value is checked against the source for variables and tags; if a mismatch persists, Manuce keeps the source value rather than deliver a string that would break the page, and the report says so.

One English-specific point: if your keys are already English sentences (__('Save changes')), Laravel simply displays the key when no translation exists. An en.json is then only needed for keys written in another language or abstract ones such as dashboard.empty_state.

What Manuce returns, and what it does not do

You get the same file in the same format: indentation, key order, quotation marks, line endings, encoding and any BOM are preserved, and only the values change. A git diff against your source file shows value lines and nothing else.

Left untranslated: keys, empty values, URLs, email addresses, numbers, colours, date formats (a d/m/Y stays d/m/Y), identifiers and anything you have marked as not for translation. The report lists translated strings and those left as they were, with the reason.

The quote counts words in values only, excluding keys and tags, so a file whose keys repeat the source sentences is not charged twice.

Limits worth knowing:

  • PHP array files (lang/fr/messages.php) are not supported; convert them to JSON first.
  • Text hard-coded in Blade views or controllers is not in the language file and will not be translated.
  • Manuce does not produce certified (sworn) translations; if your terms and conditions carry legal weight, have the English text reviewed by a lawyer.

Preparing the file and checking it afterwards

Before uploading. If your strings live in lang/xx/*.php, flatten them into JSON: 'welcome' => 'Bienvenue' in messages.php becomes "messages.welcome": "Bienvenue". Laravel looks up the full key in the locale’s JSON file first, which usually lets you keep calls like __('messages.welcome'); test it on one page before converting everything. The framework’s own validation, authentication and pagination messages already ship in English, so only your application’s strings need translating.

After delivery.

  • Save the file as lang/en.json (or en_GB.json) and check the locale and fallback locale in your app configuration.
  • Open every screen that uses trans_choice with 0, 1 and 2 items to confirm the plurals.
  • Date formats are kept from the source: for a US audience, switch d/m/Y to m/d/Y yourself.
  • Read the report and fix by hand any strings that were kept in the source language.

In practice

  1. Gather your strings in one JSON language file, converting any PHP array files first.
  2. Upload it, specify British or American English, and review the quote and free sample.
  3. Choose a level, pay, and download the translated file and its report from your account.
  4. Save it as lang/en.json, set the locale, and test plurals, placeholders and links.

Frequently asked questions

My translations are in lang/fr/messages.php. Can I upload them as they are?

No, PHP array files are not supported. Convert them into a single JSON file using keys such as messages.welcome. You will get that JSON back translated, in exactly the same format.

Do I need validation.php, auth.php and passwords.php translated?

Not for English: Laravel ships those messages in English. Only your application’s own strings, plus any validation messages you have customised, need translating.

Could placeholders like :name or :count be altered?

Each translated value is checked against the source for variables and tags. If a mismatch persists, the source value is kept and flagged in the report, so you can fix it by hand rather than discover it in production.

Should I choose British or American English?

Whichever your main audience uses. It affects spelling (colour or color) and button capitalisation. Date formats in your file are not translated, so adjust them yourself for a US audience.

How long does a file of a few thousand words take?

For a typical language file, the translation is delivered within minutes. The quote appears on upload and counts words in values only, not keys or tags.

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