9

Diciamo che sto progettando un sito web in cui abbiamo inglese, francese, spagnolo, tedesco e coreano (non lo sono, ma facciamo finta di esserlo).Modelli di progettazione per il sito Web in più lingue?

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

Quali sono alcuni modi noti e semplici per la pubblicazione di contenuti in più lingue con un sito Web?

Ci sono molte opzioni, come pagine separate, un database e così via ... ma non posso davvero decidere cosa è meglio, come il concetto si ridimensiona, cosa deve essere considerato e come trattare con traduzioni mancanti?

Esistono pratiche consolidate per questo?

+0

Sicuramente non si può fare affidamento su Google Translate, riesce a macellare abbastanza bene il giapponese, mi aspetto che il suo trattamento del coreano sia simile. –

+0

Dipende anche da quale linguaggio di programmazione si sta utilizzando – Wil

risposta

13

L'ampio argomento che stai chiedendo è chiamato "Internazionalizzazione e localizzazione" (o I18N e L10N in breve). La cosa importante da ricordare è che è non quasi a tradurre messaggi. Ci sono molte altre cose che riguardano l'internazionalizzazione di un sito web.

Le cose più evidenti si ha bisogno sono:

  • una codifica dei caratteri che funziona per i caratteri in tutte le lingue, non solo inglese (questo significa tutto giù al database dovrebbe utilizzare UTF codifica)
  • Alcuni modo di rappresentare Locale dell'utente (es: Locale class di Java)
  • un modello comune per la produzione di un messaggio nel locale di tale utente (ad esempio: Primavera MessageSource

Altre cose che devono considerare:

  • stringhe correttamente l'ordinamento in base a Locale
  • data di formattazione base alle impostazioni internazionali
  • mostrando sempre volte nel fuso orario dell'utente
  • misurazioni indicatore della distanza per l'utente del locale (es: Miglia contro Chilometri?)
  • Posa il sito web da destra a sinistra per le lingue come l'ebraico
  • Pensa a come ti plura lizza i tuoi messaggi. String message = "Please fix the following error" + (errors.size() > 1 ? "s" : ""); non funziona in un programma internazionalizzato.
  • Pensa a come disporre le tue pagine web quando la lunghezza del testo può variare selvaggiamente .. e non assumere mai che un personaggio abbia più o meno una certa larghezza (un singolo carattere in Kanji potrebbe essere 8 volte più largo di un minuscolo 'i')

La risorsa migliore che posso trovare per questo è lo ICU library's User guide. Se usi Java, questa è la libreria da usare.

Speriamo che questa risposta sia un inizio utile!

1

Abbiamo un set di file su disco che contengono tutte le stringhe in un determinato widget/modulo/qualsiasi e file separati per lingua, ad es.:

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 client, determiniamo la lingua che desidera.

Quando viene richiesta per la prima volta una determinata lingua, viene eseguito il file system per creare la mappatura delle stringhe per quel linguaggio, quindi memorizzarlo nella cache. Se una determinata stringa non è definita in fr-CA, salteremo lo stack su fr, quindi eventualmente sul generico

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

Speranza che aiuta

2

Totalmente d'accordo con @Michael D e altri sviluppatori che hanno pubblicato le loro risposte. Sebbene questa domanda sia già accettata, ritengo che una piccola opzione come la pseudo classe: lang() possa essere utile anche per la creazione di siti multilingue. La pseudo classe: lang() consente di determinare la lingua in vari documenti.

codice CSS: Codice

 


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

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


HTML:

<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'output sarà simile a questo:

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

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

prega di notare che stiamo parlando di documenti, non un pezzo di testo, poiché eseguono una formattazione complessa.

Problemi correlati