Non sono sicuro se siano disponibili pacchetti OS (Open Source). Tuttavia, in teoria, non è troppo difficile costruire questo tipo di libreria. In cinese, ci sono circa 1300 suoni singoli: iniziale + finale + toni. Ogni suono ha un gruppo di caratteri cinesi, un numero variabile da 1 a 130 caratteri.
È possibile definire una matrice di tutti Pinyin suoni:
string[] pinyins = new string[] {
"a:c1c2c3...", // pinyin 1 a: character1 character2...
...
"zuo:z1z2z3z4z5..." // last pinyin (1300) zuo: character character...
};
La matrice di cui sopra è una base per la mappatura Pinyin al cinese (caratteri cinesi e toni Pinyin sono stringhe Unicode). Poi per ogni suono di input Pinyin, un elenco di caratteri si ottiene una funzione come questa:
string getCharacters(string aPinyin) {
string characters = null;
foreach(string item in pinyins) {
string[] temp = item.split(':');
if (temp[0].Equals(aPinyin)) {
charaters = temp[1];
break;
}
}
return characters;
}
ho scritto molto tempo JavaScipt fa, dove ho definito il rapporto tra Pinyin e caratteri cinesi. Nel mio blog: Get Pinyin From Chinese Characters, è possibile trovare lo script visualizzando i codici sorgente o Ispeziona elemento nel menu di scelta rapida. Nel mio blog, lo script viene utilizzato per convertire il cinese in Pinyin, ma la relazione può essere utilizzata come riferimento.
Per aggiungere funzionalità intelligente Pinyin - visualizzazione di un elenco di parole per Pinyin, questo può essere fatto attraverso la definizione di tutte le parole di uso comune nel modello simile: pinyin: parole.
fonte
2012-03-12 04:45:06
se è entrata touch-based, wouldn' è meglio lasciarli inserire i caratteri "scrivendo" sullo schermo invece di usare la conversione pinyin? – Szabolcs
Il touchscreen non è molto reattivo e non sarà facile scrivere in piccole caselle di testo. È per un'applicazione medica, quindi i medici hanno la possibilità di creare nuovi pazienti e dopo averli trovati con il loro nome, il loro nome ecc. Ecco perché non è possibile implementare la soluzione. –
Quindi il motivo per cui si desidera personalizzare l'elenco dei candidati è il completamento automatico del nome del paziente? Il modo in cui la maggior parte dei programmi che conosco implementano questo è consentendo di digitare pinyin (direttamente, non tramite l'IME di sistema) e il completamento automatico basato su quello.Questo problema è molto più semplice dell'implementazione di un IME generale ed efficace --- un IME generale deve gestire tutti i caratteri e deve suggerire le corrispondenze più probabili Il nuovo MS pinyin IME si aggiorna automaticamente da Internet con le ultime statistiche per migliorare le previsioni, e apprende anche dall'utente. – Szabolcs