Domanda

Credo che molti di noi abbiano già lavorato a un progetto in cui non solo l'interfaccia utente, ma anche i dati debbano essere supportati in diverse lingue. Come - essere in grado di fornire e archiviare una traduzione per quello che sto scrivendo qui, per esempio.

Inoltre, credo anche che molti di noi abbiano alcuni eventi temporizzati (come quando scadono gli accessi all'appartenenza) in cui la posizione dell'utente dovrebbe essere presa in considerazione per calcolare, ad esempio, la mezzanotte in base al giusto fuso orario.

Infine, c'è anche la necessità di supportare le interfacce utente da destra a sinistra che accedono a determinate lingue e l'uso di codifiche diverse durante la lettura di file di dati inviati (ad esempio l'analisi di dati di testo ed excel)

Attualmente sto memorizzando tutte le mie traduzioni per tutte le mie entità su un unico tavolo (non così pratico in quanto è molto difficile trovarsi quando si eseguono query sql per esaminare un problema), impostando le traduzioni dell'interfaccia utente principalmente su assembly satellite e non supporta né i fusi orari né il design da destra a sinistra.

Quali sono le tue esperienze nell'affrontare queste sfide?

[Edit]

Suppongo che la maggior parte delle persone pensi che questo livello di requisiti multiculturali sia proprio come la costruzione di un grande progetto. È un dato di fatto se ti interessa un sondaggio online in cui:

  1. Le risposte verranno raccolte solo fino al mezzanotte
  2. Definizione del questionario e parte di le risposte provengono da un file di testo (in qualsiasi lingua) e traduzioni
  3. Le domande e le opzioni di risposta devono essere visualizzato in diverse lingue, in base a chi vi accede
  4. Anche i report devono essere mostrati e generato in diversi diversi lingue

Come si può vedere, non è necessario andare troppo lontano in un'applicazione per avere questo tipo di requisiti.

[Edit2]

Ho appena scoperto che la mia domanda è un duplicato

i18n nei tuoi progetti

La prima risposta (quando si ordina per voto) è così completa che un giorno dovrò implementarne almeno una parte.

È stato utile?

Soluzione

Sii molto molto cauto. Da quello che dici sulle funzionalità di i18n che stai cercando di implementare, mi chiedo se stai raggiungendo il limite.

Nota che le applicazioni web per ragazzi (ad es. eBay, amazon.com, yahoo, bbc) in realtà forniscono app separate in ogni lingua che vogliono supportare. Ognuna di queste applicazioni Web consuma un insieme comune di servizi di base. Non essere sorpreso se le esigenze aziendali di due paesi diversi che parlano anche la stessa lingua (ad es. Regno Unito e Stati Uniti) sono abbastanza diverse da richiedere un'app separata per ognuna.

D'altra parte, potresti dover diventare come il prossimo amazon.com. È difficile fornire un'applicazione Web di successo in una lingua, molto meno molte. Non dovresti avere paura di favorire una popolazione di utenti (ad esempio, i tuoi parlanti in lingua asiatica) rispetto ad altri se questo ha senso per le esigenze aziendali della tua app web.

Altri suggerimenti

Vai piano.

Rifletti su tutto, poi pensa davvero a quello che stai facendo di nuovo. Tieni presente che più aggiungi (come da destra a sinistra) più lungo sarà il tuo ciclo di QA.

Il pezzo principale del tuo puzzle sarà un ampio uso delle interfacce sul lato del codice, e una fonte di dati che viene passata attraverso un traduttore in qualunque lingua debba essere supportata, o fonti di dati separate per ogni lingua.

I problemi di tempo possono essere gestiti dalle interfacce, perché presumibilmente vorrai che le cose funzionino allo stesso modo, ma differiscono nei dettagli di implementazione. In larga misura, un processo di pensiero simile può essere applicato alla creazione dell'interfaccia quando la si regola per supportare lingue diverse. Quando si arriva a questo, lo skinning è esattamente questo, dove il contenuto da scuoiare è l'interfaccia e l'aspetto è l'implementazione.

Fai ciò di cui hanno bisogno i tuoi utenti. Ad esempio, la maggior parte dei programmatori capisce l'inglese, non ha senso tradurre i messaggi su questo sito. Se molti dei tuoi utenti hanno bisogno di una traduzione, aggiungi una nuova colonna della tabella con l'id della lingua e un'altra colonna per collegare una riga tradotta al suo originale. Se il tuo auditory di destinazione contiene gli utenti dal Medio Oriente, implementa da destra a sinistra. Se la precisione dell'ora è critica fino a un'ora, aggiungi una colonna del fuso orario alla tabella degli utenti e così via.

Se sei su * NIX, usa gettext . Molte lingue che ho usato hanno un certo livello di supporto; PHP's è abbastanza buono, per esempio.

Descriverò ciò che è stato fatto nel mio progetto (non era la mia architettura originale ma mi piaceva comunque)

Fornitura di assistenza per la traduzione

Il testo che deve essere tradotto è stato diviso in tre diverse categorie:

  1. Testo dell'errore: come gli errori che si verificano nel profondo del livello aziendale dell'applicazione
  2. Testo dell'interfaccia utente: testo visualizzato nell'interfaccia utente (etichette, pulsanti, titoli della griglia, menu)
  3. Testo definito dall'utente: testo che deve essere traducibile in base alle preferenze dell'utente finale (ovvero, l'utente crea una domanda in un sondaggio e può anche creare una versione tradotta di tale sondaggio)

Per ogni diversa categoria lo schema utilizzato per fornire il servizio di traduzione è diverso, quindi abbiamo:

  1. Testo errore: una libreria con funzioni statiche che accedono ai file di risorse
  2. Testo dell'interfaccia utente: A " Helper " classe che, collegata al motore di visualizzazione, fornisce traduzioni da assiemi remoti
  3. Testo definito dall'utente: una tabella nel database che fornisce traduzioni (secondo typeID dell'entità tradotta e ID oggetto) ed è collegata all'entità tramite una relazione 1 x N

Non ho, tuttavia, attaccato altri ovvi problemi come gestire i fusi orari, i diversi layout e la traduzione delle immagini (se ciò è veramente necessario). Qualcuno ha affrontato questo problema in modo diverso?

Qualcuno ha mai affrontato gli altri problemi di i18n?

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