]> granicus.if.org Git - icu/commitdiff
ICU-10254 Added dtitvfmtsample.cpp, dtptngsample.cpp, and plurfmtsample.cpp. Update...
authorBing Long <bing.long@svn.icu-project.org>
Mon, 22 Jul 2013 16:31:11 +0000 (16:31 +0000)
committerBing Long <bing.long@svn.icu-project.org>
Mon, 22 Jul 2013 16:31:11 +0000 (16:31 +0000)
X-SVN-Rev: 33953

14 files changed:
.gitattributes
icu4c/source/i18n/unicode/dtitvfmt.h
icu4c/source/i18n/unicode/dtptngen.h
icu4c/source/i18n/unicode/plurfmt.h
icu4c/source/samples/all/all.sln
icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.cpp [new file with mode: 0644]
icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj [new file with mode: 0644]
icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters [new file with mode: 0644]
icu4c/source/samples/dtptngsample/dtptngsample.cpp [new file with mode: 0644]
icu4c/source/samples/dtptngsample/dtptngsample.vcxproj [new file with mode: 0644]
icu4c/source/samples/dtptngsample/dtptngsample.vcxproj.filters [new file with mode: 0644]
icu4c/source/samples/plurfmtsample/plurfmtsample.cpp [new file with mode: 0644]
icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj [new file with mode: 0644]
icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters [new file with mode: 0644]

index 4a0406f45549de070b0f1d34fdcb93ff74d142b3..3e83e8aa65b3c13abb1735b06f9edf66e1a4a693 100644 (file)
@@ -106,6 +106,10 @@ icu4c/source/samples/date/date.vcxproj -text
 icu4c/source/samples/date/date.vcxproj.filters -text
 icu4c/source/samples/datefmt/datefmt.vcxproj -text
 icu4c/source/samples/datefmt/datefmt.vcxproj.filters -text
+icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj -text
+icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters -text
+icu4c/source/samples/dtptngsample/dtptngsample.vcxproj -text
+icu4c/source/samples/dtptngsample/dtptngsample.vcxproj.filters -text
 icu4c/source/samples/layout/layout.vcxproj -text
 icu4c/source/samples/layout/layout.vcxproj.filters -text
 icu4c/source/samples/legacy/legacy.vcxproj -text
@@ -114,6 +118,8 @@ icu4c/source/samples/msgfmt/msgfmt.vcxproj -text
 icu4c/source/samples/msgfmt/msgfmt.vcxproj.filters -text
 icu4c/source/samples/numfmt/numfmt.vcxproj -text
 icu4c/source/samples/numfmt/numfmt.vcxproj.filters -text
+icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj -text
+icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters -text
 icu4c/source/samples/props/props.vcxproj -text
 icu4c/source/samples/props/props.vcxproj.filters -text
 icu4c/source/samples/strsrch/strsrch.vcxproj -text
index 977459dc72b5ce0faf554af8b27c3539d8818576..a845391b08e5be297e86038a3c05ea5366e82369 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************************
-* Copyright (C) 2008-2012, International Business Machines Corporation and
+* Copyright (C) 2008-2013, International Business Machines Corporation and
 * others. All Rights Reserved.
 *******************************************************************************
 *
@@ -262,6 +262,11 @@ public:
      * @param status    output param set to success/failure code on exit
      * @return          a date time interval formatter which the caller owns.
      * @stable ICU 4.0
+        * <p>
+        * <h4>Sample code</h4>
+        * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined1
+        * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined
+        * <p>
      */
 
     static DateIntervalFormat* U_EXPORT2 createInstance(
@@ -323,6 +328,11 @@ public:
      * @param status    output param set to success/failure code on exit
      * @return          a date time interval formatter which the caller owns.
      * @stable ICU 4.0
+        * <p>
+        * <h4>Sample code</h4>
+        * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtPreDefined1
+        * \snippet samples/dtitvfmtsample/dtitvfmtsample.cpp dtitvfmtCustomized
+        * <p>
      */
     static DateIntervalFormat* U_EXPORT2 createInstance(
                                               const UnicodeString& skeleton,
index cbbfef7827febdef113ba38d14324e990c30fd7a..64eb1c66392450962770353e628594b8d92b70d8 100644 (file)
@@ -1,6 +1,6 @@
 /*
 *******************************************************************************
-* Copyright (C) 2007-2011, International Business Machines Corporation and
+* Copyright (C) 2007-2013, International Business Machines Corporation and
 * others. All Rights Reserved.
 *******************************************************************************
 *
@@ -150,6 +150,11 @@ public:
      * @return conflicting status.  The value could be UDATPG_NO_CONFLICT, 
      *                             UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
      * @stable ICU 3.8
+        * <p>
+        * <h4>Sample code</h4>
+        * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
+        * \snippet samples/dtptngsample/dtptngsample.cpp addPatternExample
+        * <p>
      */
     UDateTimePatternConflict addPattern(const UnicodeString& pattern, 
                                         UBool override, 
@@ -249,6 +254,11 @@ public:
      * @return bestPattern
      *            The best pattern found from the given skeleton.
      * @stable ICU 3.8
+        * <p>
+        * <h4>Sample code</h4>
+        * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
+        * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample
+        * <p>
      */
      UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status);
 
@@ -292,6 +302,11 @@ public:
      *               which must not indicate a failure before the function call.
      * @return pattern adjusted to match the skeleton fields widths and subtypes.
      * @stable ICU 3.8
+        * <p>
+        * <h4>Sample code</h4>
+        * \snippet samples/dtptngsample/dtptngsample.cpp getBestPatternExample1
+        * \snippet samples/dtptngsample/dtptngsample.cpp replaceFieldTypesExample
+        * <p>
      */
      UnicodeString replaceFieldTypes(const UnicodeString& pattern, 
                                      const UnicodeString& skeleton, 
index 71909f47eedf0a730e49b0f00b0659b507cd2175..e5f05d9c43eca60a24c12a4e924bc016e8f3c5dc 100644 (file)
@@ -189,6 +189,11 @@ public:
      * @param status  output param set to success/failure code on exit, which
      *                must not indicate a failure before the function call.
      * @stable ICU 4.0
+        * <p>
+        * <h4>Sample code</h4>
+        * \snippet samples/plurfmtsample/plurfmtsample.cpp PluralFormatExample1
+        * \snippet samples/plurfmtsample/plurfmtsample.cpp PluralFormatExample
+        * <p>
      */
     PluralFormat(const Locale& locale, const PluralRules& rules, UErrorCode& status);
 
index 55de5d009eae38ad10e46b7aa8d1f5a2b61e1c7d..7020e4cd6cdca052afa7ab83e896aad1c892ef9c 100644 (file)
@@ -48,6 +48,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "coll", "..\coll\coll.vcxpro
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csdet", "..\csdet\csdet.vcxproj", "{683745AD-3BC2-4B89-898B-93490D7F2757}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dtitvfmtsample", "..\dtitvfmtsample\dtitvfmtsample.vcxproj", "{8945255B-473B-4C47-9425-E92384338CAA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plurfmtsample", "..\plurfmtsample\plurfmtsample.vcxproj", "{B500B731-ED1A-4761-94ED-B22DFE25FF2B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dtptngsample", "..\dtptngsample\dtptngsample.vcxproj", "{115886F0-7DFB-4B8B-BE79-83162EE8713B}"
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|Win32 = Debug|Win32
@@ -248,6 +254,24 @@ Global
                {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|Win32.Build.0 = Release|Win32
                {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x64.ActiveCfg = Release|x64
                {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x64.Build.0 = Release|x64
+               {8945255B-473B-4C47-9425-E92384338CAA}.Debug|Win32.ActiveCfg = Debug|Win32
+               {8945255B-473B-4C47-9425-E92384338CAA}.Debug|Win32.Build.0 = Debug|Win32
+               {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x64.ActiveCfg = Debug|Win32
+               {8945255B-473B-4C47-9425-E92384338CAA}.Release|Win32.ActiveCfg = Release|Win32
+               {8945255B-473B-4C47-9425-E92384338CAA}.Release|Win32.Build.0 = Release|Win32
+               {8945255B-473B-4C47-9425-E92384338CAA}.Release|x64.ActiveCfg = Release|Win32
+               {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|Win32.ActiveCfg = Debug|Win32
+               {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|Win32.Build.0 = Debug|Win32
+               {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x64.ActiveCfg = Debug|Win32
+               {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|Win32.ActiveCfg = Release|Win32
+               {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|Win32.Build.0 = Release|Win32
+               {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x64.ActiveCfg = Release|Win32
+               {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|Win32.ActiveCfg = Debug|Win32
+               {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|Win32.Build.0 = Debug|Win32
+               {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x64.ActiveCfg = Debug|Win32
+               {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|Win32.ActiveCfg = Release|Win32
+               {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|Win32.Build.0 = Release|Win32
+               {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x64.ActiveCfg = Release|Win32
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
diff --git a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.cpp b/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.cpp
new file mode 100644 (file)
index 0000000..1d2e572
--- /dev/null
@@ -0,0 +1,157 @@
+/********************************************************************************
+* Copyright (C) 2008-2013, International Business Machines Corporation and
+* others. All Rights Reserved.
+*******************************************************************************
+*/
+//! [dtitvfmtPreDefined1]
+#include <iostream>
+#include "unicode/dtitvfmt.h"
+#include "unicode/ustdio.h"
+//! [dtitvfmtPreDefined1]
+
+using namespace std;
+
+static void dtitvfmtPreDefined() {
+         
+       u_printf("===============================================================================\n");
+       u_printf(" dtitvfmtPreDefined()\n");
+    u_printf("\n");
+    u_printf(" Use DateIntervalFormat to get date interval format for pre-defined skeletons:\n");
+    u_printf(" yMMMd, MMMMd, jm per locale\n");
+    u_printf("===============================================================================\n");
+       
+       //! [dtitvfmtPreDefined] 
+       UFILE *out = u_finit(stdout, NULL, "UTF-8");
+       UErrorCode status =U_ZERO_ERROR;
+       // create 3 Date Intervals
+       UnicodeString data[] = {
+               UnicodeString("2007-10-10 10:10:10"),
+               UnicodeString("2008-10-10 10:10:10"),
+               UnicodeString("2008-11-10 10:10:10"),
+               UnicodeString("2008-11-10 15:10:10")
+               };
+       Calendar *cal = Calendar::createInstance(status);
+       cal->set(2007,10,10,10,10,10);
+       UDate date1 = cal->getTime(status);
+       cal->set(2008,10,10,10,10,10);
+       UDate date2 = cal->getTime(status);
+       cal->set(2008,11,10,10,10,10);
+       UDate date3 = cal->getTime(status);
+       cal->set(2008,11,10,15,10,10);
+       UDate date4 = cal->getTime(status);
+    DateInterval* dtitvsample[] = {
+                       new DateInterval(date1,date2),
+            new DateInterval(date2,date3),
+                       new DateInterval(date3,date4),
+        };
+       UnicodeString skeletons[] = {
+            UnicodeString("yMMMd"),
+            UnicodeString("MMMMd"),
+            UnicodeString("jm"),
+                       0,
+               };
+    u_fprintf(out,"%-10s%-22s%-22s%-35s%-35s\n", "Skeleton","from","to","Date Interval in en_US","Date Interval in Ja");
+       int i=0;
+       UnicodeString formatEn,formatJa;
+       FieldPosition pos=0;
+    for (int j=0;skeletons[j]!=NULL ;j++) {
+                u_fprintf(out,"%-10S%-22S%-22S",skeletons[j].getTerminatedBuffer(),data[i].getTerminatedBuffer(),data[i+1].getTerminatedBuffer());
+         //create a DateIntervalFormat instance for given skeleton, locale
+                DateIntervalFormat* dtitvfmtEn = DateIntervalFormat::createInstance(skeletons[j], Locale::getEnglish(),status);
+         DateIntervalFormat* dtitvfmtJa = DateIntervalFormat::createInstance(skeletons[j], Locale::getJapanese(),status);
+                formatEn.remove();
+                formatJa.remove();
+                //get the DateIntervalFormat
+                dtitvfmtEn->format(dtitvsample[i],formatEn,pos,status);
+                dtitvfmtJa->format(dtitvsample[i],formatJa,pos,status);
+         u_fprintf(out,"%-35S%-35S\n", formatEn.getTerminatedBuffer(),formatJa.getTerminatedBuffer());     
+                delete dtitvfmtEn;
+                delete dtitvfmtJa;
+         i++;
+        }
+       u_fclose(out);
+       //! [dtitvfmtPreDefined]
+/* output of the sample code:
+  *********************************************************************************************************************************************************
+   Skeleton            from                                                            to                                                              Date Interval in en_US                          Date Interval in Ja
+   yMMMd                       2007-10-10 10:10:10                                     2008-10-10 10:10:10                             Nov 10, 2007 – Nov 10, 2008                   2007年11月10日~2008年11月10日 
+   MMMMd                       2008-10-10 10:10:10                                     2008-11-10 10:10:10                             November 10 – December 10                     11月10日~12月10日 
+   jm                          2008-11-10 10:10:10                                     2008-11-10 15:10:10                             10:10 AM – 3:10 PM                                    10:10~15:10
+
+  *********************************************************************************************************************************************************/
+}
+
+static void dtitvfmtCustomized() {
+          
+       u_printf("===============================================================================\n");
+       u_printf("\n");
+       u_printf(" dtitvfmtCustomized()\n");
+       u_printf("\n");
+    u_printf(" Use DateIntervalFormat to create customized date interval format for yMMMd, Hm");
+       u_printf("\n");
+    u_printf("================================================================================\n");
+       //! [dtitvfmtCustomized]
+       UFILE *out = u_finit(stdout, NULL, "UTF-8");
+       UErrorCode status =U_ZERO_ERROR;
+       UnicodeString data[] = {
+               UnicodeString("2007-9-10 10:10:10"),
+               UnicodeString("2007-10-10 10:10:10"),
+               UnicodeString("2007-10-10 22:10:10")
+               };
+       // to create 2 Date Intervals
+    Calendar *cal1 = Calendar::createInstance(status);
+       cal1->set(2007,9,10,10,10,10);
+       Calendar *cal2 = Calendar::createInstance(status);
+       cal2->set(2007,10,10,10,10,10);
+       Calendar *cal3 = Calendar::createInstance(status);
+       cal3->set(2007,10,10,22,10,10);
+       DateInterval* dtitvsample[] = {
+                       new DateInterval(cal1->getTime(status),cal2->getTime(status)),
+            new DateInterval(cal2->getTime(status),cal3->getTime(status))
+             };
+       UnicodeString skeletons[] = {
+            UnicodeString("yMMMd"),
+            UnicodeString("Hm"),
+                       0,
+        };
+               u_printf("%-10s%-22s%-22s%-45s%-35s\n", "Skeleton", "from","to", "Date Interval in en_US","Date Interval in Ja");
+               // Create an empty DateIntervalInfo object
+        DateIntervalInfo dtitvinf =  DateIntervalInfo(status);
+               // Set Date Time internal pattern for MONTH, HOUR_OF_DAY
+        dtitvinf.setIntervalPattern("yMMMd", UCAL_MONTH, "y 'Diff' MMM d --- MMM d",status);
+        dtitvinf.setIntervalPattern("Hm", UCAL_HOUR_OF_DAY, "yyyy MMM d HH:mm ~ HH:mm",status);
+               // Set fallback interval pattern
+        dtitvinf.setFallbackIntervalPattern("{0} ~~~ {1}",status);
+               // Get the DateIntervalFormat with the custom pattern
+        UnicodeString formatEn,formatJa;
+               FieldPosition pos=0;
+               for (int i=0;i<2;i++){
+            for (int j=0;skeletons[j]!=NULL;j++) {
+                       u_fprintf(out,"%-10S%-22S%-22S", skeletons[i].getTerminatedBuffer(),data[j].getTerminatedBuffer(), data[j+1].getTerminatedBuffer());
+            DateIntervalFormat* dtitvfmtEn = DateIntervalFormat::createInstance(skeletons[i],Locale::getEnglish(),dtitvinf,status);
+            DateIntervalFormat* dtitvfmtJa = DateIntervalFormat::createInstance(skeletons[i],Locale::getJapanese(),dtitvinf,status);
+                       formatEn.remove();
+                       formatJa.remove();
+                       dtitvfmtEn->format(dtitvsample[j],formatEn,pos,status);
+                       dtitvfmtJa->format(dtitvsample[j],formatJa,pos,status);
+                       u_fprintf(out,"%-45S%-35S\n", formatEn.getTerminatedBuffer(),formatJa.getTerminatedBuffer());    
+            }
+       }
+       u_fclose(out);
+       //! [dtitvfmtCustomized]
+/* output of the sample code:
+  ***************************************************************************************************************************************************************
+   Skeleton            from                                            to                                                      Date Interval in en_US                                                  Date Interval in Ja
+   yMMMd                       2007-10-10 10:10:10                     2007-11-10 10:10:10                     2007 Diff Oct 10 --- Nov 10                                             2007 Diff 10月 10 --- 11月 10
+   yMMMd                       2007-11-10 10:10:10                     2007-11-10 22:10:10                     Nov 10, 2007                                                                    2007年11月10
+   Hm                          2007-10-10 10:10:10                     2007-11-10 10:10:10                     10/10/2007, 10:10 ~~~ 11/10/2007, 10:10                 2007/10/10 10:10 ~~~ 2007/11/10 10:10
+   Hm                          2007-11-10 10:10:10                     2007-11-10 22:10:10                     2007 Nov 10 10:10 ~ 22:10                                               2007 11月 10 10:10 ~ 22:10
+  ***************************************************************************************************************************************************************/     
+}
+
+int main (int argc, char* argv[])
+{
+       dtitvfmtPreDefined();
+       dtitvfmtCustomized();
+       return 0;
+}
\ No newline at end of file
diff --git a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj b/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj
new file mode 100644 (file)
index 0000000..b67be75
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{8945255B-473B-4C47-9425-E92384338CAA}</ProjectGuid>\r
+    <RootNamespace>dtitvfmtsample</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>true</UseDebugLibraries>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>false</UseDebugLibraries>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <OutDir>.\x86\debug\</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <IntDir>.\x86\debug\</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <OutDir>.\x86\release</OutDir>\r
+    <IntDir>.\x86\release</IntDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <OutputFile>.\x86\Debug/dtitvfmtsample.exe</OutputFile>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="dtitvfmtsample.cpp">\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters b/icu4c/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters
new file mode 100644 (file)
index 0000000..45c498b
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\r
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="dtitvfmtsample.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/icu4c/source/samples/dtptngsample/dtptngsample.cpp b/icu4c/source/samples/dtptngsample/dtptngsample.cpp
new file mode 100644 (file)
index 0000000..8412388
--- /dev/null
@@ -0,0 +1,191 @@
+/********************************************************************
+ * COPYRIGHT: 
+ * Copyright (c) 2008-2013, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ********************************************************************/
+//! [getBestPatternExample1]
+#include <iostream>
+#include "unicode/smpdtfmt.h"
+#include "unicode/dtptngen.h"
+#include "unicode/ustdio.h"
+//! [getBestPatternExample1]
+
+using namespace std;
+
+static void getBestPatternExample() {
+           
+               u_printf("========================================================================\n");
+               u_printf(" getBestPatternExample()\n");
+        u_printf("\n");
+        u_printf(" Use DateTimePatternGenerator to create customized date/time pattern:\n");
+        u_printf(" yQQQQ,yMMMM, MMMMd, hhmm, jjmm per locale\n");
+        u_printf("========================================================================\n");
+               //! [getBestPatternExample]
+       UnicodeString skeletons [] = {
+               UnicodeString("yQQQQ"), // year + full name of quarter, i.e., 4th quarter 1999
+        UnicodeString("yMMMM"), // year + full name of month, i.e., October 1999
+        UnicodeString("MMMMd"), // full name of month + day of the month, i.e., October 25
+        UnicodeString("hhmm"),  // 12-hour-cycle format, i.e., 1:32 PM
+        UnicodeString("jjmm"), // preferred hour format for the given locale, i.e., 24-hour-cycle format for fr_FR
+               0,
+       };
+
+       Locale locales[] = {
+               Locale ("en_US"),
+               Locale ("fr_FR"),
+               Locale ("zh_CN"),
+       };
+       
+       const char* filename = "sample.txt";
+       /* open a UTF-8 file for writing */
+       UFILE* f = u_fopen(filename, "w", NULL,"UTF-8");
+       UnicodeString dateReturned;
+       UErrorCode status =U_ZERO_ERROR;
+       Calendar *cal = Calendar::createInstance(status);
+       cal->set (1999,9,13,23,58,59);
+       UDate date = cal->getTime(status);
+       u_fprintf(f, "%-20S%-20S%-20S%-20S\n", UnicodeString("Skeleton").getTerminatedBuffer(),UnicodeString("en_US").getTerminatedBuffer(),UnicodeString("fr_FR").getTerminatedBuffer(),UnicodeString("zh_CN").getTerminatedBuffer());
+       for (int i=0;skeletons[i]!=NULL;i++) {
+               u_fprintf(f, "%-20S",skeletons[i].getTerminatedBuffer());
+               for (int j=0;j<sizeof(locales)/sizeof(locales[0]);j++) {
+                       // create a DateTimePatternGenerator instance for given locale
+                       DateTimePatternGenerator *dtfg= DateTimePatternGenerator::createInstance(locales[j],status);
+                       // use getBestPattern method to get the best pattern for the given skeleton
+                       UnicodeString pattern = dtfg->getBestPattern(skeletons[i],status);
+                       // Constructs a SimpleDateFormat with the best pattern generated above and the given locale
+                       SimpleDateFormat *sdf = new SimpleDateFormat(pattern,locales[j],status);
+                       dateReturned.remove();
+                       // Get the format of the given date
+                       sdf->format(date,dateReturned,status);
+                       /* write Unicode string to file */
+                       u_fprintf(f, "%-20S", dateReturned.getTerminatedBuffer());
+                       delete dtfg;
+                       delete sdf;
+               } 
+               u_fprintf(f,"\n");
+       }
+       /* close the file resource */
+       u_fclose(f);
+       delete cal;
+       //! [getBestPatternExample]
+        /* output of the sample code:
+     ***********************************************************************************************************
+      Skeleton                 en_US                                                   fr_FR                                                   zh_CN
+
+      yQQQQ                            4th quarter 1999                                4e trimestre 1999                               1999年第四季度
+
+      yMMMM                            October 1999                                    octobre 1999                                    1999年10月 
+
+      MMMMd                            October 13                                              13 octobre                                              10月13日
+
+         hhmm                          11:58 PM                                                11:58 PM                                                下午11:58
+
+      jjmm                             11:58 PM                                                23:58                                                   下午11:58
+
+     ************************************************************************************************************/     
+}
+
+static void addPatternExample() {
+               
+               u_printf("========================================================================\n");
+        u_printf(" addPatternExample()\n");
+               u_printf("\n");
+        u_printf(" Use addPattern API to add new '. von' to existing pattern\n");
+        u_printf("========================================================================\n");
+               //! [addPatternExample]
+               UErrorCode status =U_ZERO_ERROR;
+               UnicodeString conflictingPattern,dateReturned, pattern;
+               Locale locale=Locale::getFrance();
+               Calendar *cal = Calendar::createInstance(status);
+               cal->set (1999,9,13,23,58,59);
+               UDate date = cal->getTime(status);
+        // Create an DateTimePatternGenerator instance for the given locale
+               DateTimePatternGenerator *dtfg= DateTimePatternGenerator::createInstance(locale,status);
+               SimpleDateFormat *sdf = new SimpleDateFormat(dtfg->getBestPattern("MMMMddHmm",status),locale,status);
+        // Add '. von' to the existing pattern
+        dtfg->addPattern("dd'. von' MMMM", true, conflictingPattern,status);
+        // Apply the new pattern
+        sdf->applyPattern(dtfg->getBestPattern("MMMMddHmm",status));
+               dateReturned = sdf->format(date, dateReturned, status);
+               pattern =sdf->toPattern(pattern);
+               u_printf("%s\n", "New Pattern for FRENCH: ");
+       u_printf("%S\n", pattern.getTerminatedBuffer());
+               u_printf("%s\n", "Date Time in new Pattern: ");
+               u_printf("%S\n", dateReturned.getTerminatedBuffer());
+               delete dtfg;
+               delete sdf;
+               delete cal;
+
+               //! [addPatternExample]
+        /* output of the sample code:
+        ************************************************************************************************
+         New Pattern for FRENCH: dd. 'von' MMMM HH:mm
+         Date Time in new Pattern: 13. von octobre 23:58
+     
+        *************************************************************************************************/
+       }
+
+static void replaceFieldTypesExample() {
+               // Use repalceFieldTypes API to replace zone 'zzzz' with 'vvvv'
+       u_printf("========================================================================\n");
+       u_printf(" replaceFieldTypeExample()\n");
+       u_printf("\n");
+       u_printf(" Use replaceFieldTypes API to replace zone 'zzzz' with 'vvvv'\n");
+       u_printf("========================================================================\n");
+          //! [replaceFieldTypesExample]
+               UFILE *out = u_finit(stdout, NULL, "UTF-8");
+               UErrorCode status =U_ZERO_ERROR;
+               UnicodeString pattern,dateReturned;
+               Locale locale =Locale::getFrance();
+               Calendar *cal = Calendar::createInstance(status);
+               cal->set (1999,9,13,23,58,59);
+               UDate date = cal->getTime(status);
+               TimeZone *zone = TimeZone::createTimeZone(UnicodeString("Europe/Paris"));
+               DateTimePatternGenerator *dtfg = DateTimePatternGenerator::createInstance(locale,status);
+           SimpleDateFormat *sdf = new SimpleDateFormat("EEEE d MMMM y HH:mm:ss zzzz",locale,status);
+               sdf->setTimeZone(*zone);
+               pattern = sdf->toPattern(pattern);
+               u_fprintf(out, "%S\n", UnicodeString("Pattern before replacement:").getTerminatedBuffer());
+       u_fprintf(out, "%S\n", pattern.getTerminatedBuffer());
+               dateReturned.remove();
+               dateReturned = sdf->format(date, dateReturned, status);
+               u_fprintf(out, "%S\n", UnicodeString("Date/Time format in fr_FR:").getTerminatedBuffer());
+               u_fprintf(out, "%S\n", dateReturned.getTerminatedBuffer());
+        // Replace zone "zzzz" in the pattern with "vvvv"
+               UnicodeString newPattern = dtfg->replaceFieldTypes(pattern, "vvvv", status);
+               // Apply the new pattern
+               sdf->applyPattern(newPattern);
+               dateReturned.remove();
+               dateReturned = sdf->format(date, dateReturned, status);
+               u_fprintf(out, "%S\n", UnicodeString("Pattern after replacement:").getTerminatedBuffer());
+       u_fprintf(out, "%S\n", newPattern.getTerminatedBuffer());
+       u_fprintf(out, "%S\n", UnicodeString("Date/Time format in fr_FR:").getTerminatedBuffer());
+               u_fprintf(out, "%S\n", dateReturned.getTerminatedBuffer());
+               delete sdf;
+               delete dtfg;
+               delete zone;
+               delete cal;
+               u_fclose(out);
+
+               //! [replaceFieldTypesExample]
+               /* output of the sample code:
+        *************************************************************************************************
+         Pattern before replacement:
+         EEEE d MMMM y HH:mm:ss zzzz
+         Date/Time format in fr_FR:
+         jeudi 14 octobre 1999 05:58:59 heure avancée d’Europe centrale
+         Pattern after replacement:
+         EEEE d MMMM y HH:mm:ss vvvv
+         Date/Time format in fr_FR:
+         jeudi 14 octobre 1999 05:58:59 heure de l’Europe centrale
+
+        *************************************************************************************************/
+    }
+
+int main (int argc, char* argv[])
+{
+       getBestPatternExample();
+       addPatternExample();
+       replaceFieldTypesExample();
+       return 0;
+}
diff --git a/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj b/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj
new file mode 100644 (file)
index 0000000..cf5f353
--- /dev/null
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{115886F0-7DFB-4B8B-BE79-83162EE8713B}</ProjectGuid>\r
+    <RootNamespace>samples</RootNamespace>\r
+    <ProjectName>dtptngsample</ProjectName>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>true</UseDebugLibraries>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>false</UseDebugLibraries>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <OutDir>.\x86\debug\</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <IntDir>.\x86\debug\</IntDir>\r
+    <TargetName>$(ProjectName)</TargetName>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <OutDir>.\x86\release</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <IntDir>.\x86\release</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <TargetName>$(ProjectName)</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <OutputFile>.\x86\debug/dtptngsample.exe</OutputFile>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <OutputFile>\x86\debug\samples.exe</OutputFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="dtptngsample.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj.filters b/icu4c/source/samples/dtptngsample/dtptngsample.vcxproj.filters
new file mode 100644 (file)
index 0000000..f5aac2a
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\r
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="dtptngsample.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp b/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp
new file mode 100644 (file)
index 0000000..48bd206
--- /dev/null
@@ -0,0 +1,99 @@
+/********************************************************************************
+* Copyright (C) 2008-2013, International Business Machines Corporation and
+* others. All Rights Reserved.
+*******************************************************************************
+*/
+
+//! [PluralFormatExample1]
+#include <iostream>
+#include "unicode/plurfmt.h"
+#include "unicode/msgfmt.h"
+#include "unicode/ustdio.h"
+//! [PluralFormatExample1] 
+
+using namespace std;
+static void PluralFormatExample() {
+         
+       u_printf("=============================================================================\n");
+       u_printf(" PluralFormatExample()\n");
+    u_printf("\n");
+    u_printf(" Use PluralFormat and Messageformat to get Plural Form for languages below:\n");
+    u_printf(" English, Slovenian\n");
+    u_printf("=============================================================================\n");
+       
+       //! [PluralFormatExample] 
+       UErrorCode status =U_ZERO_ERROR; 
+       Locale locEn = Locale("en");
+    Locale locSl = Locale("sl");
+
+    UnicodeString patEn = UnicodeString("one{dog} other{dogs}");                      // English 'dog'
+    UnicodeString patSl = UnicodeString("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 = PluralFormat(locEn, patEn,status);
+    PluralFormat plfmtSl = PluralFormat(locSl, patSl,status);
+    // Constructs a MessageFormat for given pattern and locale.
+    MessageFormat* msgfmtEn =  new MessageFormat("{0,number} {1}", locEn,status);
+    MessageFormat* msgfmtSl =  new MessageFormat("{0,number} {1}", locSl,status);
+
+       int numbers[] = {0, 1, 2, 3, 4, 5, 10, 100, 101, 102};
+       u_printf("Output by using PluralFormat and MessageFormat API\n");
+    u_printf("%-16s%-16s%-16s\n","Number", "English","Slovenian");
+    // Use MessageFormat.format () to format the objects and append to the given StringBuffer
+    for (int i=0;i<sizeof(numbers)/sizeof(int);i++) {
+             UnicodeString msgEn,msgSl;
+                 FieldPosition fpos = 0;
+                 Formattable argEn[]={Formattable(numbers[i]), Formattable(plfmtEn.format(numbers[i],status))};
+                 Formattable argSl[]={Formattable(numbers[i]), Formattable(plfmtSl.format(numbers[i],status))};
+                 msgfmtEn->format(argEn,2,msgEn,fpos,status);
+                 msgfmtSl->format(argSl,2,msgSl,fpos,status);
+                 u_printf("%-16d%-16S%-16S\n", numbers[i], msgEn.getTerminatedBuffer(),msgSl.getTerminatedBuffer());
+      }
+
+     u_printf("\n");
+
+      // Equivalent code with message format pattern
+      UnicodeString msgPatEn = "{0,plural, one{# dog} other{# dogs}}";
+      UnicodeString msgPatSl = "{0,plural, one{# pes} two{# psa} few{# psi} other{# psov}}";
+         MessageFormat* altMsgfmtEn = new MessageFormat(msgPatEn, locEn,status);
+      MessageFormat* altMsgfmtSl = new MessageFormat(msgPatSl, locSl,status);
+      u_printf("Same Output by using MessageFormat API only\n");
+      u_printf("%-16s%-16s%-16s\n","Number", "English","Slovenian");
+      for (int i=0;i<sizeof(numbers)/sizeof(int);i++) {
+          UnicodeString msgEn,msgSl;
+                 Formattable arg[] = {numbers[i]};
+                 FieldPosition fPos =0;
+                 altMsgfmtEn->format(arg, 1, msgEn, fPos, status);
+          altMsgfmtSl->format(arg, 1, msgSl, fPos,status);
+          u_printf("%-16d%-16S%-16S\n", numbers[i], msgEn.getTerminatedBuffer(), msgSl.getTerminatedBuffer());
+      }
+
+       delete msgfmtEn;
+       delete msgfmtSl;
+       delete altMsgfmtEn;
+       delete altMsgfmtSl;
+       //! [PluralFormatExample]
+
+         /*  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
+
+      *********************************************************************/
+}
+int main (int argc, char* argv[])
+{
+       PluralFormatExample();
+       return 0;
+}
\ No newline at end of file
diff --git a/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj b/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj
new file mode 100644 (file)
index 0000000..b752ba5
--- /dev/null
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{B500B731-ED1A-4761-94ED-B22DFE25FF2B}</ProjectGuid>\r
+    <RootNamespace>plurfmtsample</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>true</UseDebugLibraries>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>false</UseDebugLibraries>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <OutDir>.\x86\debug</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <IntDir>.\x86\debug</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <OutDir>.\x86\release</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <IntDir>.\x86\release</IntDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="plurfmtsample.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters b/icu4c/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters
new file mode 100644 (file)
index 0000000..1f9b5b0
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\r
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="plurfmtsample.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file