Qual è la migliore pratica per progettare un sistema che supporta molte lingue, 1 dizionario centrale per tutte le lingue o un dizionario separato?

1

Voglio costruire un sistema che usi un dizionario di molte lingue diverse.

Ci sono 2 opzioni: Costruisci 1 dizionario centrale Table & ogni lingua è identificata da langType (ex 1 per il tedesco e 0 per l'inglese):

CentralDict
word - meaning - langType
car  - ....    - 0
auto - ....    - 1

o 2 tabelle separate

EngDict
word - meaning
car  - .... 

GerDict
word - meaning
auto - ....

Se l'opzione è 2, allora quando esegui la codifica

String DictTable="";
String locale=getLocale();
if ("gm".locale){
   DictTable="GerDict";
}
else if("en".locale){
   DictTable="EngDict";
}

Quindi quando eseguiamo una query da

String sql="select * from "+DictTable;
//access data from table here

Se l'opzione 1 è selezionata,

    int langType=0;
    String locale=getLocale();
    if ("gm".locale){
       langType=1;
    }
    else if("en".locale){
       langType=0;
    }
    String sql="select * from CentralDict where langType="+langType;
    //access data from table here

Immagino che l'opzione 2 sia più elegante, ma non sono sicuro che abbia ragione?

Con l'opzione 2 possiamo creare facilmente una relazione 1 a 1 tra 2 lingue.

Nota: non è il problema dell'internazionalizzazione in quanto il mio sistema è in grado di gestire l'internazionalizzazione molto bene. Mentre l'internalizzazione riguarda il testo del Gui come il testo del pulsante o le informazioni del messaggio, non tratta i dati estratti dal DB.

Il mio sistema di dizionario aiuta l'utente a vedere i termini di spiegazione come "auto", "telefono" .... per scopi didattici.

Attualmente funziona perfettamente in inglese, ma voglio supportare tedesco e amp; molti saranno in francese o in altre lingue in futuro. Non so se dovrei creare una tabella separata completa per ogni lingua o ho solo bisogno di un dizionario centralizzato per tutte le lingue e amp; ha un campo langType per identificare la lingua che deve essere utilizzata in base al requisito dell'utente. Es: Quando l'utente inserisce mydomain.com/locale=de , il sistema mostrerà l'esatto Gui (come in inglese) ma tutto il testo del Gui sarà in tedesco. Inoltre, quando l'utente cerca i dati, dovrebbe estrarre i dati tedeschi dal DB. dati non inglesi.

    
posta Tum 27.07.2014 - 02:07
fonte

2 risposte

1

Qual è il vero problema che vuoi risolvere? Cosa sta facendo la tua applicazione? Su quale sistema operativo?

Se si tratta di internazionalizzazione , ad es. adattando il tuo software per dare messaggi in vari linguaggi umani, la maggior parte dei sistemi operativi fornisce una struttura per questo. Sui sistemi Linux e Posix, puoi utilizzare l'infrastruttura locale (7) .

Se l'obiettivo è elaborazione in linguaggio naturale (ad esempio, adattare il tuo software in qualche modo "capire" i vari input di lingue umane) lì ci sono molte tecniche (e librerie) per questo (e la PNL è un campo complesso e difficile, quindi inizia a leggere molti libri e / o segui alcuni corsi universitari). AFAIK le tecniche potrebbero dipendere dall'attuale linguaggio umano, a causa della diversità dei linguaggi umani scritti: alcuni sono sillabici, alcuni sono alfabetici, altri usano pittogrammi, alcuni hanno casi e generi, e alcune lingue non hanno nemmeno la nozione di verbo come nelle lingue indoeuropee (inglese, francese, russo è quello che conosco ...).

    
risposta data 27.07.2014 - 09:08
fonte
0

Se conosci la lingua che desideri prima della ricerca, sarà più veloce cercare una tabella specifica per una lingua specifica rispetto a un enorme tavolo universale con molte lingue.

L'opzione 2 ottiene il mio voto!

    
risposta data 27.07.2014 - 08:04
fonte

Leggi altre domande sui tag