International Components for Unicode
# International Components for Unicode

International Components for Unicode («Componentes Internacionales para Unicode», abreviado ICU) es un proyecto de código abierto de C/C++ y Java para Unicode, que busca la internacionalización y globalización del software. ICU es fácilmente aplicable a distintos sistemas operativos y entornos. Su resultado es el mismo en todas las plataformas y en softwares de C, C++ y Java. El proyecto de ICU está patrocinado, apoyado y empleado por IBM y muchas otras compañías.

ICU proporciona los siguientes servicios: control Unicode del texto, una amplia gama de propiedades y conversiones de codificación de caracteres; expresiones regulares Unicode; amplitud de conjuntos Unicode; caracteres, palabras y fronteras de línea; búsqueda y orden de idiomas; conversión de mayúsculas y minúsculas mediante corrección ortográfica y script de transliteración; configuración regional y packs de recursos mediante CLDR; multicalendario y husos horarios; y reglas basadas en formato y gramática de fechas, tiempo, números, monedas, y mensajes. ICU presentó alguna complicación con idiomas como árabe, hebreo, indoario y tailandés en sus orígenes, pero aquello se detectó en su versión 54 y se solucionó completamente en la versión 58 gracias a HarfBuzz.

ICU proporciona una internacionalización más extensa que las bibliotecas estándar de C y C++. ICU 62 es compatible con Unicode 11.0 y las versiones más viejas con Unicode 10.0, pero no con plataformas más viejas como Windows XP, Windows Vista, AIX, Solaris o z/OS.

ICU comenzó utilizando UTF-16 y hoy en día solo lo hace para Java; mientras que con C/C++ se usa UTF-8, incluyendo el correcto manejando de "ilegal UTF-8".

## Origen y desarrollo

Después de que Taligent formase parte de IBM a comienzos de 1996, Sun Microsystems decidió que el lenguaje de Java tendría que tener una mayor compatibilidad para lograr su internacionalización. Ya que Taligent tenía experiencia con dicha tecnología y se encontraba cerca geográficamente, se les propuso contribuir con las clases internacionales de Java Development Kit como parte de la internacionalización de APIs JDK 1.1. Una gran parte de este código aun existe en los paquetes java.text y java.util. Con cada liberación se añadieron más características de internacionalización de Java.

Las clases de internacionalización Java se llevaron a C++ y C bajo una librería con el nombre ICU4C ("ICU para C"). El proyecto de ICU también proporciona ICU4J ("ICU para Java"), el cual añade características no incluidas en las librerías estándar de Java. ICU4C e ICU4J son muy similares, pero no idénticos; por ejemplo, ICU4C incluye una expresión regular API, mientras ICU4J no. Ambos marcos de trabajo han sido realzados con el fin de soportar nuevas instalaciones y características de Unicode y CLDR.

ICU estuvo accesible como un proyecto de código abierto en 1999 bajo el nombre de IBM Classes para Unicode. Más tarde rebautizado a International Components for Unicode, conservando su acrónimo. En mayo de 2016, el proyecto de ICU entró en el consorcio de Unicode como comité técnico ICU-TC y ahora todo se distribuye bajo la licencia de Unicode.

