Multi-Lingual Language Translations for ASP.NET

By Robbe D. Morris

Printer Friendly Version


Robbe & Melisa Morris
Here are a few free (paid for by me) language translations of common software terms for use in your multi-lingual ASP.NET application.  This is particularly helpful if you want to create a list of available languages in Spanish, German, Chinese, etc...
The language translation spreadsheet has generic term translations for Spanish, English, German, Italian, French, Chinese-Simple, and Japanese.  The language name translations also includes Dutch, Korean, and Russian.




For display purposes, I've only included English, Spanish, German, and Italian.  You may notice that some of the special characters in certain languages do not render properly in your browser.  The spreadsheet mentioned above has all of the proper characters for these instances.
If you have never written a mult-lingual application, I strongly suggest purchasing a book that covers building multi-lingual applications in .NET.  There are ton of important things that you don't know.  I've included a few below.

A Few Things To Think About
1.  Text Width Varies From Language To Language
  Looking at the text table below, you can clearly see a need to consider the amount of space the same text string in one language takes up compared to the same text string in another language.  You may even need to use separate language specific stylesheets to accomodate Asian oriented languages in order to make their symbols large enough for a normal person to read.  You will want to consider placing your labels above data entry items versus the common practice of placing them to the left.  Also, all of the colum headings in your datagrid are going to be affected by text width.  Your graphics arts people will want to tighten up their layouts but beware, the text width variances are almost certain to create serious problems with how your pages look.
2.  Colors
  Colors have different meanings in different cultures.  For instance the color red commonly means:  Passion (US), love Death (Mexico), (Greece), luck (China), bloodshed (Africa), truth (India), and danger (Israel).  This issue typically shows up with button colors and html font colors.
3.  Text Alignment
  Certain cultures read/write text from right to left instead of left to right the way English is read.  This may create issues when you use css from a hard coded file reference.  You may want to consider culture specific stylesheets.
4.  Free Machine Language Translation Sites
  These sites are virtually worthless.  They are often completely off base.  That said, you are going to have to pay a professional company to translate your text.  Be aware that these companies often have a minimum price per quote per language.  So, they are going to stick it to you if you have say 90% of your application translated and then come back two days later and translate the remaining 10% you forgot to send them.  Read your contract very carefully...  The running rate (in the year 2008) is roughly $.25 to $.40 per word depending on the language.  The number of words per language will not be identical.  Some languages can increase your word count 20%.
5.  Number & Date Formatting
  There are many places where the .NET Framework just takes care of this for you.  However, it doesn't cover all situations.  Also, you will need to test any third party controls you are using to be certain they behave as you would expect.
  If your application is multi-lingual and supports multiple currencies, you'll need to manually account for number and currency formatting that doesn't necessarily match the current thread's culture settings.  This will require additional parameters such as CultureInfo to some of your formatting methods that were previously dependent on the current thread's culture settings.
6.  Error Messages
  Your testers are going to drive you nuts with bug reports stating that your .NET framework messages or custom messages aren't translated.  This will also show up in your JavaScript messages.
7.  Database
  You will want to try and create a generic reusable approach to populating your drop down lists from your cross reference tables in the database.  Anything short of that will require constant schema changes anytime you add a new language to the application.  You'll also want to tie this approach into other primary tables which aren't just lookup tables that you may display in a datagrid or on a form.  Any English string column you ever plan to display will need a translation.  Many of your business logic methods will need to have a language identifier added as a parameter.
  You may want to try and save your number, currency, and date oriented data in a single static culture.  This may make it easier to reformat the data based on which culture info is using the data in your application.
8.  Testing
  You need to budget for external software testing.  Trust me, if you can't read/write Chinese, you are not going to be able to adequately test your software either.  You will need to plan how you intend to interact with your testing company and what they need to know.  Be sure to test how your application behaves when the regional settings are different than on your development machine!

Resource ItemEnglishSpanishGermanItalian
AboutUsAbout UsAcerca de nosotrosInfoChi siamo
AccessDeniedAccess deniedAcceso denegadoZugriff verweigertAccesso negato
ActiveIs activeEstá activaIst aktivAttivo
AddAddAgregarHinzufügenAggiungi
AskAskPreguntarFragenChiedi
BackBackAtrásZurückIndietro
BadBadMalSchlechtNon valido
BrowseBrowseExaminarBrowsenSfoglia
CancelCancelCancelarAbbrechenAnnulla
ChartsChartsTablasTabellenGrafici
CloseCloseCerrarSchließenChiudi
CollaborateCollaborateColaborarZusammenarbeitenCollabora
CollapseCollapseColapsarReduzierenComprimi
Contact UsContact UsContáctenosKontaktContattaci
CopyCopyCopiarKopierenCopia
CurrencyFormatCurrencyDivisaWährungValuta
CurrencyFormatNumberFormatCurrency / Number FormatDivisa / Formato de númeroWährung/ZahlenformatFormato valuta/Numero
CutCutCortarAusschneidenTaglia
DateCreatedDate Created:Fecha de creación:Erstelldatum:Data Creazione:
DeleteDeleteEliminarLöschenElimina
DenyAccessDeny AccessAcceso denegadoZugriff verweigernNega accesso
DownDownAbajoAbwärtsGiù
DownloadDownloadBajarHerunterladenDownload
EditEditEditarBearbeitenModifica
EmailEmailEnviar (por) correo electrónicoE-MailEmail
EmailMessageEmail MessageMensaje de correo electrónicoE-Mail-BenachrichtigungMessaggio email
EmailRequiredWarningEmail is required.Se requiere correo electrónicoE-Mail ist erforderlich.Email obbligatoria.
EmailSubjectEmail SubjectAsunto del correo electrónicoE-Mail-ThemaOggetto email
ExpandExpandExpandir/AmpliarErweiternEspandi
ExportExportExportarExportierenEsporta
FalseFalseFalsaFalschFalso
FinishFinishFinlandésBeendenFine
FirstNameFirst NameNombreVornameNome
ForwardForwardReenviarWeiterAvanti
GoGoIrWechseln zuVai
GoodGoodBienGutBuono
GrantAccessGrant AccessOtorgar accesoZugang gewährenGarantisci accesso
HelpHelpAyudaHilfeGuida
HomeHomeInicioStartseiteHome
ImportImportImportarImportierenImporta
InactiveInactiveInactivoInaktivInattivo
InstallInstallInstalarInstallierenInstalla
InvalidLoginCredentials.Invalid login credentials.Credenciales de inicio de sesión no validas.Ungültige Anmeldeinformationen.Credenziali di accesso non valide.
ItemDeletedItem deleted.Item eliminadoEintrag gelöscht.Elemento eliminato.
ItemNotUpdatedMessageItem not updated.Item no actualizadoEintrag nicht aktualisiert.Elemento non aggiornato.
ItemUpdatedMessageItem updated.Item actualizadoEintrag aktualisiert.Elemento aggiornato.
LanguageLanguageIdiomaSpracheLingua
LastModifiedLast Modified:Última modificación:Zuletzt angepasst:Ultima modifica:
LastNameLast NameApellidoNachnameCognome
LicensesLicensesLicenciasLizenzenLicenze
LicensesGrantedLicenses grantedLicencias otorgadasGewährte LizenzenLicenze garantite
LoginLoginIniciar sesiónAnmeldungAccedi
MiddleNameMiddle NameSegundo nombreZweiter VornameSecondo nome
MoreMoreMásMehrAltro
NameHeadingNameNombreNameNome
NewUserNew UserNuevo usuarioNeuer BenutzerNuovo utente
NextNextSiguienteWeiterAvanti
NoNoNoNeinNo
NoLicenseGrantedNo licenses grantedNinguna licencia otorgadaKeine Lizenzen gewährtNessuna licenza garantita
OkOkAceptarOkOk
OwnerOwnerPropietarioBesitzerProprietario
PasswordPasswordContraseñaPasswortPassword
PasswordRequiredPassword requiredContraseña obligatoriaPasswort erforderlichPassword obbligatoria
PastePastePegarEinfügenIncolla
PausePausePausaPausierenPausa
PermissionsPermissionsPermisosGenehmigungenAutorizzazioni
Please waitPlease wait"Por favor, espere"Bitte wartenAttendere
PreviousPreviousAnteriorZurückPrecedente
ProfileProfilePerfilProfilProfilo
ProgressProgressProgresoFortschrittStato
ReadOnlyRead OnlySólo lecturaLesezugriffSola lettura
RecordDoesNotExistRecord does not exist.No existen registrosAufzeichnung nicht vorhanden.Record non esistente.
Records{0} records found{0} registro encontrado{0} Aufzeichnung(en) gefunden{0} record trovati
RefreshRefreshActualizarAktualisierenAggiorna
RenameRenameRenombrarUmbenennenRinomina
ReplyReplyResponderAntwortenRispondi
RequiredRequiredObligatorioErforderlichObbligatorio
ResetPasswordReset PasswordRestaurar contraseñaPasswortReimposta password
ResultsResultsResultadosErgebnisseRisultati
ResumeResumeReanudarFortsetzenRiepilogo
ReturnToLoginPageReturn to login pageVolver a la página de inicio de sesiónZur Anmeldeseite zurückkehrenRitorna alla pagina di accesso
RevokeRevokeRevocarSperrenRevoca
SalutationSalutationSaludoGrußformelSaluti
SaveAndReturnLaterSave And Return LaterGuardar y volver más tardeSpeichern und zu einem späteren Zeitpunkt zurückkehrenSalva e ritorna successivamente
SearchSearchBuscarSuchenCerca
SelectAllSelect AllSeleccionar todoAlle auswählenSeleziona tutto
SendSendEnviarSendenInvia
SettingsSettingsValoresEinstellungenImpostazioni
SignOutSign-outAbandonar sesiónAbmeldenDisconnetti
StatusStatusEstadoStatusStato
SubmitSubmitEnviarEingebenInvia
SupportSupportSoporteSupportSupporto
SuspendedSuspendedSuspendidoAusgesetztSospeso
TransmitTransmitTransmitirÜbertragenTrasmissione
TrueTrueTrueWahrVero
Unknown UnknownDesconocidoUnbekanntSconosciuto
UpUpArribaAufwärtsSu
UploadUploadCargarHeraufladenCarica
UserAccountUser AccountCuenta de usuarioBenutzerkontoAccount utente
UserManagementUser ManagementAdministración de usuarioBenutzerverwaltungGestione account
UserNameUsernameNombre de usuarioBenutzernameNome utente
UserPermissionsUser PermissionsPermisos de usuarioBenutzergenehmigungenAutorizzazioni utente
UsersUsersUsuariosBenutzerUtenti
YesYesJa
 


Robbe is a 2004-2008 Microsoft MVP for C# and the .NET Evangelist for Alinean Inc..  He is also the co-founder of EggHeadCafe which provides .NET articles, book reviews, software reviews, and software download and purchase advice.