blob: 2e9c37b0e06dc443b737e1306e535a7bf5883187 [file] [log] [blame]
/*
*******************************************************************************
* Copyright (C) 2013-2014, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.samples.text.pluralformat;
// ---PluralFormatExample
import java.text.FieldPosition;
import com.ibm.icu.text.MessageFormat;
import com.ibm.icu.text.PluralFormat;
import com.ibm.icu.util.ULocale;
// ---PluralFormatExample
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
}
}