Viewing file:      main.cpp (3.92 KB)      -rw-r--r-- Select action/file-type:    (+) |   (+) |   (+) | Code (+) | Session (+) |   (+) | SDB (+) |   (+) |   (+) |   (+) |   (+) |   (+) |
 
/***********************************************************************  * © 2016 and later: Unicode, Inc. and others.  * License & terms of use: http://www.unicode.org/copyright.html  ***********************************************************************  ***********************************************************************  * COPYRIGHT:  * Copyright (c) 1999-2003, International Business Machines Corporation and  * others. All Rights Reserved.  ***********************************************************************/
  #include "unicode/translit.h" //#include "unicode/rbt.h" #include "unicode/unistr.h" #include "unicode/calendar.h" #include "unicode/datefmt.h" #include <stdio.h> #include <stdlib.h> #include "util.h" #include "unaccent.h"
  // RuleBasedTransliterator rules to remove accents from characters // so they can be displayed as ASCIIx UnicodeString UNACCENT_RULES(     "[\\u00C0-\\u00C5] > A;"     "[\\u00C8-\\u00CB] > E;"     "[\\u00CC-\\u00CF] > I;"     "[\\u00E0-\\u00E5] > a;"     "[\\u00E8-\\u00EB] > e;"     "[\\u00EC-\\u00EF] > i;"     );
  int main(int argc, char **argv) {
      Calendar *cal;     DateFormat *fmt;     DateFormat *defFmt;     Transliterator *greek_latin;     Transliterator *rbtUnaccent;     Transliterator *unaccent;     UParseError pError;     UErrorCode status = U_ZERO_ERROR;     Locale greece("el", "GR");     UnicodeString str, str2;
      // Create a calendar in the Greek locale     cal = Calendar::createInstance(greece, status);     check(status, "Calendar::createInstance");
      // Create a formatter     fmt = DateFormat::createDateInstance(DateFormat::kFull, greece);     fmt->setCalendar(*cal);
      // Create a default formatter     defFmt = DateFormat::createDateInstance(DateFormat::kFull);     defFmt->setCalendar(*cal);
      // Create a Greek-Latin Transliterator     greek_latin = Transliterator::createInstance("Greek-Latin", UTRANS_FORWARD, status);     if (greek_latin == nullptr) {         printf("ERROR: Transliterator::createInstance() failed\n");         exit(1);     }
      // Create a custom Transliterator     rbtUnaccent = Transliterator::createFromRules("RBTUnaccent",                                                   UNACCENT_RULES,                                                   UTRANS_FORWARD,                                                   pError,                                                   status);     check(status, "Transliterator::createFromRules");
      // Create a custom Transliterator     unaccent = new UnaccentTransliterator();
      // Loop over various months     for (int32_t month = Calendar::JANUARY;          month <= Calendar::DECEMBER;          ++month) {
          // Set the calendar to a date         cal->clear();         cal->set(1999, month, 4);                  // Format the date in default locale         str.remove();         defFmt->format(cal->getTime(status), str, status);         check(status, "DateFormat::format");         printf("Date: ");         uprintf(escape(str));         printf("\n");                  // Format the date for Greece         str.remove();         fmt->format(cal->getTime(status), str, status);         check(status, "DateFormat::format");         printf("Greek formatted date: ");         uprintf(escape(str));         printf("\n");                  // Transliterate result         greek_latin->transliterate(str);         printf("Transliterated via Greek-Latin: ");         uprintf(escape(str));         printf("\n");                  // Transliterate result         str2 = str;         rbtUnaccent->transliterate(str);         printf("Transliterated via RBT unaccent: ");         uprintf(escape(str));         printf("\n");
          unaccent->transliterate(str2);         printf("Transliterated via normalizer unaccent: ");         uprintf(escape(str2));         printf("\n\n");     }
      // Clean up     delete fmt;     delete cal;     delete greek_latin;     delete unaccent;     delete rbtUnaccent;
      printf("Exiting successfully\n");     return 0; } 
  |