Imported Upstream version 58.2
[platform/upstream/icu.git] / source / samples / translit / answers / main_2.cpp
1 /***********************************************************************
2  * Copyright (C) 2016 and later: Unicode, Inc. and others.
3  * License & terms of use: http://www.unicode.org/copyright.html#License
4  ***********************************************************************
5  ***********************************************************************
6  * COPYRIGHT:
7  * Copyright (c) 1999-2002, International Business Machines Corporation and
8  * others. All Rights Reserved.
9  ***********************************************************************/
10
11 #include "unicode/translit.h"
12 #include "unicode/rbt.h"
13 #include "unicode/unistr.h"
14 #include "unicode/calendar.h"
15 #include "unicode/datefmt.h"
16 #include <stdio.h>
17 #include <stdlib.h>
18 #include "util.h"
19 #include "unaccent.h"
20
21 int main(int argc, char **argv) {
22
23     Calendar *cal;
24     DateFormat *fmt;
25     DateFormat *defFmt;
26     Transliterator *greek_latin;
27     UErrorCode status = U_ZERO_ERROR;
28     Locale greece("el", "GR");
29     UnicodeString str, str2;
30
31     // Create a calendar in the Greek locale
32     cal = Calendar::createInstance(greece, status);
33     check(status, "Calendar::createInstance");
34
35     // Create a formatter
36     fmt = DateFormat::createDateInstance(DateFormat::kFull, greece);
37     fmt->setCalendar(*cal);
38
39     // Create a default formatter
40     defFmt = DateFormat::createDateInstance(DateFormat::kFull);
41     defFmt->setCalendar(*cal);
42
43     // Create a Greek-Latin Transliterator
44     greek_latin = Transliterator::createInstance("Greek-Latin");
45     if (greek_latin == 0) {
46         printf("ERROR: Transliterator::createInstance() failed\n");
47         exit(1);
48     }
49
50     // Loop over various months
51     for (int32_t month = Calendar::JANUARY;
52          month <= Calendar::DECEMBER;
53          ++month) {
54
55         // Set the calendar to a date
56         cal->clear();
57         cal->set(1999, month, 4);
58         
59         // Format the date in default locale
60         str.remove();
61         defFmt->format(cal->getTime(status), str, status);
62         check(status, "DateFormat::format");
63         printf("Date: ");
64         uprintf(escape(str));
65         printf("\n");
66         
67         // Format the date for Greece
68         str.remove();
69         fmt->format(cal->getTime(status), str, status);
70         check(status, "DateFormat::format");
71         printf("Greek formatted date: ");
72         uprintf(escape(str));
73         printf("\n");
74         
75         // Transliterate result
76         greek_latin->transliterate(str);
77         printf("Transliterated via Greek-Latin: ");
78         uprintf(escape(str));
79         printf("\n\n");
80     }
81
82     // Clean up
83     delete fmt;
84     delete cal;
85     delete greek_latin;
86
87     printf("Exiting successfully\n");
88     return 0;
89 }