Preparation

See what breaks before translation starts.

Move text out of the code, lock what the program uses as data, and run the application in a pseudo-language. You fix the problems before you pay for translation.

Compare editions

Pseudo TranslateGerman Simulation · Expand text by 30%New OrderNew ÖrderNeCustomer:Cüßtömer:CüQuantity:Qüäntity:QüShip todayShip tödäyShiPrint receiptPrint receiptPriCreateCreäteCCancelCäncelCOrder savedToo longStill in English Pseudo TranslateGerman Simulation · Expand text by 30%New OrderNew ÖrderNeCustomer:Cüßtömer:CüQuantity:Qüäntity:QüShip todayShip tödäyShiPrint receiptPrint receiptPriCreateCreäteCCancelCäncelCOrder savedToo longStill in English
When
Before the first translation
Finds
Text left in code, text that will not fit, translations that break the program
Tools
Lingobit Extractor, Lock, Pseudo Translate, Crash Finder
Editions
Pseudo Translate: Professional and higher. Crash Finder: Enterprise
On this page

Four questions before the first translation.

Lingobit ExtractorC++OrderDlg.cppExtractvoid COrderDlg::OnSave(){ SaveOrder(); SetStatus(_T("Order saved"));_LS( IDS_ORDER_SAVED ));}RCStrings.rc2STRINGTABLEBEGIN IDS_ORDER_SAVED "Order saved"END"Order saved" Lingobit ExtractorC++OrderDlg.cppExtractvoid COrderDlg::OnSave(){ SaveOrder(); SetStatus(_T("Order saved"));_LS( IDS_ORDER_SAVED ));}RCStrings.rc2STRINGTABLEBEGIN IDS_ORDER_SAVED "Order saved"END"Order saved"
  1. Lingobit ExtractorC++OrderDlg.cppExtractvoid COrderDlg::OnSave(){ SaveOrder(); SetStatus(_T("Order saved"));_LS( IDS_ORDER_SAVED ));}RCStrings.rc2STRINGTABLEBEGIN IDS_ORDER_SAVED "Order saved"END"Order saved" Lingobit ExtractorC++OrderDlg.cppExtractvoid COrderDlg::OnSave(){ SaveOrder(); SetStatus(_T("Order saved"));_LS( IDS_ORDER_SAVED ));}RCStrings.rc2STRINGTABLEBEGIN IDS_ORDER_SAVED "Order saved"END"Order saved"

ProjectMyApp.exeDEFRLockSourceGermanNew OrderCustomer:Quantity:Ship todayOrder savedSoftware\MyAppregistry keyLockedorder.rptfile nameLockedNeeds translation75 ProjectMyApp.exeDEFRSourceGermanLockNew OrderCustomer:Quantity:Ship todayOrder savedSoftware\MyAppregistry keyLockedorder.rptfile nameLockedNeeds translation75
  1. ProjectMyApp.exeDEFRLockSourceGermanNew OrderCustomer:Quantity:Ship todayOrder savedSoftware\MyAppregistry keyLockedorder.rptfile nameLockedNeeds translation75 ProjectMyApp.exeDEFRSourceGermanLockNew OrderCustomer:Quantity:Ship todayOrder savedSoftware\MyAppregistry keyLockedorder.rptfile nameLockedNeeds translation75

ProjectMyApp.exeDEFRPseudo TranslateSourceGermanNew OrderNew ÖrderNeCustomer:Cüßtömer:CüQuantity:Qüäntity:QüShip todayShip tödäyShiPrint receiptPrint receiptPriCreateCreäteCCancelCäncelCNew OrderCustomer:Quantity:Ship todayPrint receiptCreateCancelNew ÖrderNeCüßtömer:CüQüäntity:QüShip tödäyShiPrint receiptPriCreäteCCäncelCPseudo Translate ExpertSimulate translationGerman SimulationExpansion30%Sample textSämple textSämOKCancel ProjectMyApp.exeDEFRSourceGermanPseudo TranslateNew OrderNew ÖrderNeCustomer:Cüßtömer:CüShip todayShip tödäyShiPrint receiptPrint receiptPriCreateCreäteCPseudo Translate ExpertSimulate translationGerman SimulationExpansion30%Sample textSämple textSämOKCancel
  1. ProjectMyApp.exeDEFRPseudo TranslateSourceGermanNew OrderNew ÖrderNeCustomer:Cüßtömer:CüQuantity:Qüäntity:QüShip todayShip tödäyShiPrint receiptPrint receiptPriCreateCreäteCCancelCäncelCNew OrderCustomer:Quantity:Ship todayPrint receiptCreateCancelNew ÖrderNeCüßtömer:CüQüäntity:QüShip tödäyShiPrint receiptPriCreäteCCäncelCPseudo Translate ExpertSimulate translationGerman SimulationExpansion30%Sample textSämple textSämOKCancel ProjectMyApp.exeDEFRSourceGermanPseudo TranslateNew OrderNew ÖrderNeCustomer:Cüßtömer:CüShip todayShip tödäyShiPrint receiptPrint receiptPriCreateCreäteCPseudo Translate ExpertSimulate translationGerman SimulationExpansion30%Sample textSämple textSämOKCancel

MyApp · German ! An unexpected error occurred. OK Which translation causes it? German version: error Which translation causes it? All translations Run 1Error Run 2Works Run 3Error Run 4Works … Found Source Order {0} was saved. Translation Bestellung {1} wurde gespeichert. {1} instead of {0} makes the application fail. MyApp · German ! An unexpected error occurred. OK Which translation causes it? German version: error Which translation? All translations Run 1Error Run 2Works Run 3Error Run 4Works … Found Source Order {0} was saved. Translation Bestellung {1} wurde gespeichert. {1} instead of {0} makes the application fail.
  1. MyApp · German ! An unexpected error occurred. OK Which translation causes it? German version: error Which translation causes it? All translations Run 1Error Run 2Works Run 3Error Run 4Works … Found Source Order {0} was saved. Translation Bestellung {1} wurde gespeichert. {1} instead of {0} makes the application fail. MyApp · German ! An unexpected error occurred. OK Which translation causes it? German version: error Which translation? All translations Run 1Error Run 2Works Run 3Error Run 4Works … Found Source Order {0} was saved. Translation Bestellung {1} wurde gespeichert. {1} instead of {0} makes the application fail.

How much longer will the text be?

Short strings grow the most. A label of up to ten characters can need two to three times its English length in a European language; long sentences grow by about a third.

The language matters too. In the W3C example, the word views from Flickr's interface is shorter in Korean and three times as long in Italian. Set Expand text by in Pseudo Translate to the growth you expect, and check the result before translators start.

Figures: average length of translations from English into European languages, published by IBM and quoted by W3C in Text size in translation.

English textLength after translationUp to 10 characters200–300%11–20 characters180–200%21–30 characters160–180%31–50 characters140–160%51–70 characters151–170%Over 70 characters130%English Length after translationby the length of the English textUp to 10 characters200–300%11–20 characters180–200%21–30 characters160–180%31–50 characters140–160%51–70 characters151–170%Over 70 characters130%English

Already translated in another tool?

Then the application has been through this once. Import the translations from your localized files instead of translating again: they are matched to the strings item by item.

What preparation does and does not promise.

Preparation shows the problems early. Fixing the application itself stays with your team.

What Lingobit helps with

  • Moving strings from source code into resources with Lingobit Extractor
  • Locking strings that must not be translated or changed
  • Testing the application in a pseudo-language before translation
  • Finding the translation that makes the application fail

What remains project-side

  • Reviewing Extractor's results before the build
  • Resource loading and runtime language switching
  • Build system integration
  • Packaging and deployment
  • Final testing in the real application
  • Visual localizationTranslate and review desktop UI with visual editors and previews where available.
  • Translation workflowSend prepared work to translators with Translator Edition, translation tasks, XLIFF, CSV, and CAT tools.
  • Translation assistanceMachine translation, translation memory, Translation Hints, terminology, TMX, and TBX.
  • Localization QACheck placeholders and layout, run spellcheck, and use Crash Finder where needed.
  • Supported formatsWhich file types and workflows can be used as localization inputs.

Fix the problems while they are cheap.

Extract, lock, pseudo-translate, and run the application before the first translation.