Domanda

Come hai implementato l'Internazionalizzazione (i18n) in progetti concreti su cui hai lavorato?

Ho preso un interesse per la creazione di software cross-culturale, dopo che ho letto il famoso post by Joel, Il Minimo Assoluto di Ogni Sviluppatore di Software Assolutamente, Positivamente Deve Sapere Su Unicode e Set di Caratteri (Scuse!).Tuttavia, ho ancora in grado di prendere vantaggio di questo in un vero e proprio progetto, oltre a rendere sicuro ho usato le stringhe Unicode, dove possibile.Ma facendo tutte le stringhe Unicode e garantire che si capire che cosa la codifica di tutto, si lavora con è solo la punta di un i18n iceberg.

Tutto quello che ho lavorato è stato per l'uso controllato dei set di inglese a persone di lingua, o i18n solo che non era qualcosa che abbiamo avuto il tempo per lavorare prima di spingere il progetto live.Quindi sono alla ricerca di consigli o storie di guerra che le persone hanno circa rendere il software più localizzata nel mondo reale progetti.

Nessuna soluzione corretta

Altri suggerimenti

È stato un po', quindi questo non è completa.

Set Di Caratteri

Unicode è grande, ma non è possibile ottenere via con ignorando altri set di caratteri.Il set di caratteri di default su Windows XP (in inglese) è Cp1252.Sul web, non sai che cos'è un browser invierà (anche se si spera che il contenitore può gestire la maggior parte di questo).E non stupitevi quando ci sono bug in qualunque attuazione si sta utilizzando.Set di caratteri possono avere interessanti interazioni con i nomi di file quando si spostano tra le macchine.

Traduzione Di Stringhe

I traduttori sono, generalmente parlando, non programmatori.Se si invia un file di origine di un traduttore, che si rompono.Le stringhe devono essere estratti i file di risorse (ad es.proprietà dei file in Java o resource Dll in Visual C++).Traduttori dovrebbe essere data file che sono difficili da rompere e strumenti che non farli rompere.

I traduttori non so dove stringhe in un prodotto.È difficile tradurre una stringa senza contesto.Se non si forniscono indicazioni, la qualità di una traduzione si soffre.

Mentre sul tema del contesto, si può vedere la stessa stringa "pippo" raccolto in più volte e penso che sarebbe più efficiente di avere tutte le istanze dell'interfaccia utente di scegliere la stessa risorsa.Questa è una cattiva idea.Parole può essere molto sensibile al contesto in alcune lingue.

Traduzione di stringhe di denaro.Se si rilascia una nuova versione di un prodotto, ha senso recuperare le vecchie versioni.Sono strumenti per recuperare le stringhe dal file di risorse.

La concatenazione della stringa e la manipolazione di stringhe deve essere ridotto al minimo.Utilizzare le funzioni di formattazione, dove applicabile.

I traduttori devono essere in grado di modificare i tasti di scelta rapida. Ctrl+P è la stampa, in lingua inglese;i Tedeschi utilizzare Ctrl+D.

Se si dispone di un processo di traduzione che richiede a qualcuno di manualmente tagliare e incollare le stringhe in qualsiasi momento, siete in cerca di guai.

Date, Orari, Calendari, Moneta, Numero Di Formati, Fusi Orari

Tutti questi possono variare da paese a paese.Una virgola può essere utilizzato per indicare i decimali.I tempi possono essere in 24 ore notazione.Non tutti usano il calendario Gregoriano.È necessario essere chiari, troppo.Se si prende cura per la visualizzazione di date come MM/GG/AAAA per gli USA e il GG/MM/AAAA per il regno UNITO sul tuo sito web, le date sono ambigue, a meno che l'utente sa che hai fatto.

In Particolare Valuta

Il Locale funzioni previste nell'librerie di classi vi darà il locale simbolo di valuta, ma non si può attaccare solo una sterlina () o il simbolo dell'euro a fronte di un valore che dà un prezzo in dollari.

Interfacce Utente

Il Layout dovrebbe essere dinamico.Non solo sono stringhe probabile doppio in lunghezza di traduzione, l'intera interfaccia utente devono essere invertito (in ebraico;L'arabo), in modo che i controlli da eseguire da destra a sinistra.E che prima di arrivare all'Asia.

Di Test Prima Di Traduzione

  • Utilizzare l'analisi statica del codice in modo da individuare i problemi.Come minimo, sfruttare gli strumenti incorporati nel vostro IDE.(Eclipse gli utenti possono accedere alla Finestra > Preferenze > Java > Compilatore > Errori/Avvisi e controllare che non esternalizzati corde).
  • Il fumo di test simulando di traduzione.Non è difficile analizzare un file di risorse e la sostituzione di stringhe con una pseudo-versione tradotta, che raddoppia la lunghezza e inserti funky caratteri.Non è necessario parlare un linguaggio di utilizzare una straniera sistema operativo.I moderni sistemi consente di accedere come un utente straniero con stringhe tradotte e straniere locale.Se si ha familiarità con il sistema operativo, si può capire che cosa fa, che cosa, senza sapere una parola della lingua.
  • Tastiera mappe e set di caratteri riferimenti sono molto utili.
  • La virtualizzazione può essere molto utile qui.

Questioni Non tecniche

A volte bisogna essere sensibili alle differenze culturali (reato o di incomprensione può comportare).Un errore che capita spesso di vedere è l'uso di bandiere come un segnale visivo la scelta di un sito di lingua o di geografia.A meno che non si desidera che il software per dichiarare i lati nella politica globale, questa è una cattiva idea.Se fossi francese e ha offerto l'opzione per la lingua inglese con SanGiorgio bandiera (la bandiera dell'Inghilterra, è una croce rossa su campo bianco), questo potrebbe causare confusione per molte persone che parlano in inglese, assumono simili problemi sorgeranno con l'estero lingue e paesi.Le icone devono essere controllati per la rilevanza culturale.Che cosa fa un pollice in su o un segno di spunta verde significa?La lingua dovrebbe essere relativamente neutrale per indirizzare gli utenti in un determinato modo, può essere accettabile in una regione, ma considerato maleducato in un altro.

Risorse

C++ e Java programmatori possono trovare in unità di terapia intensiva sito utile: http://www.icu-project.org/

Alcune delle cose divertenti:

  1. Avere un PHP e MySQL Applicazione che funziona bene con il tedesco e il francese, ma ora ha bisogno di sostegno russo e Cinese.Penso di spostare questo su .net, PHP, il supporto Unicode è - a mio parere - non è veramente buono.Certo, giocoleria in giro con utf8_de/codifica o la mbstring-funzioni è divertente.Quasi divertente come avere Freddy Krueger visita a notte...

  2. Rendendosi conto che alcune lingue sono MOLTO più Dettagliato rispetto a altri.Il tedesco è MOLTO più dettagliata di inglese, di solito, e vedere come la Versione tedesca distrugge l'Interfaccia Utente, perché troppo poco spazio è stato assegnato non è stato divertente.Alcuni prodotti hanno conquistato una certa fama per i loro modi creativi per risolvere che, con l'Oblio "di Schw.Tr.d.Le.It.W." da ricordare :-)

  3. Giocare con i formati di data, woohoo!Sì, in realtà vi SONO persone nel mondo che utilizzano i formati di data in cui il giorno passa in mezzo.Sooooo molto divertente cercare di scoprire che cosa 07/02/2008 è dovuto dire, solo perché alcuni utenti potrebbero credo che potrebbe essere il 2 di luglio...Ma poi di nuovo, voi ragazzi lo stagno può credere la stessa cosa di utenti che hanno messo il mese in mezzo :-P, soprattutto perché in inglese, 2 luglio suona molto meglio il 2 di luglio, qualcosa che non è necessaria-è applicabile ad altre lingue (es.in tedesco, non lo diresti mai Juli 2 ma sempre Zweiter Luglio).Io uso 2008-02-07 ogni volta che è possibile.È chiaro che significa 7 febbraio e ordina correttamente, ma gg/mm contromm/dd può essere davvero un problema difficile.

  4. Anoter cosa divertente, Numero di formati!10.000,50 vs 10,000.50 vs10 000,50 vs10'000,50...Questo è il mio più grande incubo adesso, di dover sostenere un multi-culturale environent ma non avendo alcun modo affidabile per sapere che numero è il formato che l'utente dovrà utilizzare.

  5. Formale o Informale.In alcune lingue, ci sono due modi di affrontare le persone, un modo formale e un modo più informale.In inglese, basta dire "Si", ma in tedesco si deve decidere tra il formale "Sie" e l'informale "Du", lo stesso per i francesi Tu/Vous.Di solito è una scommessa sicura per scegliere il modo formale, ma questo è facilmente trascurato.

  6. Calendari.In Europa, il primo giorno della Settimana è il lunedì, mentre negli USA è domenica.Calendario Widget sono piacevoli.Visualizzazione di un Calendario con la domenica a sinistra e sabato sulla destra Europea utente non è così bello, si confonde la loro.

Ho lavorato su un progetto per il mio precedente datore di lavoro che ha usato .NET, e c'era un costruito in .resx formato che abbiamo usato.In pratica abbiamo avuto un file che aveva tutte le traduzioni in .file resx, e quindi più file con diverse traduzioni.La conseguenza di questo è che si deve essere molto diligente nel garantire che tutte le stringhe sono visibili nell'applicazione sono memorizzati nel .resx, e in qualsiasi momento è cambiato devi aggiornare tutte le lingue supportate.

Se si ottiene pigro e non informare i responsabili delle traduzioni, o incorporare stringhe, senza passare attraverso il sistema di localizzazione, sarà un incubo per provare a correggere successivamente.Allo stesso modo, se la localizzazione è un ripensamento, sarà molto difficile mettere in atto.Linea di fondo, se non sono tutti visibili le stringhe memorizzate esternamente in un posto standard, sarà molto difficile trovare tutto ciò di cui hanno bisogno di essere localizzate.

Un altra nota, molto è assolutamente da evitare la concatenazione visibile direttamente le stringhe, come

String message = "The " + item + " is on sale!";

Invece, è necessario utilizzare qualcosa di simile

String message = String.Format("The {0} is on sale!", item);

La ragione di questo è che le diverse lingue spesso le parole in modo diverso, e la concatenazione di stringhe direttamente sarà bisogno di una nuova build per risolvere, ma per caso hai usato qualche tipo di stringa meccanismo di sostituzione, come sopra, è possibile modificare il vostro .file resx (o qualsiasi file di localizzazione in uso) per lo specifico linguaggio che non ha bisogno di riordinare le parole.

Stavo solo ascoltando una Podcast da Scott Hanselman questa mattina, dove si parla di internazionalizzazione, soprattutto veramente le cose complicate, come il bagno turco (con quattro, i) e Thai.Inoltre, Jeff Atwood ha avuto un post:

Oltre a tutti i precedenti consigli, ricordate che i18n non si tratta solo di cambiare le parole per il loro equivalente in altre lingue, in particolare per le lingue non latine lettere (coreano, arabo) scritto da destra a sinistra, in modo che l'intera interfaccia utente dovranno essere conformi, come

  • voce 1
  • voce 2
  • articolo 3

dovrebbe essere

il testo in lingua araba 1 -

il testo in lingua araba 2 -

testo arabo a 3

(invertita elenco puntato non sembra funzionare :P)

che può essere una UI incubo, se il vostro sistema per applicare le modifiche dinamicamente una volta che l'utente cambia la lingua utilizzata.

Un'altra cosa molto difficile è quello di testare diverse lingue, e non solo per la correttezza delle parole, ma dato che le lingue come il coreano, di solito, sono più il tipo di carattere per i loro personaggi, questo può portare a un linguaggio specifico bug (come "SALVARE" il testo su un pulsante più grande del pulsante stesso per alcune lingue).

Uno dei più divertenti cose da scoprire:il corsivo e il grassetto per il testo makrup non funziona con CJK (Cinese/Giapponese/coreano) caratteri.Semplicemente diventano illeggibili.(OK, non riuscivo davvero a leggere prima di entrambi, ma soprattutto il grassetto solo crea macchie di inchiostro)

Penso che tutti coloro che lavorano nell'ambito dell'internazionalizzazione dovrebbe avere familiarità con il Comune Locale Repository di Dati, che ora è un sub-progetto di Unicode:

Common Locale Deposito Di Dati

I ragazzi stanno lavorando duramente per stabilire una risorsa standard per tutti i tipi di i18n problemi:valuta, nomi geografici, tonnellate di roba.Qualsiasi progetto che la manutenzione del proprio nucleo locale di dati, dato che l'esistenza di questo progetto è abbastanza bonkers, IMHO.

Io suggerisco di usare qualcosa come 99translations.com per mantenere le vostre traduzioni .Altrimenti non essere in grado di dire che cosa le vostre traduzioni sono fino a data in ogni lingua.

Un'altra sfida sarà accettare input da parte degli utenti.In molti casi, questo è facilitato dal di elaborazione dell'input fornito dal sistema operativo, come IME in Windows, che funziona in modo trasparente con i comuni widget di testo, ma questa funzione non sarà disponibile per ogni esigenza.

Un sito web che ho usato ha un metodo di traduzione il proprietario chiama "wiki + machine translation".Questa è una comunità di base, sito in modo ovviamente diverso per le esigenze delle aziende.

http://blog.bookmooch.com/2007/09/23/how-bookmooch-does-its-translations/

Una cosa che nessuno ha ancora citato è di stringhe con alcuni warying parte, come in "L'unità arrivare in 5 giorni" o "lunedì succede qualcosa." dove 5 e lunedì cambiano a seconda dello stato.Non è una buona idea di dividere quei due e concatenarle.Con solo una parte variabile e una buona documentazione, si potrebbe ottenere via con esso, con due diverse parti, ci sarà qualche lingua che preferes per modificare l'ordine di loro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top