Domanda

Diciamo che sto progettando un sito web in cui abbiamo inglese, francese, spagnolo, tedesco e coreano (non lo sono, ma facciamo finta che lo sia).

Non posso fare affidamento su servizi come Google Translate, poiché la natura del sito Web non è per intrattenimento ma per affari.Diciamo che ho accesso a traduttori professionisti che possono tradurre qualcosa nel contesto in un'altra lingua e darmi quel testo.

Quali sono alcuni modi semplici e conosciuti per offrire contenuti in più lingue con un sito web?

Ci sono molte opzioni, come pagine separate, utilizzo di un database e così via...ma non riesco davvero a decidere cosa sia meglio, come scalare il concetto, cosa deve essere considerato e come gestire le traduzioni mancanti?

Esistono pratiche consolidate in merito?

È stato utile?

Soluzione

Il vasto argomento si sta chiedendo è chiamato "Internazionalizzazione e localizzazione" (o I18N e L10N in breve). La cosa importante da ricordare è che è non solo di tradurre i messaggi. Ci sono molte altre cose che vanno in internazionalizzare un sito web.

Le cose più evidenti si ha bisogno sono:

  • Un personaggio codifica che funziona per i caratteri in tutte le lingue, non solo inglese (questo significa tutto giù al database devono utilizzare la codifica UTF)
  • Qualche modo di rappresentare l'utente Locale (cioè: di Java Locale classe)
  • Un modello comune per la produzione di un messaggio nel locale di tale utente (ad esempio: Primavera di MessageSource

Altre cose che devono considerare:

  • correttamente l'ordinamento delle stringhe basate su Locale
  • Formattazione data sulla base di impostazioni locali
  • che mostrano sempre volte nel fuso orario dell'utente
  • Mostra misure di distanza per il locale dell'utente (ad esempio:? Miglia contro chilometri)
  • Sistemazione del sito nella destra a sinistra per le lingue come l'ebraico
  • Pensate a come si plurale tuoi messaggi. String message = "Please fix the following error" + (errors.size() > 1 ? "s" : ""); semplicemente non funziona in un programma internazionalizzato.
  • pensare a come il layout delle pagine web quando la lunghezza del testo può variare selvaggiamente .. e mai scontato che un personaggio è più o meno una certa larghezza (un singolo carattere in Kanji potrebbe essere 8 volte più ampio di una minuscolo 'i')

La migliore risorsa che posso trovare per questo è il Manuale d'uso della libreria ICU . Se si utilizza Java, questa è la libreria per l'uso.

Speriamo che questa risposta è un inizio utile!

Altri suggerimenti

Date un'occhiata alle raccomandazioni di Google per multiregionali e multilingue . La speranza che l'informazione viene in aiuto. Buona fortuna.

Totalmente d'accordo con @ Michael D e altri sviluppatori che hanno pubblicato le loro risposte. Anche se la domanda è per questo già accettato, ma penso che una piccola possibilità, come il: lang () pseudo classe può essere utile per createing siti multilingue pure. L': lang () della classe pseudo permette di determinare la lingua in vari documenti.

codice CSS:

    q:lang(fr) {     /* Quotations for French */ 
     quotes: "\00AB" "\00BB"; 
    }

    q:lang(en) {
     quotes: "\201C" "\201D";    /* Quotations for English */ 
    }


HTML codice:

 <html>
 <body>
 <pre>
     <p>Quote in French: <q lang="fr">То être ou ne pas être</q>.</p>
     <p>Quote in English: <q lang="en">То be or not to be</q>.</p>
 </pre>
 </body>
 </html>

E l'uscita sarà simile a questo:

Quote in French language: << То être ou ne pas être >>.

Quote in English language: "То be or not to be".

Si prega di notare che stiamo parlando di documenti, non un pezzo di testo, in quanto svolgono la formattazione complesso.

Abbiamo una serie di file su disco che contengono tutte le stringhe in un dato widget/modulo/qualunque cosa e file separati per lingua, ovvero:

foo.strings == generic (happens to be US english)
foo.fr.strings == french
foo.fr-CA.strings == canadian french 
foo.en-CA.strings == canadian english

In base all'intestazione Accept-Language del cliente, determiniamo quale lingua desidera.

Quando viene richiesta per la prima volta una determinata lingua, utilizziamo il file system per creare la mappatura delle stringhe di grandi dimensioni per quella lingua, quindi memorizzarla nella cache.Se una determinata stringa non è definita in fr-CA, saliremo nello stack fino a fr, quindi eventualmente al generico

Le pagine vengono generate dinamicamente e la versione generata di ciascun URL viene memorizzata nella cache a seconda delle intestazioni della lingua dell'utente (tra le altre cose).

Spero possa aiutare

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