topics i18n docs djangoproject unicode internationalization transliteration

i18n - Romanización del texto Unicode



https docs djangoproject com en 2.0 topics i18n (4)

El Repositorio de datos de configuración regional común de Unicode tiene algunos mapeos de transliteración que podría usar.

Estoy buscando una forma de transcribir caracteres de letras Unicode de cualquier idioma a letras latinas con acento. La intención es permitir a los extranjeros obtener información sobre la pronunciación de los nombres y las palabras escritas en cualquier escritura no latina.

Ejemplos:

Griego: Romanize("Αλφαβητικός") devuelve "Alphabētikós" (o "Alfavi̱tikós")

Japonés: Romanize("しんばし") devuelve "shimbashi" (o "sinbasi")

Ruso: Romanize("яйца Фаберже") devuelve "yaytsa Faberzhe" (o "jajca Faberže")

Idealmente, debería admitir caracteres en los siguientes scripts: CJK, Indic, Cyrillic, Semitic y Greek. Debe ser impulsado y extensible por los datos, utilizando datos del Consorcio de Unicode, los EE. UU., La UE o las Naciones Unidas. El código debe ser de código abierto escrito en .NET o Java.

¿Existe tal biblioteca?


El problema es mucho más complejo de lo que piensas.

Griego, cirílico, guiones índicos, georgiano -> trivial, podrías programarlo en una hora
Kana tailandesa, japonesa -> factible con un poco más de esfuerzo
Kanji japonés, chino -> estos no son alfabetos / sílabas, por lo que en realidad no estás transliterando, estás buscando la pronunciación de cada símbolo en un gran diccionario (EDICT y CCDICT deberían funcionar), y muchas veces te equivocarás a menos que también estés considerando el contexto, especialmente en japonés
Coreano -> técnicamente un alfabeto, pero las computadoras solo pueden manejar los caracteres compuestos, por lo que necesita otra gran base de datos, no tengo conocimiento de ninguna
Árabe, hebreo -> estos idiomas no escriben vocales cortas, por lo que muchas veces su transliteración será algo ilegible como "bytlhm" (Belén). No tengo conocimiento de ninguna base de datos grande que asigne palabras árabes o hebreas a su pronunciación.


No tengo conocimiento de ninguna solución de código abierto aquí más allá de la ICU . Si la UCI trabaja para ti, genial. De lo contrario, tenga en cuenta que soy el CTO de una empresa que vende un producto comercial para este fin que puede tratar los casos difíciles como las palabras en chino, la lectura múltiple en japonés y la ortografía árabe incompleta.


Puede usar http://unidecode.codeplex.com/ esta biblioteca .net.

Uso;

using BinaryAnalysis.UnidecodeSharp; ....................................... string _Greek="Αλφαβητικός"; MessageBox.Show(_Greek.Unidecode()); string _Japan ="しんばし"; MessageBox.Show(_Japan.Unidecode()); string _Russian ="яйца Фаберже"; MessageBox.Show(_Russian.Unidecode());

Espero que sea bueno para ti.