Kansainväliset komponentit Unicodelle

Kansainvälinen komponentit Unicode (ICU) on avoimen lähdekoodin projekti, joka tarjoaakäsittelykirjastotkäytettäväksi ohjelmointikieliäC/C ++jaJava, jotta tuen tekstien avulla Universal Coded Character Repository (UCS, standardoitu standardin ISO / IEC 10646 jaUnicodetietokoneenvakio),kansainvälistyminenja ohjelmistojen lokalisointi. ICU on laajalti kannettava moniin käyttöjärjestelmiin ja ympäristöihin. Se antaa sovelluksille saman käyttäytymisen ja tulokset kaikilla alustoilla ja ohjelmointikielien välillä, mikä tarjoaa käyttöliittymän C-, C ++ - tai Java-kielille.

ICU-projekti ja lisenssi jakelua ja käyttöä varten

ICU-projekti on ilmainen, yhteistyöhön perustuva ja riippumaton projekti kaupallisilta organisaatioilta; se on tarkoitettu kirjoittamaan, kehittämään ja jakamaan näitä kirjastoja, joiden lähdekoodit ovat saatavilla samanaikaisesti esikäännettyjen versioiden kanssa, joita voidaan käyttää suoraan muissa ohjelmistoissa; sitä tukee aktiivisesti nykyinen pääkehittäjä IBM ja muut ohjelmistoja luovat yritykset, organisaatiot ja yksityishenkilöt.

Nämä kirjastot on varustettu avoimella ja ilmaisella lisenssillä (johdettu X-lisenssistä) ja yhteensopivilla ilmaisten lisenssien ( GPL- tyyppi Free Software Foundation copyyleft -kriteerien mukaan ) ja avoimien lisenssien ( Open Source Initiative -kriteerien mukaan ) kanssa. , joka sallii uudelleenkäytön, muokkaamisen ja uudelleenjaon; tämä lisenssi on ilmainen, mutta ilman tarjottua takuuta, sillä ehdolla, että toimitetaan jäljennös tästä lisenssistä ja mainitaan alkuperäisen ohjelmiston alkuperä (tekijänoikeudet) (jonka IBM ja ICU-projektin osallistujat ovat tekijänoikeuksien haltijoita) kollektiivinen työ).

Tarjotut palvelut

ICU-kirjastojen tärkeimmät palvelut ovat:

Alkuperä ja kehitys

Alun perin ICU kirjoitettiin kokonaan Java- kielellä . Mutta joitakin alustavia ICU teoksia tulevat puitteet C ++ kirjoittanut yhtiön Taligent  (in) , joka osti IBM .

Jotkut tekstinhallintaan, päivämäärän muotoiluun jne. Liittyvät ominaisuudet kirjoitettiin Java tulla kansainvälistymisen API for JDK 1.1 , joka tarjottiin Sun Microsystems , jonka ICU joukkue integrointi Java pohjahyllys-. Suuri osa alkuperäisestä Java-koodista on edelleen paketeissa, java.textja se java.utilsisältää rajoitetun version nykyisestä Java-ICU-kirjastosta.

Nämä ominaisuudet siirrettiin ja laajennettiin C- ja C ++ -laitteisiin näiden kielien ja monien muiden kansainvälistymisvirheiden poistamiseksi. Ohjelmien kansainvälistymisen käsittelemiseen tarvittavien kirjastojen ja algoritmien käsittelyn oikean ja täydellisen tuen kirjastot olivat erittäin puutteellisia. Unicode-standardi ja sen liitteet sekä näiden alojen muiden kansainvälisten standardien mukainen työ.

Yleensä käyttöjärjestelmä tarjoaa nämä ominaisuudet, mutta kaikki käyttöjärjestelmät eivät tarjoa tukea tällaiselle kansainvälistymissovellusliittymälle eikä riittävällä tavalla tukemaan yhtä suurta määrää komentosarjoja, kieliä ja alueellisia käytäntöjä.

ICU julkaistiin vuonna 1999 avoimen lähdekoodin kehitysprojektina nimellä IBM Classes for Unicode . Kun immateriaalioikeudet siirrettiin IBM: ltä riippumattomalle voittoa tavoittelemattomalle organisaatiolle (jossa muut toimijat voivat osallistua uusien ominaisuuksien päätöksenteko- tai arviointiprosessiin), se nimettiin lopulta uudelleen International Components For Unicodeksi (ICU). , ja sen käyttö- ja jakelulupa on vapautettu.

Java-versio on tänään olemassa nimellä ICU4J, ja C / C ++ -versio on tänään nimellä ICU4C. Näillä kahdella kirjastolla on käytännöllisesti katsoen samanlainen toiminnallisuus ja ne kehittyvät saman yleisen arkkitehtuurin mukaisesti kunkin alustan erityistarpeiden mukaan (koska C- ja C ++ -kielten standardoidulla alustalla ei ole riittävää toiminnallisuutta ja se on heterogeenisin ICU4C täydentää niitä tuodakseen ne samalle tasolle kuin Java-ohjelmistossa, joka on jo integroinut merkittävän osan siitä ja jota ICU4J-versiota ei tarvitse korvata, ja muut pienet erot poistetaan yleensä päivityksen avulla. (jos yksi tai toinen hanke on tarpeen).

ICU-projektia ja sen kahta alahanketta kehitetään edelleen rinnakkain Unicoden ja yleisemmin ohjelmistojen kansainvälistymisen (i18n) tuen saamiseksi materiaalin tekniikan tason ja standardien kehitys, joille ICU-hankkeesta on tullut jopa melkein olennainen vertailumalli (käytetään myös kehitettäessä ja testattaessa muutoksia eri standardeissa ja yhteistyötyössä, jota ICU tukee).

Esimerkki

Esimerkki C ++ -koodista ICU-kirjastoa käyttäen desimaalilukujen muotoilemiseksi tässä olevien nimien muodossa, jotka vastaavat arvovälejä.

#include <unicode/unistr.h> #include <unicode/ustream.h> #include <unicode/choicfmt.h> int main(int argc, char *argv[]) { // Bornes inférieures des intervalles de valeurs. double limits[] = {1, 2, 3, 4, 5, 6, 7}; // Noms donnés à chaque intervalle. UnicodeString weekdayNames[] = { "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"}; // Crée un format correspondant à la liste de choix bornée par les limites. ChoiceFormat fmt(limits, weekdayNames, 7); // Déclare une variable destinée à stocker des chaînes de caractères Unicode. UnicodeString str; for (double x = 1.0; x <= 8.0; x += 1.0) { // Formate selon la liste de choix le nombre x dans la chaîne str. fmt.format(x, str); // Affiche le nombre ainsi que la chaîne formatée. cout << x << " -> " << str << endl; } cout << endl; return 0; }

Ulkoiset linkit