diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2010-12-03 09:05:05 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2010-12-03 09:05:05 +0000 |
commit | e04c6a878f5044d36eaa95d4c2318e0381a32998 (patch) | |
tree | 5b7c36578140e48c0114863004c8375ea55db21d /Build/source/libs/icu/icu-4.6/samples/translit/answers/main_3.cpp | |
parent | fa438554bd1a061515cd8f5f46fbe311ff08dcd6 (diff) |
icu 4.6
git-svn-id: svn://tug.org/texlive/trunk@20645 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/icu/icu-4.6/samples/translit/answers/main_3.cpp')
-rw-r--r-- | Build/source/libs/icu/icu-4.6/samples/translit/answers/main_3.cpp | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.6/samples/translit/answers/main_3.cpp b/Build/source/libs/icu/icu-4.6/samples/translit/answers/main_3.cpp new file mode 100644 index 00000000000..93065a252a0 --- /dev/null +++ b/Build/source/libs/icu/icu-4.6/samples/translit/answers/main_3.cpp @@ -0,0 +1,112 @@ +/******************************************************************** + * COPYRIGHT: + * Copyright (c) 1999-2002, 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; + 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"); + if (greek_latin == 0) { + printf("ERROR: Transliterator::createInstance() failed\n"); + exit(1); + } + + // Create a custom Transliterator + rbtUnaccent = new RuleBasedTransliterator("RBTUnaccent", + UNACCENT_RULES, + UTRANS_FORWARD, + status); + check(status, "RuleBasedTransliterator::ct"); + + // 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\n"); + } + + // Clean up + delete fmt; + delete cal; + delete greek_latin; + delete rbtUnaccent; + + printf("Exiting successfully\n"); + return 0; +} |