| /*********************************************************************** |
| * © 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 == 0) { |
| 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; |
| } |