--- /dev/null
+/*
+ *******************************************************************************
+ * Copyright (C) 2013, International Business Machines Corporation and *
+ * others. All Rights Reserved. *
+ *******************************************************************************
+ */
+package com.ibm.icu.samples.text.pluralformat;
+
+import java.text.FieldPosition;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.PluralFormat;
+import com.ibm.icu.util.ULocale;
+
+public class PluralFormatSample {
+
+ public static void main(String[] args) {
+ PluralFormatExample();
+ }
+
+ private static void PluralFormatExample(){
+
+ System.out.println("=======================================================================================");
+ System.out.println(" PluralFormatExample()");
+ System.out.println();
+ System.out.println(" Use PluralFormat and Messageformat to get appropriate Plural Form for languages below:");
+ System.out.println(" English, Slovenian");
+ System.out.println("=======================================================================================");
+ // ---PluralFormatExample
+ ULocale locEn = new ULocale("en");
+ ULocale locSl = new ULocale("sl");
+
+ String patEn = "one{dog} other{dogs}"; // English 'dog'
+ String patSl = "one{pes} two{psa} few{psi} other{psov}"; // Slovenian translation of dog in Plural Form
+
+ // Create a new PluralFormat for a given locale locale and pattern string
+ PluralFormat plfmtEn = new PluralFormat(locEn, patEn);
+ PluralFormat plfmtSl = new PluralFormat(locSl, patSl);
+ // Constructs a MessageFormat for the specified locale and pattern.
+ MessageFormat msgfmtEn = new MessageFormat("{0,number} {1}", locEn);
+ MessageFormat msgfmtSl = new MessageFormat("{0,number} {1}", locSl);
+
+ final int[] numbers = {0, 1, 2, 3, 4, 5, 10, 100, 101, 102};
+ System.out.println("Output by using PluralFormat and MessageFormat API\n");
+ System.out.printf("%-16s%-16s%-16s\n", "Number", "English", "Slovenian");
+
+ // Use MessageFormat.format () to format the objects and appends to the given StringBuffer
+ for (int num : numbers) {
+ StringBuffer msgEn = new StringBuffer();
+ StringBuffer msgSl = new StringBuffer();
+
+ msgfmtEn.format(new Object[] {num, plfmtEn.format(num)}, msgEn, new FieldPosition(0));
+ msgfmtSl.format(new Object[] {num, plfmtSl.format(num)}, msgSl, new FieldPosition(0));
+
+ System.out.printf("%-16s%-16s%-16s\n", num, msgEn, msgSl);
+ }
+
+ System.out.println();
+
+ // Equivalent code with message format pattern
+ String msgPatEn = "{0,plural, one{# dog} other{# dogs}}";
+ String msgPatSl = "{0,plural, one{# pes} two{# psa} few{# psi} other{# psov}}";
+
+ MessageFormat altMsgfmtEn = new MessageFormat(msgPatEn, locEn);
+ MessageFormat altMsgfmtSl = new MessageFormat(msgPatSl, locSl);
+ System.out.println("Same Output by using MessageFormat API only\n");
+ System.out.printf("%-16s%-16s%-16s\n", "Number", "English", "Slovenian");
+ for (int num : numbers) {
+ StringBuffer msgEn = new StringBuffer();
+ StringBuffer msgSl = new StringBuffer();
+
+ altMsgfmtEn.format(new Object[] {num}, msgEn, new FieldPosition(0));
+ altMsgfmtSl.format(new Object[] {num}, msgSl, new FieldPosition(0));
+
+ System.out.printf("%-16s%-16s%-16s\n", num, msgEn, msgSl);
+ }
+ /** output of the sample code:
+ ********************************************************************
+ Number English Slovenian
+ 0 0 dogs 0 psov
+ 1 1 dog 1 pes
+ 2 2 dogs 2 psa
+ 3 3 dogs 3 psi
+ 4 4 dogs 4 psi
+ 5 5 dogs 5 psov
+ 10 10 dogs 10 psov
+ 100 100 dogs 100 psov
+ 101 101 dogs 101 pes
+ 102 102 dogs 102 psa
+
+ *******************************************************************/
+ // ---PluralFormatExample
+ }
+}
\ No newline at end of file