]>
Commit | Line | Data |
---|---|---|
57a6839d | 1 | /******************************************************************************** |
f3c0d7a5 A |
2 | * © 2016 and later: Unicode, Inc. and others. |
3 | * License & terms of use: http://www.unicode.org/copyright.html#License | |
4 | ******************************************************************************** | |
5 | ******************************************************************************** | |
57a6839d A |
6 | * Copyright (C) 2008-2013, International Business Machines Corporation and |
7 | * others. All Rights Reserved. | |
f3c0d7a5 | 8 | ******************************************************************************** |
57a6839d A |
9 | */ |
10 | ||
11 | //! [PluralFormatExample1] | |
12 | #include <iostream> | |
13 | #include "unicode/plurfmt.h" | |
14 | #include "unicode/msgfmt.h" | |
15 | #include "unicode/ustdio.h" | |
16 | //! [PluralFormatExample1] | |
17 | ||
18 | using namespace std; | |
19 | static void PluralFormatExample() { | |
20 | ||
21 | u_printf("=============================================================================\n"); | |
22 | u_printf(" PluralFormatExample()\n"); | |
23 | u_printf("\n"); | |
24 | u_printf(" Use PluralFormat and Messageformat to get Plural Form for languages below:\n"); | |
25 | u_printf(" English, Slovenian\n"); | |
26 | u_printf("=============================================================================\n"); | |
27 | ||
28 | //! [PluralFormatExample] | |
29 | UErrorCode status =U_ZERO_ERROR; | |
30 | Locale locEn = Locale("en"); | |
31 | Locale locSl = Locale("sl"); | |
32 | ||
33 | UnicodeString patEn = UnicodeString("one{dog} other{dogs}"); // English 'dog' | |
34 | UnicodeString patSl = UnicodeString("one{pes} two{psa} few{psi} other{psov}"); // Slovenian translation of dog in Plural Form | |
35 | ||
36 | // Create a new PluralFormat for a given locale locale and pattern string | |
37 | PluralFormat plfmtEn = PluralFormat(locEn, patEn,status); | |
38 | PluralFormat plfmtSl = PluralFormat(locSl, patSl,status); | |
39 | // Constructs a MessageFormat for given pattern and locale. | |
40 | MessageFormat* msgfmtEn = new MessageFormat("{0,number} {1}", locEn,status); | |
41 | MessageFormat* msgfmtSl = new MessageFormat("{0,number} {1}", locSl,status); | |
42 | ||
43 | int numbers[] = {0, 1, 2, 3, 4, 5, 10, 100, 101, 102}; | |
44 | u_printf("Output by using PluralFormat and MessageFormat API\n"); | |
45 | u_printf("%-16s%-16s%-16s\n","Number", "English","Slovenian"); | |
46 | ||
47 | // Use MessageFormat.format () to format the objects and append to the given StringBuffer | |
48 | for (int i=0;i<sizeof(numbers)/sizeof(int);i++) { | |
49 | UnicodeString msgEn,msgSl; | |
50 | FieldPosition fpos = 0; | |
51 | Formattable argEn[]={Formattable(numbers[i]), Formattable(plfmtEn.format(numbers[i],status))}; | |
52 | Formattable argSl[]={Formattable(numbers[i]), Formattable(plfmtSl.format(numbers[i],status))}; | |
53 | msgfmtEn->format(argEn,2,msgEn,fpos,status); | |
54 | msgfmtSl->format(argSl,2,msgSl,fpos,status); | |
55 | u_printf("%-16d%-16S%-16S\n", numbers[i], msgEn.getTerminatedBuffer(),msgSl.getTerminatedBuffer()); | |
56 | } | |
57 | ||
58 | u_printf("\n"); | |
59 | ||
60 | // Equivalent code with message format pattern | |
61 | UnicodeString msgPatEn = "{0,plural, one{# dog} other{# dogs}}"; | |
62 | UnicodeString msgPatSl = "{0,plural, one{# pes} two{# psa} few{# psi} other{# psov}}"; | |
63 | ||
64 | MessageFormat* altMsgfmtEn = new MessageFormat(msgPatEn, locEn,status); | |
65 | MessageFormat* altMsgfmtSl = new MessageFormat(msgPatSl, locSl,status); | |
66 | u_printf("Same Output by using MessageFormat API only\n"); | |
67 | u_printf("%-16s%-16s%-16s\n","Number", "English","Slovenian"); | |
68 | for (int i=0;i<sizeof(numbers)/sizeof(int);i++) { | |
69 | UnicodeString msgEn,msgSl; | |
70 | Formattable arg[] = {numbers[i]}; | |
71 | FieldPosition fPos =0; | |
72 | altMsgfmtEn->format(arg, 1, msgEn, fPos, status); | |
73 | altMsgfmtSl->format(arg, 1, msgSl, fPos,status); | |
74 | u_printf("%-16d%-16S%-16S\n", numbers[i], msgEn.getTerminatedBuffer(), msgSl.getTerminatedBuffer()); | |
75 | } | |
76 | ||
77 | delete msgfmtEn; | |
78 | delete msgfmtSl; | |
79 | delete altMsgfmtEn; | |
80 | delete altMsgfmtSl; | |
81 | //! [PluralFormatExample] | |
82 | ||
83 | /* output of the sample code: | |
84 | ******************************************************************** | |
85 | Number English Slovenian | |
86 | 0 0 dogs 0 psov | |
87 | 1 1 dog 1 pes | |
88 | 2 2 dogs 2 psa | |
89 | 3 3 dogs 3 psi | |
90 | 4 4 dogs 4 psi | |
91 | 5 5 dogs 5 psov | |
92 | 10 10 dogs 10 psov | |
93 | 100 100 dogs 100 psov | |
94 | 101 101 dogs 101 pes | |
95 | 102 102 dogs 102 psa | |
96 | ||
97 | *********************************************************************/ | |
98 | } | |
99 | int main (int argc, char* argv[]) | |
100 | { | |
101 | PluralFormatExample(); | |
102 | return 0; | |
f3c0d7a5 | 103 | } |