ICU-10445 ICU 52 tools tree maintenance branch: tools/trunk@34395 -> tools/maint/maint-52

X-SVN-Rev: 34529
This commit is contained in:
Markus Scherer 2013-10-09 20:44:10 +00:00
commit 7acc03d8d5
369 changed files with 96025 additions and 0 deletions

184
.gitattributes vendored Normal file
View file

@ -0,0 +1,184 @@
* text=auto !eol
*.c text !eol
*.cc text !eol
*.classpath text !eol
*.cpp text !eol
*.css text !eol
*.dsp text !eol
*.dsw text !eol
*.filters text !eol
*.h text !eol
*.htm text !eol
*.html text !eol
*.in text !eol
*.java text !eol
*.launch text !eol
*.mak text !eol
*.md text !eol
*.MF text !eol
*.mk text !eol
*.pl text !eol
*.pm text !eol
*.project text !eol
*.properties text !eol
*.py text !eol
*.rc text !eol
*.sh text eol=lf
*.sln text !eol
*.stub text !eol
*.txt text !eol
*.ucm text !eol
*.vcproj text !eol
*.vcxproj text !eol
*.xml text !eol
*.xsl text !eol
*.xslt text !eol
Makefile text !eol
configure text !eol
LICENSE text !eol
README text !eol
*.bin -text
*.brk -text
*.cnv -text
*.icu -text
*.res -text
*.nrm -text
*.spp -text
*.tri2 -text
currency/.classpath -text
currency/.project -text
currency/.settings/org.eclipse.core.resources.prefs -text
currency/.settings/org.eclipse.jdt.core.prefs -text
currency/.settings/org.eclipse.jdt.ui.prefs -text
multi/c/Makefile-c.inc -text
multi/c/patch/3_0 -text
multi/c/patch/3_2 -text
multi/c/patch/3_4_1 -text
multi/common/Makefile-multi.inc -text
multi/j/Makefile-j.inc -text
multi/proj/icu4cscan/Makefile -text
multi/proj/icu4cscan/Makefile.local.sample -text
multi/proj/icu4cscan/Makefile_c -text
multi/proj/icu4cscan/Makefile_j -text
multi/proj/icu4cscan/dtd/icucaps.dtd -text
multi/proj/icu4cscan/old-xmls.tar.bz2 -text
multi/proj/icu4cscan/zappit.sed -text
multi/proj/icu4jscan/.classpath -text
multi/proj/icu4jscan/.project -text
multi/proj/icu4jscan/src/com/ibm/icu/dev/scan/CapDocument.java -text
multi/proj/icu4jscan/src/com/ibm/icu/dev/scan/CapElement.java -text
multi/proj/icu4jscan/src/com/ibm/icu/dev/scan/CapNode.java -text
multi/proj/icu4jscan/src/com/ibm/icu/dev/scan/CapScan.java -text
multi/proj/icu4jscan/src/com/ibm/icu/dev/scan/ScanICU.java -text
multi/proj/icu4jscan/src/com/ibm/icu/dev/scan/ScanJava.java -text
multi/proj/icu4jscan/src/com/ibm/icu/dev/scan/SimpleScan.java -text
multi/proj/icu4jscan/src/com/ibm/icu/dev/scan/Spinner.java -text
multi/proj/provider/Makefile.local-sample -text
multi/proj/provider/icu-config.sed -text
multi/proj/provider/readme.txt -text
release/c/bomfix.py -text
release/java/.classpath -text
release/java/.project -text
release/java/Makefile -text
release/java/icu4c.css -text
release/java/lib/LICENSE.txt -text
release/java/lib/README.TXT -text
release/java/lib/serializer.jar -text
release/java/lib/xalan.jar -text
release/java/lib/xercesImpl.jar -text
release/java/src/com/ibm/icu/dev/tools/docs/dumpAllCFunc_xml.xslt -text
release/java/src/com/ibm/icu/dev/tools/docs/dumpAllCppFunc_xml.xslt -text
release/java/src/com/ibm/icu/dev/tools/docs/genreport_xml.xslt -text
scripts/icurun -text
scripts/reticket -text
trac/IcuCodeTools/0.11/icucodetools/__init__.py -text
trac/IcuCodeTools/0.11/icucodetools/dcut.py -text
trac/IcuCodeTools/0.11/icucodetools/htdocs/css/icuxtn.css -text
trac/IcuCodeTools/0.11/icucodetools/htdocs/js/review.js -text
trac/IcuCodeTools/0.11/icucodetools/review.py -text
trac/IcuCodeTools/0.11/icucodetools/templates/nothing.html -text
trac/IcuCodeTools/0.11/icucodetools/templates/review.html -text
trac/IcuCodeTools/0.11/icucodetools/ticketmgr.py -text
trac/IcuCodeTools/0.11/icucodetools/tktlist.py -text
trac/IcuCodeTools/0.11/license.html -text
trac/IcuCodeTools/0.11/readme.txt -text
trac/IcuCodeTools/0.11/setup.cfg -text
trac/IcuCodeTools/0.11/setup.py -text
trac/IcuCodeTools/0.12/icucodetools/__init__.py -text
trac/IcuCodeTools/0.12/icucodetools/dcut.py -text
trac/IcuCodeTools/0.12/icucodetools/htdocs/css/icuxtn.css -text
trac/IcuCodeTools/0.12/icucodetools/htdocs/js/review.js -text
trac/IcuCodeTools/0.12/icucodetools/review.py -text
trac/IcuCodeTools/0.12/icucodetools/templates/nothing.html -text
trac/IcuCodeTools/0.12/icucodetools/templates/review.html -text
trac/IcuCodeTools/0.12/icucodetools/ticketmgr.py -text
trac/IcuCodeTools/0.12/icucodetools/tktlist.py -text
trac/IcuCodeTools/0.12/license.html -text
trac/IcuCodeTools/0.12/readme.txt -text
trac/IcuCodeTools/0.12/setup.cfg -text
trac/IcuCodeTools/0.12/setup.py -text
unicodetools/com/ibm/rbm/docs/images/TitleLogo_transparent.gif -text
unicodetools/com/ibm/rbm/docs/images/arrow_bullet.gif -text
unicodetools/com/ibm/rbm/docs/images/diamond_bullet.gif -text
unicodetools/com/ibm/rbm/docs/images/ibm_logo_small_white.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/RBReporter.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/basic_file.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/basic_group.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/basic_resource.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/basic_translation.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/basic_untranslated.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/create_group.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/empty_group.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/empty_resource.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/empty_screen.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/empty_with_preferences.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/laf_metal.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/laf_motif.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/laf_windows.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/lookup_resource.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/main_page.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/menu_file.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/menu_file_export.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/menu_file_import.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/menu_help.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/menu_options.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/menu_popup_tree.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/new_baseclass.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/new_bundle.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/preferences_dialog.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_groups_bundle.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_groups_file.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_search.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_stats_bundle.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_stats_file.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_tree_basic.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_untrans_bundle.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_untrans_dialog0.gif -text
unicodetools/com/ibm/rbm/docs/images/screenshots/view_untrans_file.gif -text
unicodetools/com/ibm/rbm/docs/images/spacer.gif -text
unicodetools/com/ibm/rbm/docs/images/template_l.gif -text
unicodetools/com/ibm/rbm/docs/images/template_line.gif -text
unicodetools/com/ibm/rbm/docs/images/template_ll.gif -text
unicodetools/com/ibm/rbm/docs/images/template_u.gif -text
unicodetools/com/ibm/rbm/docs/images/template_ul.gif -text
unicodetools/com/ibm/rbm/gui/images/TitleLogo_transparent.gif -text
unicodetools/com/ibm/rbm/gui/images/tree_icon_bundle.gif -text
unicodetools/com/ibm/rbm/gui/images/tree_icon_country.gif -text
unicodetools/com/ibm/rbm/gui/images/tree_icon_file.gif -text
unicodetools/com/ibm/rbm/gui/images/tree_icon_group.gif -text
unicodetools/com/ibm/rbm/gui/images/tree_icon_item.gif -text
unicodetools/com/ibm/rbm/gui/images/tree_icon_language.gif -text
unicodetools/com/ibm/rbm/gui/images/tree_icon_project.gif -text
unicodetools/com/ibm/rbm/gui/images/tree_icon_variant.gif -text
# The following file types are stored in Git-LFS.
*.jar filter=lfs diff=lfs merge=lfs -text
*.dat filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text

55
.gitignore vendored Normal file
View file

@ -0,0 +1,55 @@
multi/c/Makefile.local
multi/packages/*.jar
multi/packages/*.tgz
multi/proj/chello/out
multi/proj/icu4cscan/Makefile.local
multi/proj/icu4cscan/cooked
multi/proj/icu4cscan/dtdcache
multi/proj/icu4cscan/jxml
multi/proj/icu4cscan/xml
multi/proj/icu4jscan/bin
multi/proj/provider/Makefile.local
multi/proj/provider/out
multi/tmp
release/c/uconfigtest
release/c/uconfigtest.local
release/java/APIChangeReport*
release/java/Makefile.local
release/java/classes
release/java/lib
trac/IcuCodeTools/0.11/*.egg-info
trac/IcuCodeTools/0.11/build
trac/IcuCodeTools/0.11/icucodetools/*.pyc
trac/IcuCodeTools/0.12/*.egg-info
trac/IcuCodeTools/0.12/build
trac/IcuCodeTools/0.12/icucodetools/*.pyc
unicode/c/genprops/*.d
unicode/c/genprops/*.ncb
unicode/c/genprops/*.o
unicode/c/genprops/*.opt
unicode/c/genprops/*.pdb
unicode/c/genprops/*.plg
unicode/c/genprops/Debug
unicode/c/genprops/Makefile
unicode/c/genprops/Release
unicode/c/genprops/debug
unicode/c/genprops/genprops
unicode/c/genprops/genprops.[0-9]
unicode/c/genprops/genprops.vcproj.*.*.user
unicode/c/genprops/release
unicode/c/genprops/x64
unicode/c/genprops/x86
unicode/c/genuca/*.d
unicode/c/genuca/*.o
unicode/c/genuca/*.pdb
unicode/c/genuca/Debug
unicode/c/genuca/Makefile
unicode/c/genuca/Release
unicode/c/genuca/debug
unicode/c/genuca/genuca
unicode/c/genuca/genuca.8
unicode/c/genuca/genuca.vcproj.*.*.user
unicode/c/genuca/release
unicode/c/genuca/x64
unicode/c/genuca/x86
unicodetools/com/ibm/rbm/lib

81
colprobe/Makefile.in Normal file
View file

@ -0,0 +1,81 @@
## Makefile.in for ICU - extra/colprobe
## Copyright (c) 2001, International Business Machines Corporation and
## others. All Rights Reserved.
## Source directory information
srcdir = @srcdir@
top_srcdir = @top_srcdir@
top_builddir = ../..
include $(top_builddir)/icudefs.mk
## Build directory information
subdir = extra/colprobe
## Extra files to remove for 'make clean'
CLEANFILES = *~ $(DEPS)
## Target information
TARGET = colprobe
LONGNAME = longname
CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/io
LIBS = $(LIBICUI18N) $(LIBICUUC) $(LIBUSTDIO) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
OBJECTS = colprobeNew.o line.o sortedlines.o strengthprobe.o uprinter.o
LONGNAME_OBJ = longname.o
DEPS = $(OBJECTS:.o=.d)
LONGNAME_DEPS = $(LONGNAME_OBJ:.o=.d)
## List of phony targets
.PHONY : all all-local install install-local clean clean-local \
distclean distclean-local dist dist-local check check-local
## Clear suffix list
.SUFFIXES :
## List of standard targets
all: all-local
install: install-local
clean: clean-local
distclean : distclean-local
dist: dist-local
check: all check-local
all-local: $(TARGET)
install-local:
dist-local:
clean-local:
test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
$(RMV) $(OBJECTS) $(TARGET)
distclean-local: clean-local
$(RMV) Makefile
check-local: all-local
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(TARGET) : $(OBJECTS)
$(LINK.cc) -o $@ $^ $(LIBS)
$(LONGNAME) : $(LONGNAME_OBJ)
$(LINK.cc) -o $@ $^ $(LIBS)
invoke:
ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
ifeq (,$(MAKECMDGOALS))
-include $(DEPS)
else
ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
-include $(DEPS)
endif
endif

1730
colprobe/colprobe.cpp Normal file

File diff suppressed because it is too large Load diff

148
colprobe/colprobe.dsp Normal file
View file

@ -0,0 +1,148 @@
# Microsoft Developer Studio Project File - Name="colprobe" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=colprobe - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "colprobe.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "colprobe.mak" CFG="colprobe - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "colprobe - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "colprobe - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "colprobe - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
MTL=midl.exe
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /I "../../tools/toolutil" /I "../../common" /I "../../i18n" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 icuio.lib icuuc.lib icuin.lib icutu.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../lib"
!ELSEIF "$(CFG)" == "colprobe - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
MTL=midl.exe
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /I "../../tools/toolutil" /I "../../common" /I "../../i18n" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 icuiod.lib icuucd.lib icuind.lib icutud.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../lib"
!ENDIF
# Begin Target
# Name "colprobe - Win32 Release"
# Name "colprobe - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\colprobeNew.cpp
# End Source File
# Begin Source File
SOURCE=.\line.cpp
# End Source File
# Begin Source File
SOURCE=.\sortedlines.cpp
# End Source File
# Begin Source File
SOURCE=.\strengthprobe.cpp
# End Source File
# Begin Source File
SOURCE=.\targetsetgenerator.cpp
# End Source File
# Begin Source File
SOURCE=.\uprinter.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\colprobe.h
# End Source File
# Begin Source File
SOURCE=.\line.h
# End Source File
# Begin Source File
SOURCE=.\sortedlines.h
# End Source File
# Begin Source File
SOURCE=.\strengthprobe.h
# End Source File
# Begin Source File
SOURCE=.\targetsetgenerator.h
# End Source File
# Begin Source File
SOURCE=.\uprinter.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

15
colprobe/colprobe.h Normal file
View file

@ -0,0 +1,15 @@
#ifndef COLPROBE_H
#define COLPROBE_H
#include "unicode/uniset.h"
#include "unicode/normlzr.h"
typedef int (*CompareFn) (const void *elem1, const void *elem2);
typedef int (*GetSortKeyFn) (const UChar *string, int32_t len, uint8_t *buffer, int32_t buffCapacity);
//typedef int (__cdecl *CompareFn)(const void *elem1, const void *elem2);
void generateRepertoire(const char *locale, UnicodeSet &rep, UBool &hanAppears, UErrorCode &status);
UnicodeSet flatten(const UnicodeSet &source, UErrorCode &status);
//UnicodeSet generateRepertoire(const char *locale);
#endif

1078
colprobe/colprobeNew.cpp Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,164 @@
#! /usr/bin/perl -w
use strict;
my $locale = $ARGV[0];
my $long_name = `/home/weiv/src/icu/source/extra/colprobe/longname $locale`;
my $pageTitle = $locale."_collation";
my $filename = $pageTitle.".html";
open TABLE, ">$filename";
print TABLE <<"EndOfTemplate";
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>$pageTitle</title>
<style>
<!--
table { border-spacing: 0; border-collapse: collapse; width: 100%;
border: 1px solid black }
td, th { width: 10%; border-spacing: 0; border-collapse: collapse; color: black;
vertical-align: top; border: 1px solid black }
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<p><b><font color="#FF0000">Collation:</font> $locale ($long_name) <a href="http://oss.software.ibm.com/cgi-bin/icu/lx/en/?_=$locale">Demo</a>,
<a href="../all_diff_xml/comparison_charts.html">Cover
Page</a>, <a href="../all_diff_xml/index.html">Index</a></b></p>
<table>
<tr>
EndOfTemplate
my $dirCommon = "common";
my $refCommon = $dirCommon."/UCARules.txt";
my $nameCommon = $dirCommon."/".$locale."_collation.html";
my $colorCommon = "#AD989D";
my $loc;
if(!(-e $nameCommon)) {
$locale =~ /_/;
$loc = $`;
$nameCommon = "$dirCommon/$loc"."_collation.html";
}
print TABLE " <th bgcolor=\"$colorCommon\">COMMON (<a href=\"$refCommon\">UCA</a> <a href=\"../$dirCommon/xml/$locale.xml\">xml</a>)</th>\n";
my $dirLinux = "linux";
my $refLinux = $dirLinux."/".$locale.".utf8_default_raw.html";
my $rawLinux = $dirLinux."/".$locale.".utf8_raw.html";
my $defLinux = $dirLinux."/".$locale;
my $nameLinux = "$dirLinux/$locale".".utf8_collation.html";
my $colorLinux = "#1191F1";
print TABLE " <th bgcolor=\"$colorLinux\">LINUX (";
if (!(-e $nameLinux)) {
#try the variant that has @euro stuck in
$nameLinux = "$dirLinux/$locale".'.utf8@euro_collation.html';
if(-e $nameLinux) {
$refLinux = $dirLinux."/".$locale.'.utf8@euro_default_raw.html';
$rawLinux = $dirLinux."/".$locale.'.utf8@euro_raw.html';
}
}
if (-e $nameLinux) {
print TABLE "<a href=\"$rawLinux\">Ordering</a> <a href=\"$defLinux\">Definition</a> <a href=\"$refLinux\">base</a>";
}
print TABLE " <a href=\"../$dirLinux/xml/$locale.xml\">xml</a>)</th>\n";
my $dirWin = "winxp";
my $refWin = $dirWin."/".$locale."_default_raw.html";
my $rawWin = $dirWin."/".$locale."_raw.html";
my $nameWin = "$dirWin/$locale"."_collation.html";
my $colorWin = "#98FB98";
print TABLE " <th bgcolor=\"$colorWin\">WINDOWS (";
if (-e $nameWin) {
print TABLE "<a href=\"$rawWin\">Ordering</a> <a href=\"$refWin\">base</a> ";
}
print TABLE "<a href=\"../windows/xml/$locale.xml\">xml</a>)</th>\n";
print TABLE " </tr>\n <tr>";
readRules($nameCommon, "#AD989D", "Same as the UCA.");
readRules($nameLinux, "#1191F1", "No data available.");
readRules($nameWin, "#98FB98", "No data available.");
print TABLE <<"EndOfFooter";
</tr>
</table>
</body>
</html>
EndOfFooter
sub readRules {
# readRules($file, $color)
my $filename = shift;
my $color = shift;
my $comment = shift;
my $noLines = 0;
my $printOut = 0;
my $file;
if(-e $filename) {
open($file, "<$filename") || die "something very strange happened\n";
print TABLE "<td bgcolor=\"$color\">\n";
while (<$file>) {
if (/\}\<br\>$/) {
$printOut = 0;
}
if ($printOut) {
print TABLE $_;
$noLines++;
}
if (/Sequence/) {
$printOut = 1;
print "found sequence\n";
$noLines = 0;
}
}
if (!$noLines) {
print TABLE "Same ordering as base\n";
}
print TABLE "</td>\n";
} else {
print TABLE "<td bgcolor=\"$color\">\n$comment</td>\n";
}
}
# Tasting of food product
# 650-574-4551 $50 1 hour
# <td bgcolor="#AD989D">1.0-alpha</td>
# <td bgcolor="#FF6633">1.0</td>
# <td bgcolor="#FF6633">=</td>
# <td bgcolor="#FF6633"><span title="006E {LATIN SMALL LETTER N}">&amp;n</span><br>
# <span title="006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y}">&nbsp;&nbsp;&lt;&nbsp;ny</span><br>
# <span title="006E 006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y} / 006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;nny&nbsp;/&nbsp;ny</span><br>
# <span title="006E 0059 {LATIN SMALL LETTER N} {LATIN CAPITAL LETTER Y}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&lt;&nbsp;nY</span><br>
# </td>
# <td bgcolor="#FF6633">=</td>
# <td bgcolor="#FFFF33">1.2</td>
# <td bgcolor="#98FB98">Windows XP</td>
# <td bgcolor="#FF6633">=</td>
# <td bgcolor="#FF6633">=</td>

209
colprobe/doComparisonTable.pl Executable file
View file

@ -0,0 +1,209 @@
#! /usr/bin/perl -w
use strict;
use IO::File;
my $locale = $ARGV[0];
my $long_name = `/home/weiv/src/icu/source/extra/colprobe/longname $locale`;
print "Long name is $long_name\n";
my $pageTitle = $locale." collation";
my $filename = $locale.".html";
open TABLE, ">$filename";
print TABLE <<"EndOfTemplate";
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>$pageTitle</title>
<style>
<!--
table { border-spacing: 0; border-collapse: collapse; width: 100%;
border: 1px solid black }
td, th { width: 10%; border-spacing: 0; border-collapse: collapse; color: black;
vertical-align: top; border: 1px solid black }
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<p><b><font color="#FF0000">Collation:</font> $locale ($long_name) <a href="http://oss.software.ibm.com/cgi-bin/icu/lx/en/?_=$locale">Demo</a>,
<a href="../../comparison_charts.html">Cover
Page</a>, <a href="../main/index.html">Locale Diffs Index</a>, <a href="index.html">Collation Diffs Index</a></b></p>
<table>
<tr>
EndOfTemplate
my $dirCommon = "icucollations";
my $refCommon = $dirCommon."/UCARules.txt";
my $nameCommon = $dirCommon."/".$locale."_collation.html";
my $colorCommon = "#AD989D";
my $loc = $locale;
if(!(-e $nameCommon)) {
$locale =~ /_/;
$loc = $`;
$nameCommon = "$dirCommon/$loc"."_collation.html";
}
print "Common is $nameCommon\n";
print TABLE " <th bgcolor=\"$colorCommon\">COMMON (";
if(-e $nameCommon) {
print TABLE "<a href=\"../../common/collation/$loc.xml\">xml</a> ";
}
print TABLE "<a href=\"../../common/collation/root.xml\">UCA</a>)</th>\n";
my $dirLinux = "linuxcollations";
my $refLinux = $dirLinux."/".$locale.".utf8_default_raw.html";
my $rawLinux = $dirLinux."/".$locale.".utf8_raw.html";
my $defLinux = $dirLinux."/".$locale;
my $nameLinux = "$dirLinux/$locale"."_collation.html";
my $colorLinux = "#1191F1";
print TABLE " <th bgcolor=\"$colorLinux\">LINUX";
if (!(-e $nameLinux)) {
#try the variant that has @euro stuck in
$nameLinux = "$dirLinux/$locale".'.utf8@euro_collation.html';
if(-e $nameLinux) {
$refLinux = $dirLinux."/".$locale.'.utf8@euro_default_raw.html';
$rawLinux = $dirLinux."/".$locale.'.utf8@euro_raw.html';
}
}
if (-e $nameLinux) {
print TABLE " (<a href=\"../../linux/collation/$locale.xml\">xml</a>";
my $linuxBase = &getBaseLocale("$dirLinux/base", $locale);
if($linuxBase ne "") {
print TABLE " <a href=\"../../linux/collation/$linuxBase.xml\">Base ($linuxBase)</a>";
}
print TABLE ")";
}
print TABLE "</th>\n";
my $dirWin = "w2kcollations";
my $refWin = $dirWin."/".$locale."_default_raw.html";
my $rawWin = $dirWin."/".$locale."_raw.html";
my $nameWin = "$dirWin/$locale"."_collation.html";
my $colorWin = "#98FB98";
$loc = $locale;
#try fallback for windows
print TABLE " <th bgcolor=\"$colorWin\">WINDOWS";
if(!(-e $nameWin)) {
$locale =~ /_/;
$loc = $`;
$nameWin = "$dirWin/$loc"."_collation.html";
}
print "Windows loc is $loc\n";
if (-e $nameWin) {
print TABLE " (<a href=\"../../windows/collation/$loc.xml\">xml</a>";
my $winBase = &getBaseLocale("$dirWin/base", $locale);
if($winBase ne "") {
print TABLE "<a href=\"../../windows/collation/$winBase.xml\">base ($winBase)</a>";
}
print TABLE ")";
}
print TABLE "</th>\n";
print TABLE " </tr>\n <tr>";
readRules($nameCommon, "#AD989D", "Same as the UCA.");
readRules($nameLinux, "#1191F1", "No data available.");
readRules($nameWin, "#98FB98", "No data available.");
print TABLE <<"EndOfFooter";
</tr>
</table>
</body>
</html>
EndOfFooter
sub readRules {
# readRules($file, $color)
my $filename = shift;
my $color = shift;
my $comment = shift;
my $noLines = 0;
my $printOut = 0;
my $file;
if(-e $filename) {
open($file, "<$filename") || die "something very strange happened\n";
print TABLE "<td bgcolor=\"$color\">\n";
while (<$file>) {
if (/\}\<br\>$/) {
$printOut = 0;
}
if ($printOut) {
if(!/^$/ && !/&nbsp;<br>$/) {
print TABLE $_;
$noLines++;
}
}
if (/Sequence/) {
$printOut = 1;
print "found sequence\n";
$noLines = 0;
}
}
if (!$noLines) {
print TABLE "Same ordering as base\n";
}
print TABLE "</td>\n";
} else {
print TABLE "<td bgcolor=\"$color\">\n$comment</td>\n";
}
}
sub getBaseLocale(){
my $basefile = shift;
my $locale = shift;
my $baseFH = IO::File->new($basefile,"r")
or die "could not open the file $basefile for reading: $! \n";
my $bse;
my $loc;
while(defined ( my $line = <$baseFH>)){
if( $line =~ /\<$locale\>/){
($loc,$bse) = split (/\>/, $line);
$bse =~ s/^\s+\<//;
return $bse;
}
}
}
# Tasting of food product
# 650-574-4551 $50 1 hour
# <td bgcolor="#AD989D">1.0-alpha</td>
# <td bgcolor="#FF6633">1.0</td>
# <td bgcolor="#FF6633">=</td>
# <td bgcolor="#FF6633"><span title="006E {LATIN SMALL LETTER N}">&amp;n</span><br>
# <span title="006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y}">&nbsp;&nbsp;&lt;&nbsp;ny</span><br>
# <span title="006E 006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y} / 006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;nny&nbsp;/&nbsp;ny</span><br>
# <span title="006E 0059 {LATIN SMALL LETTER N} {LATIN CAPITAL LETTER Y}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&lt;&nbsp;nY</span><br>
# </td>
# <td bgcolor="#FF6633">=</td>
# <td bgcolor="#FFFF33">1.2</td>
# <td bgcolor="#98FB98">Windows XP</td>
# <td bgcolor="#FF6633">=</td>
# <td bgcolor="#FF6633">=</td>

246
colprobe/extractCollationData.pl Executable file
View file

@ -0,0 +1,246 @@
#!/usr/bin/perl
use strict;
use Unicode::UCD 'charinfo';
use Unicode::Normalize;
use utf8;
use open ':utf8';
my $printout = 0;
my $braces = 0;
my $colls = 0;
my $aliased = 0;
my $newName = "";
my $filename;
my $suffix;
my $locale;
NEW_FILE:
foreach my $arg (@ARGV) {
if($newName =~ /^$/) {
$locale = $arg;
$locale =~ s#^.*/##g;
$locale =~ s/\.txt//;
} else {
$newName = "";
}
my $command = "/home/weiv/build/current/bin/uconv -x hex-any/Java -f utf8 -t utf8 $arg";
print $command."\n";
my @bundle = `$command`;
foreach $_ (@bundle) {
#while(<>) {
#print $ARGV if eof;
if(/^\/\//) {
next;
}
if(/collations/) {
print "found Collations\n";
$colls = 1;
if(/alias/) {
print "collations are aliased\n";
$aliased = 1;
}
}
if($aliased) {
print "processing aliased data: $_\n";
if(/\{/) {
print "Braces opened\n";
$braces = 1;
}
if($braces && /\"(.*)\"/) {
$newName = $1;
print "Aliasing to $newName\n";
}
if($braces && /\}/) {
$braces = 0;
print "Braces closed\n";
$aliased = 0;
print "Switching from $filename to $newName\n";
$arg =~ s/$locale\.txt$/$newName\.txt/;
print "$arg\n";
redo NEW_FILE;
}
}
if(/standard|phonebook|traditional|pinyin|stroke|direct/ && $colls) {
print "found $& collation\n";
$suffix = "_".uc($&);
if(/standard/) {
$suffix = "";
}
}
if(/Sequence/ && $colls) {
#binmode ARGV, ":utf8";
$printout = 1;
#$filename = $ARGV;
$filename = $locale;
if($suffix) {
$filename .= "_".$suffix;
}
$filename .= "_collation.html";
print "filename is $filename\n";
#open(OUT, ">:utf8", "$filename");
open(OUT, ">$filename");
printHeading($arg);
#next;
}
my $line = $_;
if($line =~ /\{/ && $printout) {
$braces++;
}
if($printout) {
print OUT processLine($line);
print OUT "\n";
}
if( $line =~ /\}/ && $printout) {
$braces--;
if($braces == 0) {
$printout = 0;
printFooting();
close(OUT);
}
}
}
}
sub processLine {
my $line = shift;
$_ = $line;
my $i = 0;
my $j = 0;
my $result;
# remove comments
s#//.*$##g;
# remove "Sequence" if present
s/Sequence\s*//;
# remove leading brace if present
s/^\s*{//;
# remove trailing brace if present
s/}\s*$//;
# remove trailing quote
s/"\s*$//;
#remove lead quote
s/^\s*"//;
#separate options
s/(\[.*\])/\n\1/g;
#separate resets
s/\s*\&\s*/\n\& /g;
#separate strengths and insert spaces
s/\s*(<{1,4})\s*/\n\1 /g;
#separate equals and insert spaces
s/\s*=\s*/\n= /g;
# break into individual reset/strength/setting lines
my @lines = split(/\n/);
my $line;
my $name;
my $spanEnd = "";
my $result = "";
my $names = "";
my $codes = "";
my $lrm = "";
foreach $line (@lines) {
# skip empty lines
if($line =~ /^$/) {
next;
}
$spanEnd = "";
$name = "";
$lrm = "";
$line = NFC($line);
# for resets and strengths we will get name for elements
if($line =~ /<{1,4} |= |& \[.*\]|& /) {
$name = "<span title=\"";
$names = "";
$codes = "";
my $start = $&;
my $rest = $';
for ($j = 0; $j < length($rest); $j++) {
my $char = substr($rest, $j, 1);
my $charVal = ord($char);
# some of elements are part of the syntax, so they are
# entered without translation to the name
if($charVal == 0x002F || $charVal == 0x007C) {
$name .= $codes.$names." $char ";
$codes = "";
$names = "";
} elsif($charVal == 0x0027) { #quote requires more processing
#$name .= "'";
} else {
my $charinfo = charinfo($charVal);
$codes .= $charinfo->{'code'}." ";
$names .= "{".$charinfo->{'name'}."} ";
if($charinfo->{'bidi'} eq "R" || $charinfo->{'bidi'} eq "AL") {
$lrm = "&lrm;";
}
#$name .= $charinfo->{'code'}." {".$charinfo->{'name'}."} ";
}
}
$name .= $codes.$names."\" >";
$spanEnd = "</span>";
}
#print $name."\n";
if($line =~ /^<<<</) {
$line = " $line";
} elsif($line =~ /^<<</) {
$line = " $line";
} elsif($line =~ /^<</) {
$line = " $line";
} elsif($line =~ /^</) {
$line = " $line";
} elsif($line =~ /^=/) {
$line = " $line";
}
# insert spaces around vertical bars (fix prefixes)
# insert spaces around slashes (fix expansions)
$line =~ s#/# / #g;
# replace &
$line =~ s/\&/&amp;/g;
# replace spaces
$line =~ s/ /&nbsp;/g;
# replace <
$line =~ s/</&lt;/g;
# replace >
$line =~ s/>/&gt;/g;
#$lines[$i] = $name.$lrm.$line."</span><br>";
#$i++;
$result .= $name.$lrm.$line.$spanEnd."<br>\n";
}
#$_ = join("\n", @lines);
return $result;
}
sub printHeading {
my $filename = shift;
$filename =~ s/\.txt//;
print OUT <<"EndOfHeading";
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
# Collation data resource bundle generated for locale: $filename<br>
# For platform icu reference platform UCA<br><br>
$filename&nbsp;{<br>
&nbsp;&nbsp;CollationElements&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;Sequence&nbsp;{<br>
EndOfHeading
}
sub printFooting {
print OUT <<"EndOfFooting";
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br>
}<br>
</pre>
</html>
EndOfFooting
}

24
colprobe/gcd2.pl Executable file
View file

@ -0,0 +1,24 @@
#!/usr/bin/perl -w
use strict;
#my $localeMinusA = `locale -a`;
my $localeMinusA = `cat ~/src/icu/source/extra/colprobe/locale.txt`;
my @locales = split(/\n/, $localeMinusA);
my $locale;
my $command;
my $platform = $ARGV[0];
mkdir $platform."logs2";
mkdir $platform;
foreach $locale (@locales) {
$command = "~/src/icu/source/extra/colprobe/colprobe --platform $platform --ref $platform --diff $locale >$platform"."logs2/$locale"."Log.txt 2>&1";
($locale, $_) = split(/\./, $locale);
$command .= "; cp /usr/share/i18n/locales/$locale $platform/";
print "$command\n";
`$command`;
#chdir "..";
}

23
colprobe/genCollData.pl Executable file
View file

@ -0,0 +1,23 @@
#!/usr/bin/perl -w
use strict;
my $localeMinusA = `locale -a`;
my @locales = split(/\n/, $localeMinusA);
my $locale;
my $command;
my $platform = $ARGV[0];
mkdir $platform."logs";
mkdir $platform;
foreach $locale (@locales) {
$command = "~/src/icu/source/extra/colprobe/colprobe --output resb --platform linux --ref linux $locale >$platform"."logs/$locale"."Log.txt 2>&1";
($locale, $_) = split(/\./, $locale);
$command .= "; cp /usr/share/i18n/locales/$locale $platform/";
print "$command\n";
`$command`;
#chdir "..";
}

701
colprobe/line.cpp Normal file
View file

@ -0,0 +1,701 @@
/*
*******************************************************************************
*
* Copyright (C) 2003, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
*
* File line.cpp
*
* Modification History:
*
* Date Name Description
* 03/18/2003 weiv Creation.
*******************************************************************************
*/
#include "line.h"
#include <stdio.h>
UnicodeSet * Line::needsQuoting = NULL;
void
Line::init()
{
len = 0;
expLen = 0;
strength = UCOL_OFF;
strengthFromEmpty = UCOL_OFF;
cumulativeStrength = UCOL_OFF;
expStrength = UCOL_OFF;
previous = NULL;
next = NULL;
left = NULL;
right = NULL;
isContraction = FALSE;
isExpansion = FALSE;
isRemoved = FALSE;
isReset = FALSE;
expIndex = 0;
firstCC = 0;
lastCC = 0;
sortKey = NULL;
}
Line::Line()
{
init();
memset(name, 0, 25*sizeof(UChar));
memset(expansionString, 0, 25*sizeof(UChar));
}
Line::Line(const UChar* name, int32_t len)
{
init();
this->len = len;
u_memcpy(this->name, name, len);
memset(expansionString, 0, 25*sizeof(UChar));
UChar32 c;
U16_GET(name, 0, 0, len, c);
firstCC = u_getCombiningClass(c);
U16_GET(name, 0, len-1, len, c);
lastCC = u_getCombiningClass(c);
}
Line::Line(const UChar name)
{
init();
len = 1;
this->name[0] = name;
this->name[1] = 0;
memset(expansionString, 0, 25*sizeof(UChar));
firstCC = u_getCombiningClass(name);
lastCC = firstCC;
}
Line::Line(const UnicodeString &string)
{
init();
setTo(string);
}
Line::Line(const char *buff, int32_t buffLen, UErrorCode &status) :
previous(NULL),
next(NULL),
left(NULL),
right(NULL)
{
initFromString(buff, buffLen, status);
}
Line::Line(const Line &other) :
previous(NULL),
next(NULL),
left(NULL),
right(NULL)
{
*this = other;
}
Line &
Line::operator=(const Line &other) {
len = other.len;
expLen = other.expLen;
strength = other.strength;
strengthFromEmpty = other.strengthFromEmpty;
cumulativeStrength = other.cumulativeStrength;
expStrength = other.expStrength;
isContraction = other.isContraction;
isExpansion = other.isExpansion;
isRemoved = other.isRemoved;
isReset = other.isReset;
expIndex = other.expIndex;
firstCC = other.firstCC;
lastCC = other.lastCC;
u_strcpy(name, other.name);
u_strcpy(expansionString, other.expansionString);
sortKey = other.sortKey;
left = other.left;
right = other.right;
return *this;
}
UBool
Line::operator==(const Line &other) const {
if(this == &other) {
return TRUE;
}
if(len != other.len) {
return FALSE;
}
if(u_strcmp(name, other.name) != 0) {
return FALSE;
}
return TRUE;
}
UBool
Line::equals(const Line &other) const {
if(this == &other) {
return TRUE;
}
if(len != other.len) {
return FALSE;
}
if(u_strcmp(name, other.name) != 0) {
return FALSE;
}
if(strength != other.strength) {
return FALSE;
}
if(expLen != other.expLen) {
return FALSE;
}
if(u_strcmp(expansionString, other.expansionString)) {
return FALSE;
}
return TRUE;
}
UBool
Line::operator!=(const Line &other) const {
return !(*this == other);
}
Line::~Line() {
}
void
Line::copyArray(Line *dest, const Line *src, int32_t size) {
int32_t i = 0;
for(i = 0; i < size; i++) {
dest[i] = src[i];
}
}
void
Line::setName(const UChar* name, int32_t len) {
this->len = len;
u_memcpy(this->name, name, len);
UChar32 c;
U16_GET(name, 0, 0, len, c);
firstCC = u_getCombiningClass(c);
U16_GET(name, 0, len-1, len, c);
lastCC = u_getCombiningClass(c);
}
void
Line::setToConcat(const Line *first, const Line *second) {
u_strcpy(name, first->name);
u_strcat(name, second->name);
len = first->len + second->len;
firstCC = first->firstCC;
lastCC = second->lastCC;
}
UnicodeString
Line::stringToName(UChar *string, int32_t len) {
UErrorCode status = U_ZERO_ERROR;
UnicodeString result;
char buffer[256];
int32_t i = 0;
UChar32 c;
while(i < len) {
U16_NEXT(string, i, len, c);
if(c < 0x10000) {
sprintf(buffer, "%04X ", c);
} else {
sprintf(buffer, "%06X ", c);
}
result.append(buffer);
}
i = 0;
while(i < len) {
U16_NEXT(string, i, len, c);
u_charName(c, U_EXTENDED_CHAR_NAME, buffer, 256, &status);
result.append("{");
result.append(buffer);
result.append("} ");
}
/*
for(i = 0; i < len; i++) {
sprintf(buffer, "%04X ", string[i]);
result.append(buffer);
}
for(i = 0; i < len; i++) {
u_charName(string[i], U_EXTENDED_CHAR_NAME, buffer, 256, &status);
result.append("{");
result.append(buffer);
result.append("} ");
}
*/
return result;
}
UnicodeString
Line::toBundleString()
{
UnicodeString result;
UErrorCode status = U_ZERO_ERROR;
if(!needsQuoting) {
needsQuoting = new UnicodeSet("[[:whitespace:][:c:][:z:][[:ascii:]-[a-zA-Z0-9]]]", status);
}
UChar NFC[50];
int32_t NFCLen = unorm_normalize(name, len, UNORM_NFC, 0, NFC, 50, &status);
result.append("\"");
if(isReset) {
result.append("&");
} else {
result.append(strengthToString(strength, FALSE, FALSE));
}
UBool quote = needsQuoting->containsSome(name) || needsQuoting->containsSome(NFC);
if(quote) {
result.append("'");
}
if(NFC[0] == 0x22) {
result.append("\\u0022");
} else {
result.append(NFC, NFCLen);
}
if(quote && NFC[0] != 0x0027) {
result.append("'");
}
if(expLen && !isReset) {
quote = needsQuoting->containsSome(expansionString);
result.append(" / ");
if(quote) {
result.append("'");
}
result.append(expansionString);
if(quote) {
result.append("'");
}
}
result.append("\" //");
result.append(stringToName(NFC, NFCLen));
if(expLen && !isReset) {
result.append(" / ");
result.append(stringToName(expansionString, expLen));
}
result.append("\n");
return result;
}
UnicodeString
Line::toHTMLString()
{
UnicodeString result;
UErrorCode status = U_ZERO_ERROR;
UChar NFC[50];
int32_t NFCLen = unorm_normalize(name, len, UNORM_NFC, 0, NFC, 50, &status);
result.append("<span title=\"");
result.append(stringToName(NFC, NFCLen));
if(expLen && !isReset) {
result.append(" / ");
result.append(stringToName(expansionString, expLen));
}
result.append("\">");
if(isReset) {
result.append("&amp;");
} else {
result.append(strengthToString(strength, FALSE, TRUE));
}
result.append(NFC, NFCLen);
if(expLen && !isReset) {
result.append("&nbsp;/&nbsp;");
result.append(expansionString);
}
result.append("</span><br>\n");
return result;
}
UnicodeString
Line::toString(UBool pretty) {
UnicodeString result;
if(!pretty) {
result.setTo(name);
if(expLen) {
result.append("/");
result.append(expansionString);
}
} else {
UErrorCode status = U_ZERO_ERROR;
UChar NFC[50];
int32_t NFCLen = unorm_normalize(name, len, UNORM_NFC, 0, NFC, 50, &status);
result.setTo(NFC, NFCLen);
if(expLen) {
result.append("/");
result.append(expansionString);
}
/*
if(NFCLen != len || u_strncmp(name, NFC, len) != 0) {
result.append("(NFC: ");
result.append(NFC, NFCLen);
result.append(stringToName(NFC, NFCLen));
result.append(")");
}
*/
result.append(" # ");
result.append(stringToName(NFC, NFCLen));
if(expLen) {
result.append("/ ");
result.append(stringToName(expansionString, expLen));
}
}
return result;
}
void
Line::setTo(const UnicodeString &string) {
int32_t len = string.length();
u_strncpy(name, string.getBuffer(), len);
name[len] = 0;
this->len = len;
UChar32 c;
U16_GET(name, 0, 0, len, c);
firstCC = u_getCombiningClass(c);
U16_GET(name, 0, len-1, len, c);
lastCC = u_getCombiningClass(c);
}
void
Line::setTo(const UChar32 n) {
UBool isError = FALSE;
len = 0; // we are setting the line to char, not appending
U16_APPEND(name, len, 25, n, isError);
name[len] = 0;
firstCC = u_getCombiningClass(n);
lastCC = firstCC;
}
UnicodeString
Line::strengthIndent(UColAttributeValue strength, int indentSize, UnicodeString &result)
{
int i;
int numIndents = strength+1;
if(strength > UCOL_IDENTICAL) {
return result;
} else if(strength == UCOL_IDENTICAL) {
numIndents = 5;
}
for(i = 0; i < numIndents*indentSize; i++) {
result.append(" ");
}
return result;
}
UnicodeString
Line::strengthToString(UColAttributeValue strength, UBool pretty, UBool html) {
UnicodeString result;
if(html) {
switch(strength) {
case UCOL_IDENTICAL:
result.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;");
break;
case UCOL_QUATERNARY:
result.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&lt;&lt;&nbsp;");
break;
case UCOL_TERTIARY:
result.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&lt;&nbsp;");
break;
case UCOL_SECONDARY:
result.append("&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&nbsp;");
break;
case UCOL_PRIMARY:
result.append("&nbsp;&nbsp;&lt;&nbsp;");
break;
case UCOL_OFF:
result.append("&nbsp;&gt;?&nbsp;");
break;
default:
result.append("&nbsp;?!&nbsp;");
break;
}
} else {
switch(strength) {
case UCOL_IDENTICAL:
if(pretty) {
result.append(" ");
}
result.append(" = ");
break;
case UCOL_QUATERNARY:
if(pretty) {
result.append(" ");
}
result.append(" <<<< ");
break;
case UCOL_TERTIARY:
//u_fprintf(file, "<3");
if(pretty) {
result.append(" ");
}
result.append(" <<< ");
break;
case UCOL_SECONDARY:
//u_fprintf(file, "<2");
if(pretty) {
result.append(" ");
}
result.append(" << ");
break;
case UCOL_PRIMARY:
//u_fprintf(file, "<1");
if(pretty) {
result.append(" ");
}
result.append(" < ");
break;
case UCOL_OFF:
result.append(" >? ");
break;
default:
result.append(" ?! ");
break;
}
}
return result;
}
Line *
Line::nextInteresting() {
Line *result = this->next;
while(result && result->strength != UCOL_IDENTICAL) {
result = result->next;
}
return result;
}
void
Line::append(const UChar* n, int32_t length)
{
u_strncat(name, n, length);
name[len+length] = 0;
len += length;
UChar32 end;
U16_GET(n, 0, length-1, length, end);
lastCC = u_getCombiningClass(end);
}
void
Line::append(const UChar n)
{
name[len] = n;
name[len+1] = 0;
len++;
lastCC = u_getCombiningClass(n);
}
void
Line::append(const Line &l)
{
append(l.name, l.len);
lastCC = l.lastCC;
}
void
Line::clear()
{
name[0] = 0;
len = 0;
}
int32_t
Line::write(char *buff, int32_t, UErrorCode &)
{
/*
UChar name[25];
int32_t len;
UChar expansionString[25];
int32_t expLen;
UColAttributeValue strength;
UColAttributeValue strengthFromEmpty;
UColAttributeValue cumulativeStrength;
UColAttributeValue expStrength;
Line *previous;
Line *next;
UBool isContraction;
UBool isExpansion;
UBool isRemoved;
UBool isReset;
int32_t expIndex;
uint8_t firstCC;
uint8_t lastCC;
*/
int32_t resLen = 0;
int32_t i = 0;
sprintf(buff+resLen, "%04X", name[0]);
resLen += 4;
for(i = 1; i < len; i++) {
sprintf(buff+resLen, " %04X", name[i]);
resLen += 5;
}
sprintf(buff+resLen, "/");
resLen += 1;
i = 0;
if(expLen) {
sprintf(buff+resLen, "%04X", expansionString[0]);
resLen += 4;
for(i = 1; i < expLen; i++) {
sprintf(buff+resLen, " %04X", expansionString[i]);
resLen += 5;
}
}
sprintf(buff+resLen, "; ");
resLen += 2;
sprintf(buff+resLen, "%02i ", strength);
resLen += 3;
sprintf(buff+resLen, "%02i", strengthFromEmpty);
resLen += 2;
sprintf(buff+resLen, "%02i", cumulativeStrength);
resLen += 2;
sprintf(buff+resLen, "%02i", expStrength);
resLen += 2;
// Various flags. The only interesting ones are isReset and isRemoved. We will not output removed lines
//sprintf(buff+resLen, "%1i%1i%1i%1i ", isContraction, isExpansion, isRemoved, isReset);
//resLen += 5;
sprintf(buff+resLen, "%1i%1i ", isRemoved, isReset);
resLen += 3;
// first and last CC
// can be calculated on reading
//sprintf(buff+resLen, "%03i %03i ", firstCC, lastCC);
//resLen += 8;
sprintf(buff+resLen, "%08X", expIndex);
resLen += 8;
buff[resLen] = 0;
return resLen;
}
void
Line::initFromString(const char *buff, int32_t, UErrorCode &)
{
int32_t bufIndex = 0;
int32_t i = 0;
sscanf(buff+bufIndex, "%04X", &name[i]);
i++;
bufIndex += 4;
while(buff[bufIndex] != '/') {
sscanf(buff+bufIndex, " %04X", &name[i]);
i++;
bufIndex += 5;
}
len = i;
name[len] = 0;
bufIndex++;
if(i > 1) {
isContraction = TRUE;
} else {
isContraction = FALSE;
}
if(buff[bufIndex] == ';') {
isExpansion = FALSE;
bufIndex += 2;
expansionString[0] = 0;
expLen = 0;
} else {
i = 0;
sscanf(buff+bufIndex, "%04X", &expansionString[i]);
i++;
bufIndex += 4;
while(buff[bufIndex] != ';') {
sscanf(buff+bufIndex, " %04X", &expansionString[i]);
i++;
bufIndex += 5;
}
expLen = i;
expansionString[expLen] = 0;
bufIndex += 2;
}
sscanf(buff+bufIndex, "%02i ", &strength);
bufIndex += 3;
sscanf(buff+bufIndex, "%02i", &strengthFromEmpty);
bufIndex += 2;
sscanf(buff+bufIndex, "%02i", &cumulativeStrength);
bufIndex += 2;
sscanf(buff+bufIndex, "%02i", &expStrength);
bufIndex += 2;
sscanf(buff+bufIndex, "%1i%1i ", &isRemoved, &isReset);
bufIndex += 3;
sscanf(buff+bufIndex, "%08X", &expIndex);
bufIndex += 8;
// calculate first and last CC
UChar32 c;
U16_GET(name, 0, 0, len, c);
firstCC = u_getCombiningClass(c);
U16_GET(name, 0, len-1, len, c);
lastCC = u_getCombiningClass(c);
}
void
Line::swapCase(UChar *string, int32_t &sLen)
{
UChar32 c = 0;
int32_t i = 0, j = 0;
UChar buff[256];
UBool isError = FALSE;
while(i < sLen) {
U16_NEXT(string, i, sLen, c);
if(u_isUUppercase(c)) {
c = u_tolower(c);
} else if(u_isULowercase(c)) {
c = u_toupper(c);
}
U16_APPEND(buff, j, 256, c, isError);
}
buff[j] = 0;
u_strcpy(string, buff);
sLen = j;
}
void
Line::swapCase()
{
swapCase(name, len);
swapCase(expansionString, expLen);
}
UnicodeString
Line::dumpSortkey()
{
char buffer[256];
char *buff = buffer;
*buff = 0;
uint8_t *key = sortKey;
if(sortKey) {
while(*key) {
sprintf(buff, "%02X ", *key);
key++;
buff += 3;
if(buff - buffer > 252) {
break;
}
}
}
return UnicodeString(buffer);
}

113
colprobe/line.h Normal file
View file

@ -0,0 +1,113 @@
/*
*******************************************************************************
*
* Copyright (C) 2003, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
*
* File line.h
*
* Modification History:
*
* Date Name Description
* 03/18/2003 weiv Creation.
*******************************************************************************
*/
//
// class Line
//
// Each line from the source file (containing a name, presumably) gets
// one of these structs.
//
#ifndef COLPROBE_LINE_H
#define COLPROBE_LINE_H
#include "unicode/utypes.h"
#include "unicode/ucol.h"
#include "unicode/ustring.h"
#include "unicode/unistr.h"
#include "unicode/uchar.h"
#include "unicode/uniset.h"
#include "colprobe.h"
#include <stdlib.h>
#include <string.h>
static const int MAX_EXPANSION_PREFIXES = 10;
class Line {
public:
static void copyArray(Line *dest, const Line *src, int32_t size);
Line();
Line(const Line &other);
Line(const UChar* name, int32_t len);
Line(const UnicodeString &string);
Line(const UChar name);
Line(const char *buff, int32_t buffLen, UErrorCode &status);
~Line();
Line & operator=(const Line &other);
UBool operator==(const Line &other) const;
UBool operator!=(const Line &other) const;
void setToConcat(const Line *first, const Line *second);
void setName(const UChar* name, int32_t len);
UnicodeString toString(UBool pretty = FALSE);
UnicodeString toBundleString();
UnicodeString toHTMLString();
int32_t write(char *buff, int32_t buffLen, UErrorCode &status);
void initFromString(const char *buff, int32_t buffLen, UErrorCode &status);
UnicodeString strengthIndent(UColAttributeValue strength, int indentSize, UnicodeString &result);
UnicodeString strengthToString(UColAttributeValue strength, UBool pretty, UBool html = FALSE);
UnicodeString stringToName(UChar *string, int32_t len);
void setTo(const UnicodeString &string);
void setTo(const UChar32 n);
UBool equals(const Line &other) const;
Line *nextInteresting();
void append(const UChar n);
void append(const UChar* n, int32_t length);
void append(const Line &l);
void clear();
void swapCase();
void swapCase(UChar *string, int32_t &sLen);
UnicodeString dumpSortkey();
void init();
public:
UChar name[25];
int32_t len;
UChar expansionString[25];
int32_t expLen;
UColAttributeValue strength;
UColAttributeValue strengthFromEmpty;
UColAttributeValue cumulativeStrength;
UColAttributeValue expStrength;
Line *previous;
Line *next;
// In case this element is a contraction
// we keep a pointer at which lines were components
Line *left;
Line *right;
UBool isContraction;
UBool isExpansion;
UBool isRemoved;
UBool isReset;
int32_t expIndex;
uint8_t firstCC;
uint8_t lastCC;
uint8_t *sortKey;
public:
static UnicodeSet *needsQuoting;
};
#endif //COLPROBE_LINE_H

241
colprobe/locale.txt Normal file
View file

@ -0,0 +1,241 @@
af
af_ZA
am
am_ET
ar
ar_AE
ar_BH
ar_DZ
ar_EG
ar_IN
ar_IQ
ar_JO
ar_KW
ar_LB
ar_LY
ar_MA
ar_OM
ar_QA
ar_SA
ar_SD
ar_SY
ar_TN
ar_YE
be
be_BY
bg
bg_BG
bn
bn_IN
ca
ca_ES
#ca_ES_PREEURO
cs
cs_CZ
da
da_DK
de
de_AT
#de_AT_PREEURO
de_BE
de_CH
de_DE
#de_DE_PREEURO
de_LU
#de_LU_PREEURO
de__PHONEBOOK
el
el_GR
#el_GR_PREEURO
en
en_AU
en_BE
#en_BE_PREEURO
en_BW
en_CA
en_GB
#en_GB_EURO
en_HK
en_IE
#en_IE_PREEURO
en_IN
en_MT
en_NZ
en_PH
en_SG
en_US
en_US_POSIX
en_VI
en_ZA
en_ZW
eo
es
es_AR
es_BO
es_CL
es_CO
es_CR
es_DO
es_EC
es_ES
#es_ES_PREEURO
es_GT
es_HN
es_MX
es_NI
es_PA
es_PE
es_PR
es_PY
es_SV
es_US
es_UY
es_VE
es__TRADITIONAL
et
et_EE
eu
eu_ES
#eu_ES_PREEURO
fa
fa_AF
fa_IR
fi
fi_FI
#fi_FI_PREEURO
fo
fo_FO
fr
fr_BE
#fr_BE_PREEURO
fr_CA
fr_CH
fr_FR
#fr_FR_PREEURO
fr_LU
#fr_LU_PREEURO
ga
ga_IE
#ga_IE_PREEURO
gl
gl_ES
#gl_ES_PREEURO
gu
gu_IN
gv
gv_GB
he
he_IL
hi
hi_IN
hi__DIRECT
hr
hr_HR
hu
hu_HU
hy
hy_AM
hy_AM_REVISED
id
id_ID
is
is_IS
it
it_CH
it_IT
#it_IT_PREEURO
ja
ja_JP
#ja_JP_TRADITIONAL
kk_KZ
kl
kl_GL
kn
kn_IN
ko
ko_KR
kok
kok_IN
kw
kw_GB
lt
lt_LT
lv
lv_LV
mk
mk_MK
mr
mr_IN
ms_MY
mt
mt_MT
nb
nb_NO
nl
nl_BE
#nl_BE_PREEURO
nl_NL
#nl_NL_PREEURO
nn
nn_NO
om
om_ET
om_KE
pl
pl_PL
ps
ps_AF
pt
pt_BR
pt_PT
#pt_PT_PREEURO
ro
ro_RO
ru
ru_RU
ru_UA
sh
sh_YU
sk
sk_SK
sl
sl_SI
so
so_DJ
so_ET
so_KE
so_SO
sq
sq_AL
sr
sr_YU
sv
sv_FI
sv_SE
sw
sw_KE
sw_TZ
ta
ta_IN
te
te_IN
th
th_TH
#th_TH_TRADITIONAL
ti
ti_ER
ti_ET
tr
tr_TR
uk
uk_UA
vi
vi_VN
zh
zh_CN
zh_HK
zh_MO
zh_SG
zh_TW
zh_TW_STROKE
zh__PINYIN

48
colprobe/longname.cpp Normal file
View file

@ -0,0 +1,48 @@
#include "unicode/unistr.h"
#include "unicode/locid.h"
#include "unicode/ucnv.h"
#include <stdio.h>
int main(int argc,
char* argv[])
{
UErrorCode status = U_ZERO_ERROR;
const char *loc = argv[1];
int32_t hasCountry;
UConverter *conv = ucnv_open("utf8", &status);
UChar UBuffer[256];
int32_t uBufLen = 0;
char buffer[256];
int32_t bufLen = 0;
uBufLen = uloc_getDisplayLanguage(loc, "en", UBuffer, 256, &status);
bufLen = ucnv_fromUChars(conv, buffer, 256, UBuffer, uBufLen, &status);
//u_UCharsToChars(UBuffer, buffer, uBufLen);
buffer[bufLen] = 0;
printf("%s", buffer);
if(hasCountry = uloc_getCountry(loc, buffer, 256, &status)) {
uBufLen = uloc_getDisplayCountry(loc, "en", UBuffer, 256, &status);
bufLen = ucnv_fromUChars(conv, buffer, 256, UBuffer, uBufLen, &status);
//u_UCharsToChars(UBuffer, buffer, uBufLen);
buffer[bufLen] = 0;
printf("_%s", buffer);
}
if(uloc_getVariant(loc, buffer, 256, &status)) {
uBufLen = uloc_getDisplayVariant(loc, "en", UBuffer, 256, &status);
bufLen = ucnv_fromUChars(conv, buffer, 256, UBuffer, uBufLen, &status);
//u_UCharsToChars(UBuffer, buffer, uBufLen);
buffer[bufLen] = 0;
if(!hasCountry) {
printf("_");
}
printf("_%s", buffer);
}
printf("\n");
return 0;
}

4
colprobe/readme.txt Normal file
View file

@ -0,0 +1,4 @@
There are several tools in this directory that should make it easier to generate collation data:
extractCollationData.pl - perl script that reads ICU resource bundle files and outputs a locale_collation.html file if collation elements are present in the locale. Arguments are the list of locale source files (*.txt) that need to be processed.
createComparisonTables.pl - takes a locale name. Looks in directories that should contain the html data produced by colprobe or extractCollationData.
tableStarter.pl - invokes createComparisonTables.pl with a list of locales.

2067
colprobe/sortedlines.cpp Normal file

File diff suppressed because it is too large Load diff

120
colprobe/sortedlines.h Normal file
View file

@ -0,0 +1,120 @@
#ifndef COLPROBE_SORTEDLINES_H
#define COLPROBE_SORTEDLINES_H
// colprobe includes
#include "colprobe.h"
#include "line.h"
#include "uprinter.h"
#include "strengthprobe.h"
// ICU includes
#include "unicode/uniset.h"
#include "unicode/usetiter.h"
#include "unicode/uscript.h"
#include "hash.h"
class SortedLines {
Line empty;
Line *UB[UCOL_OFF];
UnicodeSet ignorables[UCOL_OFF];
Line **toSort;
int32_t toSortCapacity;
Line *lines;
int32_t size;
int32_t capacity;
UnicodeSet repertoire;
UnicodeSet excludeBounds;
StrengthProbe probe;
Line *first;
Line *last;
Line *current;
SortedLines() {};
UPrinter *logger;
UPrinter *debug;
Hashtable *contractionsTable;
Hashtable *duplicators; // elements that duplicate preceding characters
int32_t maxExpansionPrefixSize;
// Properties of the sort
UBool wordSort;
UBool frenchSecondary;
UBool upperFirst;
uint8_t *sortkeys;
int32_t sortkeyOffset;
public:
SortedLines(const UnicodeSet &set, const UnicodeSet &excludeBounds, const StrengthProbe &probe, UPrinter *logger, UPrinter *debug);
SortedLines(FILE *file, UPrinter *logger, UPrinter *debug, UErrorCode &status);
~SortedLines();
void analyse(UErrorCode &status);
void sort(UBool setStrengths = TRUE, UBool link = FALSE);
void sort(Line **sortingArray, int32_t sizeToSort, UBool setStrengths = TRUE, UBool link = FALSE);
Line *getFirst();
Line *getLast();
void add(Line *line, UBool linkIn = FALSE);
void insert(Line *line, int32_t index);
Line *getNext();
Line *getPrevious();
Line *operator[](int32_t index);
int32_t addContractionsToRepertoire(UErrorCode &status);
int32_t getSize() const;
int32_t detectExpansions();
UnicodeString toString(UBool useLinks = FALSE);
UnicodeString toStringFromEmpty();
UnicodeString toPrettyString(UBool useLinks, UBool printSortKeys = FALSE);
UnicodeString toOutput(const char *format,
const char *locale, const char *platform, const char *reference,
UBool useLinks, UBool initialize, UBool moreToCome);
UnicodeString toBundle(const char *locale, const char *platform, const char *reference,
UBool useLinks, UBool initialize, UBool moreToCome);
UnicodeString toHTML(const char *locale, const char *platform, const char *reference,
UBool useLinks, UBool initialize, UBool moreToCome);
UnicodeString toXML(const char *locale, const char *platform, const char *reference,
UBool useLinks, UBool initialize, UBool moreToCome);
UnicodeString arrayToString(Line** sortedLines, int32_t linesSize, UBool pretty, UBool useLinks, UBool printSortKeys);
void setSortingArray(Line **sortingArray, Line *elements, int32_t sizeToSort);
int32_t setSortingArray(Line **sortingArray, Hashtable *table);
void reduceDifference(SortedLines& reference);
void getRepertoire(UnicodeSet &fillIn);
void removeDecompositionsFromRepertoire();
void getBounds(UErrorCode &status);
void classifyRepertoire();
void toFile(FILE *file, UBool useLinks, UErrorCode &status);
void swapCase();
void calculateSortKeys();
void calculateSortKey(Line &line);
private:
void init();
void init(UnicodeSet &rep, Line *lin);
int32_t detectContractions(Line **firstRep, int32_t firstSize,
Line **secondRep, int32_t secondSize,
Line *toAddTo, int32_t &toAddToSize,
Line *lesserToAddTo, int32_t &lesserToAddToSize,
int32_t capacity, UErrorCode &status);
void calculateCumulativeStrengths(Line *start, Line *end);
void transferCumulativeStrength(Line *previous, Line *that);
void updateBounds(UnicodeSet &set);
void addAll(Line* toAdd, int32_t toAddSize);
void setDistancesFromEmpty(Line* array, int32_t arraySize);
void noteContraction(const char* msg, Line *toAddTo, int32_t &toAddToSize, Line *left, Line *right, int32_t &noConts, UErrorCode &status);
int32_t gooseUp(int32_t resetIndex, int32_t expansionIndex, Line &expLine, int32_t *expIndexes, int32_t &expIndexSize, UColAttributeValue strength);
UBool getExpansionLine(const Line &expansion, const Line &previous, const Line &exp, Line &expansionLine);
};
#endif // #ifndef COLPROBE_SORTEDLINES_H

402
colprobe/strengthprobe.cpp Normal file
View file

@ -0,0 +1,402 @@
/*
*******************************************************************************
*
* Copyright (C) 2003, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
*
* File line.h
*
* Modification History:
*
* Date Name Description
* 07/07/2003 weiv Creation.
*******************************************************************************
*/
//
// class Line
//
// Each line from the source file (containing a name, presumably) gets
// one of these structs.
//
#include "strengthprobe.h"
StrengthProbe::StrengthProbe(CompareFn comparer, GetSortKeyFn getter, UChar SE,
UChar B0, UChar B1, UChar B2, UChar B3) :
SE(SE),
B0(B0), B1(B1), B2(B2), B3(B3),
utilFirstP(&utilFirst), utilSecondP(&utilSecond),
frenchSecondary(FALSE),
comparer(comparer), skgetter(getter)
{
}
int
StrengthProbe::setProbeChars(UChar B0, UChar B1, UChar B2, UChar B3)
{
this->B0 = B0;
this->B1 = B1;
this->B2 = B2;
this->
B3 = B3;
return checkSanity();
}
int
StrengthProbe::checkSanity()
{
int sanityRes;
utilFirst.setTo(B0);
utilSecond.setTo(B3);
if((sanityRes = comparer(&utilFirstP, &utilSecondP)) >= 0) {
return sanityRes*10 + 3;
}
utilSecond.setTo(B2);
if((sanityRes = comparer(&utilFirstP, &utilSecondP)) >= 0) {
return sanityRes*10 + 2;
}
utilSecond.setTo(B1);
if((sanityRes = comparer(&utilFirstP, &utilSecondP)) >= 0) {
return sanityRes*10 + 1;
}
utilFirst.setTo(B3);
utilSecond.setTo(B2);
if((sanityRes = comparer(&utilFirstP, &utilSecondP)) >= 0) {
return sanityRes*10 + 5;
}
utilSecond.setTo(B1);
if((sanityRes = comparer(&utilFirstP, &utilSecondP)) >= 0) {
return sanityRes*10 + 4;
}
utilFirst.setTo(B2);
if((sanityRes = comparer(&utilFirstP, &utilSecondP)) >= 0) {
return sanityRes*10 + 6;
}
utilFirst.setTo(B0);
if(distanceFromEmptyString(utilFirst) > UCOL_PRIMARY) {
return 1000;
}
utilFirst.setTo(B1);
if(distanceFromEmptyString(utilFirst) > UCOL_PRIMARY) {
return 1001;
}
utilFirst.setTo(B2);
if(distanceFromEmptyString(utilFirst) > UCOL_PRIMARY) {
return 1002;
}
utilFirst.setTo(B3);
if(distanceFromEmptyString(utilFirst) > UCOL_PRIMARY) {
return 1003;
}
return 0;
}
UBool
StrengthProbe::probePrefix(const Line &x, const Line &y, UChar first, UChar second) {
utilFirst.name[0] = first;
utilFirst.name[1] = SE;
u_strcpy(utilFirst.name+2, x.name);
utilFirst.name[x.len+2] = 0;
utilFirst.len = x.len+2;
utilSecond.name[0] = second;
utilSecond.name[1] = SE;
u_strcpy(utilSecond.name+2, y.name);
utilSecond.name[y.len+2] = 0;
utilSecond.len = y.len+2;
if(comparer(&utilFirstP, &utilSecondP) < 0) {
return TRUE;
} else {
return FALSE;
}
}
UBool
StrengthProbe::probeSuffix(const Line &x, const Line &y, UChar first, UChar second) {
u_strcpy(utilFirst.name, x.name);
utilFirst.name[x.len] = SE;
utilFirst.name[x.len+1] = first;
utilFirst.name[x.len+2] = 0;
utilFirst.len = x.len + 2;
u_strcpy(utilSecond.name, y.name);
utilSecond.name[y.len] = SE;
utilSecond.name[y.len+1] = second;
utilSecond.name[y.len+2] = 0;
utilSecond.len = y.len + 2;
if(comparer(&utilFirstP, &utilSecondP) < 0) {
return TRUE;
} else {
return FALSE;
}
}
UBool
StrengthProbe::probePrefixNoSep(const Line &x, const Line &y, UChar first, UChar second) {
utilFirst.name[0] = first;
u_strcpy(utilFirst.name+1, x.name);
utilFirst.name[x.len+1] = 0;
utilFirst.len = x.len + 1;
utilSecond.name[0] = second;
u_strcpy(utilSecond.name+1, y.name);
utilSecond.name[y.len+1] = 0;
utilSecond.len = y.len + 1;
if(comparer(&utilFirstP, &utilSecondP) < 0) {
return TRUE;
} else {
return FALSE;
}
}
UBool
StrengthProbe::probeSuffixNoSep(const Line &x, const Line &y, UChar first, UChar second) {
u_strcpy(utilFirst.name, x.name);
utilFirst.name[x.len] = first;
utilFirst.name[x.len+1] = 0;
utilFirst.len = x.len + 1;
u_strcpy(utilSecond.name, y.name);
utilSecond.name[y.len] = second;
utilSecond.name[y.len+1] = 0;
utilSecond.len = y.len + 1;
if(comparer(&utilFirstP, &utilSecondP) < 0) {
return TRUE;
} else {
return FALSE;
}
}
UColAttributeValue
StrengthProbe::getStrength(const Line &x, const Line &y) {
const Line *xp = &x;
const Line *yp = &y;
Line empty;
Line *emptyP = &empty;
if(comparer(&emptyP, &xp) == 0) {
return distanceFromEmptyString(y);
}
int32_t result = comparer(&xp, &yp);
if(result == 0) {
return UCOL_IDENTICAL;
} else if(result > 0) {
return UCOL_OFF; // bad situation
} else { // we need to probe strength
if(probeSuffix(x, y, B1, B0)) {
//if(probePrefix(x, y, B2, B0)) { // swamps secondary difference
return UCOL_PRIMARY;
} else if(probePrefix(x, y, B3, B0)) { // swamps tertiary difference
return UCOL_SECONDARY;
} else if(probeSuffix(x, y, B3, B0)) { // swamped by tertiary difference
return UCOL_TERTIARY;
} else if(!probePrefix(x, y, B3, B0)) {
return UCOL_QUATERNARY;
}
/*
//if(probeSuffix(x, y, B1, B0)) {
if(probePrefix(x, y, B2, B0)) { // swamps secondary difference
return UCOL_PRIMARY;
} else if(probePrefix(x, y, B3, B0)) { // swamps tertiary difference
return UCOL_SECONDARY;
} else if(probeSuffix(x, y, B3, B0)) { // swamped by tertiary difference
return UCOL_TERTIARY;
} else if(!probePrefix(x, y, B3, B0)) {
return UCOL_QUATERNARY;
}
*/
}
return UCOL_OFF; // bad
}
UColAttributeValue
StrengthProbe::getStrength(const UnicodeString &sx, const UnicodeString &sy) {
Line x(sx);
Line y(sy);
return getStrength(x, y);
}
int32_t
StrengthProbe::compare(const UnicodeString &sx, const UnicodeString &sy) {
Line x(sx);
Line y(sy);
const Line *xp = &x;
const Line *yp = &y;
return comparer(&xp, &yp);
}
int32_t
StrengthProbe::compare(const Line &x, const Line &y) {
const Line *xp = &x;
const Line *yp = &y;
return comparer(&xp, &yp);
}
UColAttributeValue
StrengthProbe::distanceFromEmptyString(const Line &x) {
if(x.name[0] == 0x30D) {
int32_t putBreakPointHere = 0;
}
Line empty;
Line *emptyP = &empty;
uint8_t buff[256];
getSortKey(empty.name, empty.len, buff, 256);
Line B0Line(B0);
Line *B0LineP = &B0Line;
const Line *xp = &x;
int32_t result = comparer(&emptyP, &xp);
if(result == 0) {
return UCOL_IDENTICAL;
} else if(result > 0) {
return UCOL_OFF;
}
result = comparer(&B0LineP, &xp);
if(result <= 0) {
return UCOL_PRIMARY;
}
Line sexb0(SE);
sexb0.append(x.name, x.len);
sexb0.append(B0);
Line seb0(SE);
seb0.append(B0);
uint8_t seb0K[256];
uint8_t sexb0K[256];
uint8_t seb2K[256];
uint8_t seb3K[256];
memset(seb0K, 0, 256);
memset(sexb0K, 0, 256);
memset(seb2K, 0, 256);
memset(seb3K, 0, 256);
getSortKey(seb0, seb0K, 256);
getSortKey(sexb0, sexb0K, 256);
if(compare(seb0, sexb0) <= 0) {
Line seb2(SE);
seb2.append(B2);
getSortKey(seb2, seb2K, 256);
result = compare(seb2, sexb0);
if((result <= 0 && !frenchSecondary) || (result >= 0 && frenchSecondary)) { // swamps tertiary difference
return UCOL_SECONDARY;
}
Line seb3(SE);
seb3.append(B3);
getSortKey(seb3, seb3K, 256);
if(compare(seb3, sexb0) < 0) {
return UCOL_TERTIARY;
}
return UCOL_QUATERNARY;
} else {
// if this was UCA, we would have a primary difference.
// however, this might not be so, since not everybody
// makes well formed CEs.
// in cs_CZ on linux, space is tertiary ignorable, but
// its quaternary level strength is lower than quad
// strengths for non-ignorables. oh well, more testing
// required
// I think that we can only have quaternary difference
// here (in addition to primary difference).
//if(!probePrefix(x, empty, B3, B0)) {
//return UCOL_QUATERNARY;
//} else {
return UCOL_PRIMARY;
//}
}
}
UColAttributeValue
StrengthProbe::distanceFromEmptyString(const UnicodeString &x) {
const Line xp(x);
return distanceFromEmptyString(xp);
}
UColAttributeValue
StrengthProbe::getPrefixedStrength(const Line &prefix, const Line &x, const Line &y) {
contractionUtilFirst.setToConcat(&prefix, &x);
contractionUtilSecond.setToConcat(&prefix, &y);
return getStrength(contractionUtilFirst, contractionUtilSecond);
}
StrengthProbe::StrengthProbe(const StrengthProbe &that) {
*this = that;
}
StrengthProbe &
StrengthProbe::operator=(const StrengthProbe &that) {
if(this != &that) {
B0 = that.B0;
B1 = that.B1;
B2 = that.B2;
B3 = that.B3;
SE = that.SE;
frenchSecondary = that.frenchSecondary;
comparer = that.comparer;
skgetter = that.skgetter;
utilFirstP = &utilFirst;
utilSecondP = &utilSecond;
}
return *this;
}
UBool
StrengthProbe::isFrenchSecondary(UErrorCode &status) {
utilFirst.setTo(B0);
utilFirst.append(SE);
utilFirst.append(B2);
utilSecond.setTo(B2);
utilSecond.append(SE);
utilSecond.append(B0);
int32_t result = compare(utilFirst, utilSecond);
if(result < 0) {
return FALSE;
} else if(result > 0) {
frenchSecondary = TRUE;
return TRUE;
} else {
status = U_INTERNAL_PROGRAM_ERROR;
return FALSE;
}
}
UBool
StrengthProbe::isUpperFirst(UErrorCode &status) {
UChar i = 0;
int32_t result = 0;
int32_t upper = 0, lower = 0, equal = 0;
for(i = 0x41; i < 0x5B; i++) {
utilFirst.setTo(i);
utilSecond.setTo(i+0x20);
result = compare(utilFirst, utilSecond);
if(result < 0) {
upper++;
} else if(result > 0) {
lower++;
} else {
equal++;
}
}
if(lower == 0 && equal == 0) {
return TRUE;
}
if(upper == 0 && equal == 0) {
return FALSE;
}
status = U_INTERNAL_PROGRAM_ERROR;
return FALSE;
}

85
colprobe/strengthprobe.h Normal file
View file

@ -0,0 +1,85 @@
/*
*******************************************************************************
*
* Copyright (C) 2003, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
*
* File line.h
*
* Modification History:
*
* Date Name Description
* 07/07/2003 weiv Creation.
*******************************************************************************
*/
//
// class Line
//
// Each line from the source file (containing a name, presumably) gets
// one of these structs.
//
#ifndef COLPROBE_STRENGTHPROBE_H
#define COLPROBE_STRENGTHPROBE_H
#include "colprobe.h"
#include "line.h"
#include "unicode/uniset.h"
#include "unicode/usetiter.h"
class StrengthProbe {
public:
UChar SE;
UChar B0;
UChar B1;
UChar B2;
UChar B3;
private:
Line utilFirst;
Line utilSecond;
Line *utilFirstP;
Line *utilSecondP;
Line contractionUtilFirst;
Line contractionUtilSecond;
UBool probePrefix(const Line &x, const Line &y, UChar first, UChar second);
UBool probeSuffix(const Line &x, const Line &y, UChar first, UChar second);
UBool probePrefixNoSep(const Line &x, const Line &y, UChar first, UChar second);
UBool probeSuffixNoSep(const Line &x, const Line &y, UChar first, UChar second);
UBool frenchSecondary;
public:
CompareFn comparer;
GetSortKeyFn skgetter;
StrengthProbe() {};
StrengthProbe(CompareFn comparer, GetSortKeyFn getter, UChar SE = 0x0030, UChar B0 = 0x0061, UChar B1 = 0x0062, UChar B2 = 0x00E1, UChar B3 = 0x0041); //, UChar LB = 0x0039, UChar UB = 0xfa29);
int setProbeChars(UChar B0, UChar B1, UChar B2, UChar B3);
int checkSanity();
StrengthProbe(const StrengthProbe &that);
StrengthProbe &operator=(const StrengthProbe &that);
UColAttributeValue getStrength(const Line &x, const Line &y);
UColAttributeValue getStrength(const UnicodeString &x, const UnicodeString &y);
UColAttributeValue getPrefixedStrength(const Line &prefix, const Line &x, const Line &y);
int32_t compare(const UnicodeString &x, const UnicodeString &y);
int32_t compare(const Line &x, const Line &y);
UColAttributeValue distanceFromEmptyString(const Line &x);
UColAttributeValue distanceFromEmptyString(const UnicodeString &x);
UBool isFrenchSecondary(UErrorCode &status);
UBool isUpperFirst(UErrorCode &status);
int getSortKey(const Line &l, uint8_t *buffer, int32_t buffCap) {
return skgetter(l.name, l.len, buffer, buffCap);
};
int getSortKey(UChar *string, int32_t sLen, uint8_t *buffer, int32_t buffCap) {
return skgetter(string, sLen, buffer, buffCap);
};
};
#endif //#ifndef COLPROBE_STRENGTHPROBE_H

16
colprobe/tableStarter.pl Executable file
View file

@ -0,0 +1,16 @@
#!/usr/bin/perl -w
use strict;
my $localeMinusA = `cat /home/weiv/src/icu/source/extra/colprobe/locale.txt`;
my @locales = split(/\n/, $localeMinusA);
my $locale;
my $command;
foreach $locale (@locales) {
if($locale =~ /_/ && !($locale =~ /^#/)) {
$command = "/home/weiv/src/icu/source/extra/colprobe/doComparisonTable.pl $locale";
print "$command\n";
`$command`;
}
}

View file

@ -0,0 +1,8 @@
#include "targetsetgenerator.h"
TargetSetGenerator::TargetSetGenerator(UnicodeSet &startingSet, CompareFn comparer) :
comparer(comparer),
set(startingSet)
{
addAll(startingSet);
}

View file

@ -0,0 +1,15 @@
#ifndef TARGETSETGENERATOR_H
#define TARGETSETGENERATOR_H
#include "colprobe.h"
#include "unicode/uniset.h"
class TargetSetGenerator : public UnicodeSet {
public:
TargetSetGenerator(UnicodeSet &startingSet, CompareFn comparer);
private:
CompareFn comparer;
UnicodeSet set;
};
#endif

48
colprobe/template Normal file
View file

@ -0,0 +1,48 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>$locale</title>
<style>
<!--
table { border-spacing: 0; border-collapse: collapse; width: 100%;
border: 1px solid black }
td, th { width: 10%; border-spacing: 0; border-collapse: collapse; color: black;
vertical-align: top; border: 1px solid black }
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<p><b><font color="#FF0000">Collation:</font> $locale <a href="http://oss.software.ibm.com/cgi-bin/icu/lx/en/?_=$locale">Demo</a>,
<a href="http://oss.software.ibm.com/cvs/icu/~checkout~/locale/all_diff_xml/comparison_charts.html">Cover
Page</a>, <a href="http://oss.software.ibm.com/cvs/icu/~checkout~/locale/all_diff_xml/index.html">Index</a></b></p>
<table>
<tr>
<th bgcolor="#AD989D">COMMON (<a href="http://oss.software.ibm.com/cvs/icu/~checkout~/locale/common/xml/$locale.xml">xml</a>)</th>
<th bgcolor="#1191F1">LINUX (<a href="http://oss.software.ibm.com/cvs/icu/~checkout~/locale/linux/xml/$locale.xml">xml</a>)</th>
<th bgcolor="#98FB98">WINDOWS (<a href="http://oss.software.ibm.com/cvs/icu/~checkout~/locale/windows/xml/$locale.xml">xml</a>)</th>
</tr>
<tr>
<td bgcolor="#AD989D">1.0-alpha</td>
<td bgcolor="#FF6633">1.0</td>
<td bgcolor="#FF6633">=</td>
<td bgcolor="#FF6633"><span title="006E {LATIN SMALL LETTER N}">&amp;n</span><br>
<span title="006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y}">&nbsp;&nbsp;&lt;&nbsp;ny</span><br>
<span title="006E 006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y} / 006E 0079 {LATIN SMALL LETTER N} {LATIN SMALL LETTER Y}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;nny&nbsp;/&nbsp;ny</span><br>
<span title="006E 0059 {LATIN SMALL LETTER N} {LATIN CAPITAL LETTER Y}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&lt;&nbsp;nY</span><br>
</td>
<td bgcolor="#FF6633">=</td>
<td bgcolor="#FFFF33">1.2</td>
<td bgcolor="#98FB98">Windows XP</td>
<td bgcolor="#FF6633">=</td>
<td bgcolor="#FF6633">=</td>
</tr>
</table>
</body>

49
colprobe/uniqueFiles.pl Executable file
View file

@ -0,0 +1,49 @@
#!/usr/bin/perl
use strict;
my $file;
my $secondfile;
my %secondfilelist;
my @same;
my %list;
my $samefile;
foreach $secondfile (@ARGV) {
$secondfilelist{$secondfile} = "";
}
foreach $file (sort keys(%secondfilelist)) {
if(exists $secondfilelist{$file}) {
delete $secondfilelist{$file};
foreach $secondfile (sort(keys %secondfilelist)) {
#print "diffing: $file and $secondfile\n";
if (!`diff $file $secondfile`) {
#print "$file and $secondfile are the same\n";
push @same, $secondfile;
}
}
# if ($#same > -1) {
print "Adding @same to $file\n";
$list{$file} = [@same] ;
foreach $samefile (@same) {
delete $secondfilelist{$samefile};
}
delete @same[0..$#same];
# }
}
}
my $i = 0;
my $j = 0;
foreach $file (sort( keys %list)) {
#print "$file -> "; #@{list{$file}}\n";
print "<$file> <$j>\n";
foreach $i ( 0 .. $#{ $list{$file} } ) {
#print "$list{$file}[$i] ";
print "<$list{$file}[$i]> <$j>\n ";
}
$j++;
}

116
colprobe/uprinter.cpp Normal file
View file

@ -0,0 +1,116 @@
/*
*******************************************************************************
*
* Copyright (C) 2003, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
*
* File uprinter.cpp
*
* Modification History:
*
* Date Name Description
* 03/18/2003 weiv Creation.
*******************************************************************************
*/
#include "uprinter.h"
UPrinter::UPrinter(FILE *file, const char *locale, const char *encoding, UBool transliterateNonPrintable) {
_on = TRUE;
out = u_finit(file, locale, encoding);
strcpy(_locale, locale);
if(transliterateNonPrintable) {
UErrorCode status = U_ZERO_ERROR;
UTransliterator *anyHex = utrans_open("[^\\u000d\\u000a\\u0009\\u0020-\\u007f] Any-Hex/Java", UTRANS_FORWARD, NULL, 0, NULL, &status);
u_fsettransliterator(out, U_WRITE, anyHex, &status);
}
};
UPrinter::UPrinter(const char *name, const char *locale, const char *encoding, UTransliterator *trans, UBool transliterateNonPrintable) {
_on = TRUE;
out = u_fopen(name, "wb", locale, encoding);
u_fputc(0xFEFF, out); // emit a BOM
strcpy(_locale, locale);
if(transliterateNonPrintable) {
UErrorCode status = U_ZERO_ERROR;
if(trans == NULL) {
UTransliterator *anyHex = utrans_open("[^\\u000d\\u000a\\u0009\\u0020-\\u007f] Any-Hex/Java", UTRANS_FORWARD, NULL, 0, NULL, &status);
u_fsettransliterator(out, U_WRITE, anyHex, &status);
} else {
u_fsettransliterator(out, U_WRITE, trans, &status);
}
}
};
UPrinter::~UPrinter() {
u_fclose(out);
}
void
UPrinter::log(const UnicodeString &string, UBool nl) {
if(_on) {
log(((UnicodeString)string).getTerminatedBuffer(), nl);
}
}
void
UPrinter::log(const UChar *string, UBool nl) {
if(_on) {
u_fprintf(out, "%S", string);
if(nl) {
u_fprintf(out, "\n");
}
u_fflush(out);
}
}
/*
void
UPrinter::log(const char *string, UBool nl) {
if(_on) {
u_fprintf(out, "%s", string);
if(nl) {
u_fprintf(out, "\n");
}
}
}
*/
void
UPrinter::log(const Line *line, UBool nl) {
if(_on) {
log(line->name);
if(line->expLen) {
log("/");
log(line->expansionString);
}
if(nl) {
u_fprintf(out, "\n");
u_fflush(out);
}
}
}
void UPrinter::log(const char *fmt, ...)
{
UChar buffer[4000];
va_list ap;
va_start(ap, fmt);
/* sprintf it just to make sure that the information is valid */
u_vsprintf(buffer, _locale, fmt, ap);
va_end(ap);
if( _on ) {
log(buffer);
}
}
void
UPrinter::on(void) {
_on = TRUE;
}
void
UPrinter::off(void) {
_on = FALSE;
}

51
colprobe/uprinter.h Normal file
View file

@ -0,0 +1,51 @@
/*
*******************************************************************************
*
* Copyright (C) 2003, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
*
* File uprinter.h
*
* Modification History:
*
* Date Name Description
* 03/18/2003 weiv Creation.
*******************************************************************************
*/
#ifndef COLPROBE_UPRINTER_H
#define COLPROBE_UPRINTER_H
#include "line.h"
#include "unicode/ustdio.h"
#include "unicode/unistr.h"
#include "unicode/ustring.h"
class UPrinter {
UFILE *out;
UChar buffer[256];
UBool _on;
char _locale[256];
public:
UPrinter(FILE *file, const char *locale, const char *encoding, UBool transliterateNonPrintable=TRUE);
UPrinter(const char *name, const char *locale, const char *encoding, UTransliterator *trans, UBool transliterateNonPrintable);
~UPrinter();
void log(const UnicodeString &string, UBool nl = FALSE);
void log(const UChar *string, UBool nl = FALSE);
//void log(const char *string, UBool nl = FALSE);
void log(const Line *line, UBool nl = FALSE);
void log(const char *fmt, ...);
void off(void);
void on(void);
UBool isOn(void) {
return _on;
};
};
#endif // #ifndef COLPROBE_UPRINTER_H

30
colprobe/winGenCollData.pl Executable file
View file

@ -0,0 +1,30 @@
#!/usr/bin/perl -w
use strict;
#my $localeMinusA = `locale -a`;
my $localeMinusA = `cat locale.txt`;
my @locales = split(/\r\n/, $localeMinusA);
my $locale;
my $command;
#my $commandPath = "~/src/icu/source/extra/colprobe/";
my $commandPath = "c:/dev/0_icu/source/extra/colprobe/release/";
my $platform = $ARGV[0];
mkdir $platform."logs";
mkdir $platform;
foreach $locale (@locales) {
$_ = $locale;
chomp;
if(!/^\#/) { # && /\_/) {
$command = $commandPath."colprobe --platform $platform --ref $platform --output resb $locale >$platform"."logs/$locale"."_log.txt 2>&1";
print "$command\n";
`$command`;
}
}

6
currency/.classpath Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="out/bin"/>
</classpath>

17
currency/.project Normal file
View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>currency-numeric</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View file

@ -0,0 +1,3 @@
#Fri Jan 20 00:09:53 EST 2012
eclipse.preferences.version=1
encoding/<project>=UTF-8

View file

@ -0,0 +1,347 @@
#Thu Jan 19 10:20:40 EST 2012
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
org.eclipse.jdt.core.compiler.problem.deadCode=warning
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.nullReference=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.6
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=120
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_empty_lines=false
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.jdt.core.formatter.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=120
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

File diff suppressed because one or more lines are too long

76
currency/build.xml Normal file
View file

@ -0,0 +1,76 @@
<!--
*******************************************************************************
* Copyright (C) 2012-2013, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
-->
<project name="currency-numeric" default="build" basedir=".">
<property name="out.dir" value="${basedir}/out"/>
<property name="src.dir" value="${basedir}/src"/>
<property name="classes.dir" value="${out.dir}/bin"/>
<property name="res.dir" value="${out.dir}/res"/>
<property name="xml.dir" value="${out.dir}/xml"/>
<property name="base.url" value="http://www.currency-iso.org/dam/downloads/"/>
<property name="current.xml" value="table_a1.xml"/>
<property name="historic.xml" value="table_a3.xml"/>
<target name="build" depends="check, resource" description="Verify ICU's local data and generate ISO 4217 alpha-numeric code mapping data resource"/>
<target name="classes" description="Build the Java tool">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}"
target="1.6" encoding="UTF-8" includeAntRuntime="false"/>
</target>
<target name="_checkLocalXml">
<condition property="isLocalXml">
<and>
<available file="${basedir}/${current.xml}"/>
<available file="${basedir}/${historic.xml}"/>
</and>
</condition>
</target>
<target name="_localXml" depends="_checkLocalXml" if="isLocalXml">
<echo message="Using local ISO 4217 XML data files"/>
<copy file="${current.xml}" todir="${xml.dir}"/>
<copy file="${historic.xml}" todir="${xml.dir}"/>
</target>
<target name="_downloadXml" unless="isLocalXml">
<echo message="Downloading ISO 4217 XML data files"/>
<mkdir dir="${xml.dir}"/>
<get src="${base.url}${current.xml}" dest="${xml.dir}"/>
<get src="${base.url}${historic.xml}" dest="${xml.dir}"/>
</target>
<target name="xmlData" depends="_localXml, _downloadXml" description="Prepare necessary ISO 4217 XML data files">
</target>
<target name="check" depends="classes, xmlData" description="Verify if ICU's local mapping data is synchronized with the XML data">
<java classname="com.ibm.icu.dev.tool.currency.Main"
classpath="${classes.dir}"
failonerror="true">
<arg value="check"/>
<arg value="${xml.dir}/${current.xml}"/>
<arg value="${xml.dir}/${historic.xml}"/>
</java>
</target>
<target name="resource" depends="classes" description="Build ISO 4217 alpha-numeric code mapping data resource">
<mkdir dir="${res.dir}"/>
<java classname="com.ibm.icu.dev.tool.currency.Main"
classpath="${classes.dir}"
failonerror="true">
<arg value="build"/>
<arg value="${res.dir}"/>
</java>
<echo message="ISO 4217 numeric code mapping data was successfully created in ${res.dir}"/>
</target>
<target name="clean" description="Delete build outputs">
<delete dir="${out.dir}"/>
</target>
</project>

112
currency/readme.txt Normal file
View file

@ -0,0 +1,112 @@
*******************************************************************************
* Copyright (C) 2012-2013, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
[Overview]
This directory contains a tool used for maintaining ICU's ISO 4217 currency
code mapping data. ICU uses a resource generated by this tool for mapping
ISO 4217 currency alpha codes to numeric codes.
[Files]
package com.ibm.icu.dev.tool.currency
Main.java - The tool's entry point
NumericCodeData.java - The mapping data used by ICU
CurrencyDataParser.java - ISO 4217 XML data parser
CurrencyDataEntry.java - ISO 4217 XML data entry
[Details]
com.ibm.icu.dev.tool.NumericCodeData has String[][] CODE_MAP_DATA.
This array represents mappings between ISO 4217 alpha codes and
numeric codes. ICU's resource bundle currencyNumericCodes is generated
from the table.
ISO 4217 maintenance agency - SIX Interbank Clearing distributes
ISO 4217 code data in XML format. These files are found in
http://www.currency-iso.org/iso_index/iso_tables.htm. There are two
files that we're interested in.
- http://www.currency-iso.org/dl_iso_table_a1.xml
- http://www.currency-iso.org/dl_iso_tables_a3.xml
Table A.1 contains current currencies and funds and Table A.3 contains
historic denominations.
The tool supports 2 commands - check / resource.
1) check
This command compares the hardcoded mapping data in NumericCodeData.java
with the ISO 4217 XML data files side by side and check differences.
2) resource
This command writes out the hardcoded mapping data in NumericCodeData.java
in ICU resource bundle source format - currencyNumericCodes.txt.
[Release Tasks]
For each ICU release, we should check if the mapping data is up to date.
Prerequisites: Java 6+, ant
First, run the ant target "check". This ant target download XML files from
the SIX Interbank Clearing site and invoke the tool command "check".
When the target successfully finished, you should see the log like below:
----------------------------------------------------------------------------
C:\devtls\trunk\currency>ant check
Buildfile: C:\devtls\trunk\currency\build.xml
classes:
_checkLocalXml:
_localXml:
_downloadXml:
[echo] Downloading ISO 4217 XML data files
[get] Getting: http://www.currency-iso.org/dl_iso_table_a1.xml
[get] To: C:\devtls\trunk\currency\out\xml\dl_iso_table_a1.xml
[get] Getting: http://www.currency-iso.org/dl_iso_tables_a3.xml
[get] To: C:\devtls\trunk\currency\out\xml\dl_iso_tables_a3.xml
xmlData:
check:
[java] [OK] ICU data is synchronized with the reference data
BUILD SUCCESSFUL
Total time: 2 seconds
----------------------------------------------------------------------------
In this case, our data is synchronized with the latest XML data and you're done.
If the data is out of sync, you should see message like below:
----------------------------------------------------------------------------
check:
[java] Missing alpha code in ICU map [ZWR]
[java] Codes not found in the reference data: ZZZ
BUILD FAILED
C:\devtls\trunk\currency\build.xml:54: Java returned: 1
----------------------------------------------------------------------------
In this case, you have to update the hardcoded data in NumericCodeData.
You can either edit the table in NumericCodeData manually, or run the tool
command "print" and copy the output and paste it to the table.
Once you make sure "ant check" returns no errors, run "ant resource". This
target generate out/res/currencyNumericCodes.txt. The file should go to
<icu4c>/source/data/misc directory.
Note: The default ant target does both operation. Although it creates the
ICU resource file, you do not need to replace the one in ICU4C package with
the newly generated one if "check" successfully finished.

View file

@ -0,0 +1,141 @@
/*
*******************************************************************************
* Copyright (C) 2012, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.dev.tool.currency;
/**
* Currency data entry corresponding to the XML data distributed by SIX Interbank Clearing
* (The ISO 4217 maintenance agency).
*/
public class CurrencyDataEntry {
private String entity;
private String currency;
private String alphabeticCode;
private Integer numericCode;
private Integer minorUnit;
private String withdrawalDate;
private String remark;
private boolean historic;
private CurrencyDataEntry(String entity, String currency, String alphabeticCode, Integer numericCode, Integer minorUnit, String withdrawalDate, String remark, boolean historic) {
this.entity = entity;
this.currency = currency;
this.alphabeticCode = alphabeticCode;
this.numericCode = numericCode;
this.minorUnit = minorUnit;
this.withdrawalDate = withdrawalDate;
this.remark = remark;
this.historic = historic;
}
public String entity() {
return entity;
}
public String currency() {
return currency;
}
public String alphabeticCode() {
return alphabeticCode;
}
public Integer numericCode() {
return numericCode;
}
public Integer minorUnit() {
return minorUnit;
}
public String withdrawalDate() {
return withdrawalDate;
}
public String remark() {
return remark;
}
public boolean historic() {
return historic;
}
public static class Builder {
private String entity_;
private String currency_;
private String alphabeticCode_;
private Integer numericCode_;
private Integer minorUnit_;
private String withdrawalDate_;
private String remark_;
private boolean historic_ = false;
public Builder setEntity(String entity) {
entity_ = entity;
return this;
}
public Builder setCurrency(String currency) {
currency_ = currency;
return this;
}
public Builder setAlphabeticCode(String alphabeticCode) {
alphabeticCode_ = alphabeticCode;
return this;
}
public Builder setNumericCode(String numericCode) {
try {
numericCode_ = Integer.parseInt(numericCode);
} catch (NumberFormatException e) {
// ignore
}
return this;
}
public Builder setMinorUnit(String minorUnit) {
try {
minorUnit_ = Integer.parseInt(minorUnit);
} catch (NumberFormatException e) {
// ignore
}
return this;
}
public Builder setWithdrawalDate(String withdrawalDate) {
withdrawalDate_ = withdrawalDate;
return this;
}
public Builder setRemark(String remark) {
remark_ = remark;
return this;
}
public Builder setHistoric() {
historic_ = true;
return this;
}
public CurrencyDataEntry build() {
return new CurrencyDataEntry(entity_, currency_, alphabeticCode_, numericCode_, minorUnit_, withdrawalDate_, remark_, historic_);
}
public Builder reset() {
entity_ = null;
currency_ = null;
alphabeticCode_ = null;
numericCode_ = null;
minorUnit_ = null;
withdrawalDate_ = null;
remark_ = null;
historic_ = false;
return this;
}
}
}

View file

@ -0,0 +1,145 @@
/*
*******************************************************************************
* Copyright (C) 2012-2013, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.dev.tool.currency;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collection;
import java.util.LinkedList;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import com.ibm.icu.dev.tool.currency.CurrencyDataEntry.Builder;
/**
* Parser for ISO 4217 data file in XML format distributed by SIX Interbank Clearing
* (The ISO 4217 maintenance agency).
*/
public class CurrencyDataParser {
public static Collection<CurrencyDataEntry> parse(File dataFile, boolean historic) throws IOException {
Collection<CurrencyDataEntry> result = null;
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser;
parser = factory.newSAXParser();
Handler handler = new Handler(historic);
parser.parse(new FileInputStream(dataFile), handler);
result = handler.getParsedISOCurrencies();
} catch (SAXException e) {
throw new RuntimeException(e);
} catch (ParserConfigurationException e) {
throw new RuntimeException(e);
}
return result;
}
private static class Handler extends DefaultHandler {
private enum ElementType {
ENTITY("CtryNm"),
CURRENCY("CcyNm"),
ALPHABETIC_CODE("Ccy"),
NUMERIC_CODE("CcyNbr"),
MINOR_UNIT("CcyMnrUnts"),
WITHDRAWAL_DATE("WthdrwlDt"),
REMARK("Remark"), // obsolete
OTHER("Other"); // place holder
private String elemName;
ElementType(String elemName) {
this.elemName = elemName;
}
public static ElementType forName(String name) {
for (ElementType type : values()) {
if (type.elemName.equals(name)) {
return type;
}
}
return OTHER;
}
};
Collection<CurrencyDataEntry> isoCurrencies = new LinkedList<CurrencyDataEntry>();
ElementType elem = ElementType.OTHER;
Builder currBld = new Builder();
private final boolean historic;
private final String currElemName;
public Handler(boolean historic) {
this.historic = historic;
currElemName = historic ? "HstrcCcyNtry" : "CcyNtry";
}
public Collection<CurrencyDataEntry> getParsedISOCurrencies() {
return isoCurrencies;
}
public void startElement(String uri, String localName, String qName, Attributes attributes) {
if (qName.equals(currElemName)) {
currBld.reset();
elem = ElementType.OTHER;
} else {
try {
elem = ElementType.forName(qName);
} catch (IllegalArgumentException e) {
elem = ElementType.OTHER;
}
}
}
public void endElement(String uri, String localName, String qName) {
// emit a currency data
if (qName.equals(currElemName)) {
if (historic) {
currBld.setHistoric();
}
isoCurrencies.add(currBld.build());
currBld.reset();
}
elem = ElementType.OTHER;
}
public void characters(char[] ch, int start, int length) {
switch (elem) {
case ENTITY:
currBld.setEntity(new String(ch, start, length).trim());
break;
case CURRENCY:
currBld.setCurrency(new String(ch, start, length).trim());
break;
case ALPHABETIC_CODE:
currBld.setAlphabeticCode(new String(ch, start, length).trim());
break;
case NUMERIC_CODE:
currBld.setNumericCode(new String(ch, start, length).trim());
break;
case MINOR_UNIT:
currBld.setMinorUnit(new String(ch, start, length).trim());
break;
case WITHDRAWAL_DATE:
currBld.setWithdrawalDate(new String(ch, start, length).trim());
break;
case REMARK:
currBld.setRemark(new String(ch, start, length).trim());
break;
default:
// NOOP
break;
}
}
}
}

View file

@ -0,0 +1,181 @@
/*
*******************************************************************************
* Copyright (C) 2012, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.dev.tool.currency;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Collection;
import java.util.Map.Entry;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeSet;
/**
* The tool used for ISO 4217 alpha3-numeric3 code mapping data maintenance.
* This code is used for synchronizing ICU alpha3-numeric3 mapping data with
* the data distributed by SIX Interbank Clearing.
*/
public class Main {
private enum Command {
CHECK,
PRINT,
BUILD,
};
private static final String RESNAME = "currencyNumericCodes";
public static void main(String... args) {
if (args.length == 0) {
printUsage();
System.exit(1);
}
Command cmd = null;
// 1st argument must be command
if (args[0].equalsIgnoreCase(Command.CHECK.name())) {
if (args.length == 3) {
cmd = Command.CHECK;
}
} else if (args[0].equalsIgnoreCase(Command.PRINT.name())) {
if (args.length == 3) {
cmd = Command.PRINT;
}
} else if (args[0].equalsIgnoreCase(Command.BUILD.name())) {
if (args.length == 2) {
cmd = Command.BUILD;
}
}
if (cmd == null) {
printUsage();
System.exit(1);
}
int status = 0;
if (cmd == Command.BUILD) {
File outfile = new File(args[1], RESNAME + ".txt");
try {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(outfile), "UTF-8");
NumericCodeData.getDefaultInstance().writeResource(osw, RESNAME);
} catch (IOException e) {
e.printStackTrace();
status = 1;
}
} else {
// 2nd argument is current data xml file
// 3rd argument is historic data xml file
File currentXml = new File(args[1]);
File historicXml = new File(args[2]);
Collection<CurrencyDataEntry> currentDataEntries = null;
Collection<CurrencyDataEntry> historicDataEntries = null;
try {
currentDataEntries = CurrencyDataParser.parse(currentXml, false);
historicDataEntries = CurrencyDataParser.parse(historicXml, true);
} catch (IOException e) {
e.printStackTrace();
status = 1;
}
if (status == 0) {
NumericCodeData numCodeData = NumericCodeData.createInstance(currentDataEntries);
numCodeData.merge(NumericCodeData.createInstance(historicDataEntries));
if (cmd == Command.PRINT) {
numCodeData.printArray();
} else {
assert(cmd == Command.CHECK);
boolean isOK = checkData(numCodeData);
if (isOK) {
System.out.println("[OK] ICU data is synchronized with the reference data");
} else {
status = 1;
}
}
}
}
System.exit(status);
}
private static void printUsage() {
System.out.println("[Usage]");
System.out.println("");
System.out.println(" 1) java com.ibm.icu.dev.tool.currency.Main check <currentXML> <historicXML>");
System.out.println("");
System.out.println(" Verifies the ICU data (table in NumericCodeData) with the reference data.");
System.out.println("");
System.out.println(" Argument(s):");
System.out.println(" <currentXML> - Current currencies & funds data (Table A.1) in XML format");
System.out.println(" <historicXML> - Historic denominations data (Table A.3) in XML format");
System.out.println("");
System.out.println(" 2) java com.ibm.icu.dev.tool.currency.Main print <currentXML> <historicXML>");
System.out.println("");
System.out.println(" Prints out the alpha-numeric code mapping imported from the reference data.");
System.out.println("");
System.out.println(" Argument(s):");
System.out.println(" <currentXML> - Current currencies & funds data (Table A.1) in XML format");
System.out.println(" <historicXML> - Historic denominations data (Table A.3) in XML format");
System.out.println("");
System.out.println(" 3) java com.ibm.icu.dev.tool.currency.Main build <outtxt>");
System.out.println("");
System.out.println(" Writes out the alpha-numeric in NumericCodeData into ICU resource bundle source");
System.out.println(" (.txt) format.");
System.out.println("");
System.out.println(" Argument(s):");
System.out.println(" <outdir> - Output directory of the ICU resource bundle source (.txt) format");
System.out.println("");
System.out.println("[Note]");
System.out.println(" Reference XML files are distributed by the ISO 4217 maintenance agency at");
System.out.println(" [http://www.currency-iso.org/iso_index/iso_tables.htm].");
}
private static boolean checkData(NumericCodeData refData) {
boolean isOK = true;
SortedMap<String, String> icuMap = NumericCodeData.getDefaultInstance().getAlphaNumericCodeMap();
SortedMap<String, String> refMap = refData.getAlphaNumericCodeMap();
for (Entry<String, String> refEntry : refMap.entrySet()) {
String refAlpha = refEntry.getKey();
String refNumeric = refEntry.getValue();
String icuNumeric = icuMap.get(refAlpha);
if (icuNumeric == null) {
System.out.println("Missing alpha code in ICU map [" + refAlpha + "]");
isOK = false;
} else if (!icuNumeric.equals(refNumeric)) {
System.out.println("Numeric code mismatch [" + refAlpha + "] ICU=" + icuNumeric + " - Reference=" + refNumeric);
isOK = false;
}
}
Set<String> icuKeySet = icuMap.keySet();
Set<String> refKeySet = refMap.keySet();
if (!refKeySet.containsAll(icuKeySet)) {
isOK = false;
Set<String> tmp = new TreeSet<String>(icuKeySet);
tmp.removeAll(refKeySet);
StringBuilder buf = new StringBuilder();
for (String alpha : tmp) {
if (buf.length() != 0) {
buf.append(", ");
}
buf.append(alpha);
}
System.out.println("Codes not found in the reference data: " + buf);
}
return isOK;
}
}

View file

@ -0,0 +1,375 @@
/*
*******************************************************************************
* Copyright (C) 2012-2013, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.dev.tool.currency;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Collection;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.Map.Entry;
import java.util.SortedMap;
import java.util.TimeZone;
import java.util.TreeMap;
/**
* Container of ISO 4217 alpha3 - numeric3 code mapping data
*/
public class NumericCodeData {
private SortedMap<String, String> _codeMap;
private NumericCodeData(SortedMap<String, String> codeMap) {
_codeMap = codeMap;
}
public static NumericCodeData getDefaultInstance() {
SortedMap<String, String> map = new TreeMap<String, String>();
for (String[] dataEntry : CODE_MAP_DATA) {
map.put(dataEntry[0], dataEntry[1]);
}
return new NumericCodeData(map);
}
public static NumericCodeData createInstance(Collection<CurrencyDataEntry> dataEntries) {
SortedMap<String, String> map = new TreeMap<String, String>();
for (CurrencyDataEntry dataEntry : dataEntries) {
String alphaCode = dataEntry.alphabeticCode();
Integer numCode = dataEntry.numericCode();
if (alphaCode == null || numCode == null) {
continue;
}
map.put(alphaCode, String.format("%03d", numCode));
}
return new NumericCodeData(map);
}
public NumericCodeData merge(NumericCodeData anotherData) {
SortedMap<String, String> codeMap = anotherData.getAlphaNumericCodeMap();
for (Entry<String, String> codeMapEntry : codeMap.entrySet()) {
String alphaCode = codeMapEntry.getKey();
String numCode = codeMapEntry.getValue();
if (!_codeMap.containsKey(alphaCode)) {
_codeMap.put(alphaCode, numCode);
} else {
String existingValue = _codeMap.get(alphaCode);
if (!existingValue.equals(numCode)) {
throw new RuntimeException("Duplicated definition for " + alphaCode + ": value=" + existingValue + "/another value=" + numCode);
}
}
}
return this;
}
public SortedMap<String, String> getAlphaNumericCodeMap() {
return Collections.unmodifiableSortedMap(_codeMap);
}
public void printArray() {
for (Entry<String, String> entry : getAlphaNumericCodeMap().entrySet()) {
System.out.println(" {\"" + entry.getKey() + "\", \"" + entry.getValue() + "\"},");
}
}
public void writeResource(OutputStreamWriter osw, String resName) throws IOException {
GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
PrintWriter pw = new PrintWriter(osw, true);
// Header
pw.println("//---------------------------------------------------------");
pw.println(String.format("// Copyright (C) %1$tY, International Business Machines", cal));
pw.println("// Corporation and others. All Rights Reserved.");
pw.println("//---------------------------------------------------------");
pw.println("// Build tool: com.ibm.icu.dev.tool.currency.NumericCodeData");
pw.println(String.format("// Build date: %1$tFT%1$tTZ", cal));
pw.println("//---------------------------------------------------------");
pw.println("// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<");
pw.println("// >> !!! >>> DO NOT EDIT <<< !!! <<");
pw.println("//---------------------------------------------------------");
pw.println("");
// Resource root
pw.println(resName + ":table(nofallback){");
// Map data
pw.println(" codeMap{");
for (Entry<String, String> mapEntry : _codeMap.entrySet()) {
String alphaCode = mapEntry.getKey();
int numericCodeVal = Integer.parseInt(mapEntry.getValue());
pw.println(String.format(" %1$s:int{%2$d}", alphaCode, numericCodeVal));
}
pw.println(" }");
pw.println("}");
}
private static final String[][] CODE_MAP_DATA = {
{"ADP", "020"},
{"AED", "784"},
{"AFA", "004"},
{"AFN", "971"},
{"ALL", "008"},
{"AMD", "051"},
{"ANG", "532"},
{"AOA", "973"},
{"AON", "024"},
{"AOR", "982"},
{"ARA", "032"},
{"ARP", "032"},
{"ARS", "032"},
{"ATS", "040"},
{"AUD", "036"},
{"AWG", "533"},
{"AYM", "945"},
{"AZM", "031"},
{"AZN", "944"},
{"BAD", "070"},
{"BAM", "977"},
{"BBD", "052"},
{"BDT", "050"},
{"BEC", "993"},
{"BEF", "056"},
{"BEL", "992"},
{"BGL", "100"},
{"BGN", "975"},
{"BHD", "048"},
{"BIF", "108"},
{"BMD", "060"},
{"BND", "096"},
{"BOB", "068"},
{"BOV", "984"},
{"BRC", "076"},
{"BRE", "076"},
{"BRL", "986"},
{"BRN", "076"},
{"BRR", "987"},
{"BSD", "044"},
{"BTN", "064"},
{"BWP", "072"},
{"BYB", "112"},
{"BYR", "974"},
{"BZD", "084"},
{"CAD", "124"},
{"CDF", "976"},
{"CHC", "948"},
{"CHE", "947"},
{"CHF", "756"},
{"CHW", "948"},
{"CLF", "990"},
{"CLP", "152"},
{"CNY", "156"},
{"COP", "170"},
{"COU", "970"},
{"CRC", "188"},
{"CSD", "891"},
{"CSK", "200"},
{"CUC", "931"},
{"CUP", "192"},
{"CVE", "132"},
{"CYP", "196"},
{"CZK", "203"},
{"DDM", "278"},
{"DEM", "276"},
{"DJF", "262"},
{"DKK", "208"},
{"DOP", "214"},
{"DZD", "012"},
{"ECS", "218"},
{"ECV", "983"},
{"EEK", "233"},
{"EGP", "818"},
{"ERN", "232"},
{"ESA", "996"},
{"ESB", "995"},
{"ESP", "724"},
{"ETB", "230"},
{"EUR", "978"},
{"FIM", "246"},
{"FJD", "242"},
{"FKP", "238"},
{"FRF", "250"},
{"GBP", "826"},
{"GEK", "268"},
{"GEL", "981"},
{"GHC", "288"},
{"GHP", "939"},
{"GHS", "936"},
{"GIP", "292"},
{"GMD", "270"},
{"GNF", "324"},
{"GQE", "226"},
{"GRD", "300"},
{"GTQ", "320"},
{"GWP", "624"},
{"GYD", "328"},
{"HKD", "344"},
{"HNL", "340"},
{"HRD", "191"},
{"HRK", "191"},
{"HTG", "332"},
{"HUF", "348"},
{"IDR", "360"},
{"IEP", "372"},
{"ILS", "376"},
{"INR", "356"},
{"IQD", "368"},
{"IRR", "364"},
{"ISK", "352"},
{"ITL", "380"},
{"JMD", "388"},
{"JOD", "400"},
{"JPY", "392"},
{"KES", "404"},
{"KGS", "417"},
{"KHR", "116"},
{"KMF", "174"},
{"KPW", "408"},
{"KRW", "410"},
{"KWD", "414"},
{"KYD", "136"},
{"KZT", "398"},
{"LAK", "418"},
{"LBP", "422"},
{"LKR", "144"},
{"LRD", "430"},
{"LSL", "426"},
{"LTL", "440"},
{"LTT", "440"},
{"LUC", "989"},
{"LUF", "442"},
{"LUL", "988"},
{"LVL", "428"},
{"LVR", "428"},
{"LYD", "434"},
{"MAD", "504"},
{"MDL", "498"},
{"MGA", "969"},
{"MGF", "450"},
{"MKD", "807"},
{"MLF", "466"},
{"MMK", "104"},
{"MNT", "496"},
{"MOP", "446"},
{"MRO", "478"},
{"MTL", "470"},
{"MUR", "480"},
{"MVR", "462"},
{"MWK", "454"},
{"MXN", "484"},
{"MXV", "979"},
{"MYR", "458"},
{"MZM", "508"},
{"MZN", "943"},
{"NAD", "516"},
{"NGN", "566"},
{"NIO", "558"},
{"NLG", "528"},
{"NOK", "578"},
{"NPR", "524"},
{"NZD", "554"},
{"OMR", "512"},
{"PAB", "590"},
{"PEI", "604"},
{"PEN", "604"},
{"PES", "604"},
{"PGK", "598"},
{"PHP", "608"},
{"PKR", "586"},
{"PLN", "985"},
{"PLZ", "616"},
{"PTE", "620"},
{"PYG", "600"},
{"QAR", "634"},
{"ROL", "642"},
{"RON", "946"},
{"RSD", "941"},
{"RUB", "643"},
{"RUR", "810"},
{"RWF", "646"},
{"SAR", "682"},
{"SBD", "090"},
{"SCR", "690"},
{"SDD", "736"},
{"SDG", "938"},
{"SEK", "752"},
{"SGD", "702"},
{"SHP", "654"},
{"SIT", "705"},
{"SKK", "703"},
{"SLL", "694"},
{"SOS", "706"},
{"SRD", "968"},
{"SRG", "740"},
{"SSP", "728"},
{"STD", "678"},
{"SVC", "222"},
{"SYP", "760"},
{"SZL", "748"},
{"THB", "764"},
{"TJR", "762"},
{"TJS", "972"},
{"TMM", "795"},
{"TMT", "934"},
{"TND", "788"},
{"TOP", "776"},
{"TPE", "626"},
{"TRL", "792"},
{"TRY", "949"},
{"TTD", "780"},
{"TWD", "901"},
{"TZS", "834"},
{"UAH", "980"},
{"UAK", "804"},
{"UGX", "800"},
{"USD", "840"},
{"USN", "997"},
{"USS", "998"},
{"UYI", "940"},
{"UYU", "858"},
{"UZS", "860"},
{"VEB", "862"},
{"VEF", "937"},
{"VND", "704"},
{"VUV", "548"},
{"WST", "882"},
{"XAF", "950"},
{"XAG", "961"},
{"XAU", "959"},
{"XBA", "955"},
{"XBB", "956"},
{"XBC", "957"},
{"XBD", "958"},
{"XCD", "951"},
{"XDR", "960"},
{"XEU", "954"},
{"XOF", "952"},
{"XPD", "964"},
{"XPF", "953"},
{"XPT", "962"},
{"XSU", "994"},
{"XTS", "963"},
{"XUA", "965"},
{"XXX", "999"},
{"YDD", "720"},
{"YER", "886"},
{"YUM", "891"},
{"YUN", "890"},
{"ZAL", "991"},
{"ZAR", "710"},
{"ZMK", "894"},
{"ZMW", "967"},
{"ZRN", "180"},
{"ZRZ", "180"},
{"ZWD", "716"},
{"ZWL", "932"},
{"ZWN", "942"},
{"ZWR", "935"},
};
}

3
multi/Makefile Normal file
View file

@ -0,0 +1,3 @@
# Copyright (c) 2008-2009 IBM Corp. and Others. All Rights Reserved
clean:
-rm -rf ./tmp

104
multi/c/Makefile Normal file
View file

@ -0,0 +1,104 @@
# Copyright (c) 2009-2013 IBM Corp. and Others. All Rights Reserved
# multicu/c makefile
all:
@echo To build all ICUs: $(MAKE) all-icus
@echo "Using the -k option may be a good idea if some are not building properly."
@echo ICUVERS: $(ICUVERS)
info:
#ICUCONF=sh ./configure
ICUCONF=$(MULTICU_ROOT)/c/superconf.sh
DOT=$(shell pwd)
MULTICU_ROOT=$(DOT)/..
include $(MULTICU_ROOT)/common/Makefile-multi.inc
-include Makefile.local
ICUVERS:=$(shell cd $(ICUS); ls icu4c*.tgz | cut -d- -f2 | sort | uniq | fgrep -v -f $(MULTICU_ROOT)/c/old-icu.txt)
ICU4JVERS:=$(shell cd $(ICUS); ls icu4j*.jar | cut -d- -f2 | cut -d. -f1 | sort | uniq | fgrep -v -f $(MULTICU_ROOT)/j/old-icu4j.txt)
BLD=$(C_BLD)
INS=$(C_INS)
SRC=$(C_SRC)
ALLICUS=$(ICUVERS:%=$(BLD)/%/$(S_BLD)) $(ICUVERS:%=$(BLD)/r%/$(S_BLD))
RICUS=$(ICUVERS:%=$(INS)/r%/$(S_INS))
IICUS=$(ICUVERS:%=$(INS)/%/$(S_INS)) $(RICUS)
APRECIOUS=$(ICUVERS:%=$(BLD)/%/$(S_SRC)) $(ICUVERS:%=$(BLD)/r%/$(S_SRC)) $(ICUVERS:%=$(BLD)/%/$(S_BLD)) $(ICUVERS:%=$(INS)/%/$(S_INS)) $(ICUVERS:%=$(BLD)/r%/$(S_BLD)) $(ICUVERS:%=$(INS)/r%/$(S_INS))
.PRECIOUS: $(APRECIOUS)
tehprecious:
echo $(APRECIOUS)
$(M_TMP) $(BLD) $(INS):
mkdir $(M_TMP)
mkdir $(BLD) $(SRC) $(INS)
$(INS)/%/$(S_INS): $(BLD)/%/$(S_BLD)
@if [ -f $(BLD)/$*/build.err ]; then echo '###' Error for $* stored in $(BLD)/$*/build.err - remove if you want me to retry; false; fi
( make $(MAKE_OPTS) -C $(BLD)/$*/icu/source 2>&1 all install | tee $(BLD)/$*/build.log ) || ( mv $(BLD)/$*/build.log $(BLD)/$*/build.err ; false )
touch -c $@
$(INS)/r%/$(S_INS): $(BLD)/r%/$(S_BLD)
@if [ -f $(BLD)/r$*/build.err ]; then echo '###' Error for $* stored in $(BLD)/r$*/build.err - remove if you want me to retry; false; fi
( make $(MAKE_OPTS) -C $(BLD)/r$*/icu/source 2>&1 all install | tee $(BLD)/r$*/build.log ) || ( mv $(BLD)/r$*/build.log $(BLD)/r$*/build.err ; false )
touch -c $@
$(BLD)/r%/$(S_SRC): $(ICUS)/icu4c-%-src.tgz
-mv $(BLD)/r$* $(BLD)/r$*.old
-( rm -rf ./$(BLD)/r$*.old& )
mkdir -p $(BLD)/r$*
( cd $(BLD)/r$* ; gunzip -d < $^ | tar xfp - )
([ -f $(DOT)/patch/$* ] && patch -d $(BLD)/r$* -p1 < $(DOT)/patch/$*) || true
touch -c $@
$(BLD)/%/$(S_SRC): $(ICUS)/icu4c-%-src.tgz
-mv $(BLD)/$* $(BLD)/$*.old
-( rm -rf ./$(BLD)/$*.old& )
mkdir -p $(BLD)/$*
( cd $(BLD)/$* ; gunzip -d < $^ | tar xfp - )
([ -f $(DOT)/patch/$* ] && patch -d $(BLD)/$* -p1 < $(DOT)/patch/$*) || true
touch -c $@
$(BLD)/r%/$(S_BLD): $(BLD)/r%/$(S_SRC)
-mkdir -p $(INS)
-chmod a+rx $(BLD)/r$*/icu/source/configure $(BLD)/r$*/icu/source/runConfigureICU
( cd $(BLD)/r$*/icu/source ; env CPPFLAGS="$(XTRA_RICU_CPPFLAGS)" `$(ICUCONF) "$(BLD)/r$*/icu/source" "$*"` --enable-renaming --enable-shared --disable-static --enable-release --disable-debug --prefix=$(INS)/r$* )
touch -c $@
$(BLD)/%/$(S_BLD): $(BLD)/%/$(S_SRC)
-mkdir -p $(INS)
-chmod a+rx $(BLD)/$*/icu/source/configure $(BLD)/$*/icu/source/runConfigureICU
( cd $(BLD)/$*/icu/source ; env CPPFLAGS="$(XTRA_ICU_CPPFLAGS)" `$(ICUCONF) "$(BLD)/$*/icu/source" "$*"` --disable-renaming --enable-shared --disable-static --enable-release --disable-debug --prefix=$(INS)/$* )
touch -c $@
$(INS)/%/bin/$(TARGET): $(INS)/%/$(S_INS) $(SRCS)
# Don't delete the built version.
# -rm -rf ./$(BLD)/$*/tmp
mkdir ./$(BLD)/$*/tmp
@for file in $(OBJECTS); \
do \
what=`basename $$file .o` ; \
echo compiling $*/$$what ; \
echo $(CXX) -c -o ./$(BLD)/$*/tmp/$$what.o $$what.cpp -I $(INS)/$*/include -I $(BLD)/$*/icu/source/tools/toolutil ; \
$(CXX) -c -o ./$(BLD)/$*/tmp/$$what.o $$what.cpp -I $(INS)/$*/include -I $(BLD)/$*/icu/source/tools/toolutil ; \
done
$(CXX) -o $@ $(OBJECTS:%.o=./$(BLD)/$*/tmp/%.o) -licudata -licuuc -licutu -licui18n -L$(INS)/$*/lib
foo:
echo $(ALLICUS)
allicus: $(BLD) $(ALLICUS)
all-icus: iicus
iicus: $(BLD) $(IICUS)
ricus: $(RICUS)

50
multi/c/Makefile-c.inc Normal file
View file

@ -0,0 +1,50 @@
# -*- makefile -*-
# Copyright (c) 2008-2013 IBM Corp. and Others. All Rights Reserved
include $(MULTICU_ROOT)/common/Makefile-multi.inc
C_GOOD:=$(shell [ -d $(C_INS) ] && (cd $(C_INS) ; ls -d */$(S_INS) 2>/dev/null | cut -d/ -f1))
C_REL:=$(shell [ -d $(C_INS) ] && (cd $(C_INS) ; ls -d r*/$(S_INS) 2>/dev/null | cut -d/ -f1))
C_CLEAN_TARGET=$(C_GOOD:%=$(C_INS)/%/bin/$(TARGET))
SOURCES=$(C_SOURCES) $(CXX_SOURCES)
C_OBJECTS=$(C_SOURCES:%.c=%.o)
CXX_OBJECTS=$(CXX_SOURCES:%.cpp=%.o)
OBJECTS=$(C_OBJECTS) $(CXX_OBJECTS)
#DEBUGOPT=-g
# list of ICUs to be built
ICU_TARBALLS=$(shell cd $(ICUS) ; ls icu4c-*-src.tgz)
# list of versions ( form "3_8 4_0" etc. )
ICU_TARBALLS_VERS=$(ICU_TARBALLS:icu4c-%-src.tgz=%)
$(C_INS)/%/bin/$(TARGET): $(SOURCES) $(HEADERS)
-rm -rf $(C_INS)/$*/tmp
mkdir $(C_INS)/$*/tmp
ifneq (,$(CXX_OBJECTS))
@for file in $(CXX_OBJECTS); \
do \
what=`basename $$file .o` ; \
echo tools=$(C_BLD)/$*/icu/source/tools/toolutil ; \
echo compiling '(C++)' $*/$$what ; \
echo `$(C_INS)/$*/bin/icu-config --cxx` `$(C_INS)/$*/bin/icu-config --cxxflags` $(DEBUGOPT) -c -o $(C_INS)/$*/tmp/$$what.o $$what.cpp -I $(C_INS)/$*/include -I $(C_BLD)/$*/icu/source/tools/toolutil ; \
`$(C_INS)/$*/bin/icu-config --cxx` `$(C_INS)/$*/bin/icu-config --cxxflags` $(DEBUGOPT) -c -o $(C_INS)/$*/tmp/$$what.o $$what.cpp -I $(C_INS)/$*/include -I $(C_BLD)/$*/icu/source/tools/toolutil || \
$(CXX) $(DEBUGOPT) -c -o $(C_INS)/$*/tmp/$$what.o $${what}.cpp -I $(C_INS)/$*/include -I $(C_BLD)/$*/icu/source/tools/toolutil ; \
done
endif
ifneq (,$(C_OBJECTS))
@for file in $(C_OBJECTS); \
do \
what=`basename $$file .o` ; \
echo compiling '(C )' $*/$$what ; \
$(CC) $(DEBUGOPT) -c -o $(C_INS)/$*/tmp/$$what.o $${what}.c -I $(C_INS)/$*/include -I $(C_BLD)/$*/icu/source/tools/toolutil ; \
done
endif
@echo linking $*/$$what
@echo `$(C_INS)/$*/bin/icu-config --cxx` `$(C_INS)/$*/bin/icu-config --ldflags ` $(DEBUGOPT) -o $@ $(OBJECTS:%.o=$(C_INS)/$*/tmp/%.o) -licudata -licuuc -licutu -licui18n -licuio -L$(C_INS)/$*/lib
@`$(C_INS)/$*/bin/icu-config --cxx` -Wl,--verbose `$(C_INS)/$*/bin/icu-config --ldflags ` $(DEBUGOPT) -o $@ $(OBJECTS:%.o=$(C_INS)/$*/tmp/%.o) -licudata -licuuc -licutu -licui18n -licuio -L$(C_INS)/$*/lib || \
$(CXX) $(DEBUGOPT) -o $@ $(OBJECTS:%.o=$(C_INS)/$*/tmp/%.o) -licudata -licuuc -licutu -licui18n -licuio -L$(C_INS)/$*/lib

2
multi/c/old-icu.txt Normal file
View file

@ -0,0 +1,2 @@
# Copyright (c) 2009 IBM Corp. and Others. All Rights Reserved
# a list of ICU4Cs too old to build with the current patchset.

12775
multi/c/patch/3_0 Normal file

File diff suppressed because it is too large Load diff

12384
multi/c/patch/3_2 Normal file

File diff suppressed because it is too large Load diff

17
multi/c/patch/3_4_1 Normal file
View file

@ -0,0 +1,17 @@
# Copyright (c) 2008-2009 IBM Corp. and Others. All Rights Reserved
Only in 3_0/icu/source: bin
Only in 3_0.orig/icu/source: confdefs.h
diff -ru 3_0.orig/icu/source/config/mh-darwin 3_0/icu/source/config/mh-darwin
--- 3_0.orig/icu/source/config/mh-darwin 2008-10-20 14:57:52.000000000 -0700
+++ 3_0/icu/source/config/mh-darwin 2008-10-20 15:57:28.000000000 -0700
@@ -15,6 +15,8 @@
## Commands to generate dependency files
GEN_DEPS.c= $(CC) -E -MMD $(DEFS) $(CPPFLAGS)
GEN_DEPS.cc= $(CXX) -E -MMD $(DEFS) $(CPPFLAGS)
+GEN_DEPS.c= echo
+GEN_DEPS.cc= echo
## Commands to compile
COMPILE.c= $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -fno-common -c
Only in 3_0.orig/icu/source: config.cache
Only in 3_0.orig/icu/source: config.log

5
multi/c/patch/readme.txt Normal file
View file

@ -0,0 +1,5 @@
#!/bin/cat
# Copyright (c) 2009 IBM Corp. and Others. All Rights Reserved
#
Contains ICU4C patches to make old versions build.

66
multi/c/superconf.sh Executable file
View file

@ -0,0 +1,66 @@
#!/bin/sh
# Copyright (c) 2009 IBM Corp. and Others. All Rights Reserved
#
# Sample "super configure"
# this script is responsible for configuring ICU.
# input variables;
# $ICU_VER - the ICU version in underscore format (4_2_0_1)
ICU_SRC="$1"
ICU_VER="$2"
U_HOST=`hostname`
U_SYS=`uname || echo unknown`
#echo $HOST
export rcs=none
case $U_SYS in
AIX)
# the preferred 'AIX' type to use
AIX=AIX
case $ICU_VER in
4*)
#AIX=AIX4.3VA
AIX=AIX
;;
*)
AIX=AIX4.3VA
;;
1*|2*|3_0*|3_1*)
AIX=AIX4.3xlC
PATH=/usr/vacpp/bin/:$PATH
;;
esac
rcs=${AIX}
;;
*)
rcs=none
;;
esac
case $HOST in
sys98*)
rcs=$AIX
;;
hp*)
rcs='HP-UX/ACC'
;;
merill*|redhat*|sunlight*)
rcs='LinuxRedHat'
;;
*)
echo sh ${ICU_SRC}/configure
#echo Unknown host $HOST, edit $0
exit 0
;;
esac
echo sh ${ICU_SRC}/runConfigureICU "${rcs}"

View file

@ -0,0 +1,22 @@
# Copyright (c) 2008-2009 IBM Corp. and Others. All Rights Reserved
C_ROOT=$(MULTICU_ROOT)/c
J_ROOT=$(MULTICU_ROOT)/j
M_TMP=$(MULTICU_ROOT)/tmp
C_INS=$(M_TMP)/ins
C_BLD=$(M_TMP)/build
C_SRC=$(M_TMP)/src
# C defs
S_INS=include/unicode/utypes.h
S_SRCDIR=icu/source
S_BLD=$(S_SRCDIR)/config.status
S_SRC=$(S_SRCDIR)/configure
-include $(MULTICU_ROOT)/common/Makefile-local.inc
ICUS=$(MULTICU_ROOT)/packages
TOP=$(shell pwd)
# J defs

8
multi/j/Makefile-j.inc Normal file
View file

@ -0,0 +1,8 @@
# -*- makefile -*-
# Copyright (c) 2008-2013 IBM Corp. and Others. All Rights Reserved
include $(MULTICU_ROOT)/common/Makefile-multi.inc
ICUS=$(MULTICU_ROOT)/packages
J_GOOD:=$(shell [ -d $(ICUS) ] && (cd $(ICUS) ; ls -d icu4j-*.jar | cut -d- -f2 | cut -d. -f1))
#J_GOOD=$(ICU4JVERS:%=$(ICUS)/icu4j-%.jar)

52
multi/j/jvm/addjava.sh Executable file
View file

@ -0,0 +1,52 @@
#!/bin/sh
# Copyright (c) 2008-2013 IBM Corp. and Others. All Rights Reserved
if [ ! -x $1 ];
then
echo usage: $0 path/to/bin/java
exit 1
fi
if ! $1 -version > /dev/null ;
then
echo could not run $1
exit 2
fi
if ! ( $1 -version 2>&1 | grep -q "java version" );
then
echo could not get java version from $1
exit 3
fi
VER=`$1 -version 2>&1 | grep "java version" | head -1 | sed -e 's%^java version "\([^"]*\)\".*$%\1%'`
VERD=`echo $VER | tr . _`
echo $1 = $VER / $VERD
FILE="$VERD.sh"
if [ -f $FILE ];
then
FILE="${VERD}_$$.sh"
echo "$VERD.sh existed, renaming to $FILE - rename to something sane if you want"
fi
JHOME=`dirname $1`
JHOME=`dirname $JHOME`
echo "#!/bin/sh" > $FILE
echo "# auto generated for $VER from $1 / addjava.sh" >> $FILE
echo "JAVA_HOME=$JHOME" >> $FILE
echo >> $FILE
echo >> $FILE
$1 -version 2>&1 | sed -e 's%^%#%' >> $FILE
chmod a+rx $FILE
echo
echo "Created: $FILE"

4
multi/j/jvm/clean.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/sh
# Copyright (c) 2008-2013 IBM Corp. and Others. All Rights Reserved
set -x
rm *.jvm.sh

32
multi/j/jvm/detect-mac.sh Executable file
View file

@ -0,0 +1,32 @@
#!/bin/sh
# Copyright (c) 2008-2013 IBM Corp. and Others. All Rights Reserved
VER=/System/Library/Frameworks/JavaVM.framework/Versions
if [ ! -d "${VER}" ];
then
echo err, cant find ${VER} - are you really on a mac?
exit 1
fi
VERS=`cd ${VER};ls -d [0-9]*`
for aver in ${VERS};
do
if [ ! -x ${VER}/${aver}/Home/bin/java ]; then
continue
fi
if ! ${VER}/${aver}/Home/bin/java -version 2> /dev/null; then
continue
fi
VERNUM=`echo "${aver}" | tr '.' '_'`
F=${VERNUM}.jvm.sh
echo "# ${F} from ${VER}/${aver}"
cat > ${F} <<EOF
JAVA_HOME=${VER}/${aver}/Home
EOF
chmod a+rx ${F}
if ! ./test.sh ${F}; then
rm ${F}
echo "# Deleted: ${F} due to failure"
fi
done

18
multi/j/jvm/invoke.sh Executable file
View file

@ -0,0 +1,18 @@
#!/bin/sh
# Copyright (c) 2008-2013 IBM Corp. and Others. All Rights Reserved
if [ ! -x ${1} ];
then
echo could not exec ${1}
echo usage: ${0} something.jvm.sh blah
exit 1
fi
#JAVA_HOME=/somewhere/1_6
JAVA=java
#CLASSPATH=foo/bar.jar:/baz
#VM_OPTS=-Xmx265
. "${1}"
set -x
${JAVA_HOME}/bin/${JAVA} ${VM_OPTS} -classpath ${CLASSPATH}:${2} ${3}

21
multi/j/jvm/readme.txt Normal file
View file

@ -0,0 +1,21 @@
# Copyright (c) 2008-2013 IBM Corp. and Others. All Rights Reserved
Put '.sh' files in this dir , locally, to be used for Java version bringup
See addjava below
ex: '1_6.sh'
------
JAVA_HOME=/somewhere/1_6
#JAVA=java
#CLASSPATH=foo/bar.jar:/baz
#VM_OPTS=-Xmx265
-----
You can use the addjava.sh tool, like this - give it the full path to 'java':
$ addjava.sh /opt/IBM-JDK-1.5/bin/java
Created 1_5.sh
IF 1_5.sh alreday exists, a random number will be added to the name of the new file.

12
multi/j/jvm/test.sh Executable file
View file

@ -0,0 +1,12 @@
#!/bin/sh
# Copyright (c) 2008-2013 IBM Corp. and Others. All Rights Reserved
if [ ! -x ${1} ];
then
echo could not exec ${1}
echo usage: ${0} something.sh
exit 1
fi
set -x
. "${1}"
${JAVA_HOME}/bin/java -version 2>/dev/null

2
multi/j/old-icu4j.txt Normal file
View file

@ -0,0 +1,2 @@
# Copyright (c) 2009 IBM Corp. and Others. All Rights Reserved
# a list of ICU4Cs too old to build with the current patchset.

View file

@ -0,0 +1,51 @@
# Copyright (c) 2008-2009 IBM Corp. and Others. All Rights Reserved
# Makefile for multicu/sample/chello
# C/C++ hello
## Name of the app
TARGET=chello
## Sources list (C and C++ just to be difficult)
C_SOURCES=date.c
CXX_SOURCES=uprint.cpp
SRCS=$(C_SOURCES) $(CXX_SOURCES)
HEADERS=uprint.h
all:
@echo To build and list "'" $(OUTFILES) "'" in "'" $(C_GOOD) "'" use "$(MAKE) check"
## Setup multicu
MULTICU_ROOT=../../
include $(MULTICU_ROOT)/c/Makefile-c.inc
OUT=out
$(OUT):
mkdir $(OUT)
## The output files. Will result in: out/3_8.txt out/4_0.txt etc.
OUTFILES=$(C_GOOD:%=$(OUT)/%.txt)
.PRECIOUS: $(C_CLEAN_TARGET)
## Generate a file
$(OUT)/%.txt: $(OUT) $(C_INS)/%/bin/$(TARGET)
$(shell $(C_INS)/$*/bin/icu-config --invoke) $(C_INS)/$*/bin/$(TARGET) > $@
## clean
clean:
-rm -f $(C_CLEAN_TARGET)
-rm -f ./$(OUT)/*
-rmdir $(OUT)
## Just generate
outfiles: $(OUTFILES)
## Test: generate out files, and print them.
check: $(OUTFILES)
@for file in $(OUTFILES); \
do \
echo; \
sed -e "s%^%$$file: %g" < $$file; \
done

204
multi/proj/chello/date.c Normal file
View file

@ -0,0 +1,204 @@
/*
**********************************************************************
* Copyright (C) 1998-2009, International Business Machines
* Corporation and others. All Rights Reserved.
**********************************************************************
*
* File date.c
*
* Modification History:
*
* Date Name Description
* 06/11/99 stephen Creation.
* 06/16/99 stephen Modified to use uprint.
*******************************************************************************
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "unicode/utypes.h"
#include "unicode/ustring.h"
#include "unicode/uclean.h"
#include "unicode/ucnv.h"
#include "unicode/udat.h"
#include "unicode/ucal.h"
#include "uprint.h"
int main(int argc, char **argv);
#if UCONFIG_NO_FORMATTING
int main(int argc, char **argv)
{
printf("%s: Sorry, UCONFIG_NO_FORMATTING was turned on (see uconfig.h). No formatting can be done. \n", argv[0]);
return 0;
}
#else
/* Protos */
static void usage(void);
static void version(void);
static void date(const UChar *tz, UDateFormatStyle style, char *format, UErrorCode *status);
/* The version of date */
#define DATE_VERSION "1.0"
/* "GMT" */
static const UChar GMT_ID [] = { 0x0047, 0x004d, 0x0054, 0x0000 };
int
main(int argc,
char **argv)
{
int printUsage = 0;
int printVersion = 0;
int optind = 1;
char *arg;
const UChar *tz = 0;
UDateFormatStyle style = UDAT_DEFAULT;
UErrorCode status = U_ZERO_ERROR;
char *format = NULL;
/* parse the options */
for(optind = 1; optind < argc; ++optind) {
arg = argv[optind];
/* version info */
if(strcmp(arg, "-v") == 0 || strcmp(arg, "--version") == 0) {
printVersion = 1;
}
/* usage info */
else if(strcmp(arg, "-h") == 0 || strcmp(arg, "--help") == 0) {
printUsage = 1;
}
/* display date in gmt */
else if(strcmp(arg, "-u") == 0 || strcmp(arg, "--gmt") == 0) {
tz = GMT_ID;
}
/* display date in gmt */
else if(strcmp(arg, "-f") == 0 || strcmp(arg, "--full") == 0) {
style = UDAT_FULL;
}
/* display date in long format */
else if(strcmp(arg, "-l") == 0 || strcmp(arg, "--long") == 0) {
style = UDAT_LONG;
}
/* display date in medium format */
else if(strcmp(arg, "-m") == 0 || strcmp(arg, "--medium") == 0) {
style = UDAT_MEDIUM;
}
/* display date in short format */
else if(strcmp(arg, "-s") == 0 || strcmp(arg, "--short") == 0) {
style = UDAT_SHORT;
}
else if(strcmp(arg, "-F") == 0 || strcmp(arg, "--format") == 0) {
if ( optind + 1 < argc ) {
optind++;
format = argv[optind];
}
}
/* POSIX.1 says all arguments after -- are not options */
else if(strcmp(arg, "--") == 0) {
/* skip the -- */
++optind;
break;
}
/* unrecognized option */
else if(strncmp(arg, "-", strlen("-")) == 0) {
printf("icudate: invalid option -- %s\n", arg+1);
printUsage = 1;
}
/* done with options, display date */
else {
break;
}
}
/* print usage info */
if(printUsage) {
usage();
return 0;
}
/* print version info */
if(printVersion) {
version();
return 0;
}
/* print the date */
date(tz, style, format, &status);
u_cleanup();
return (U_FAILURE(status) ? 1 : 0);
}
/* Usage information */
static void
usage()
{
puts("Usage: icudate [OPTIONS]");
puts("Options:");
puts(" -h, --help Print this message and exit.");
puts(" -v, --version Print the version number of date and exit.");
puts(" -u, --gmt Display the date in Greenwich Mean Time.");
puts(" -f, --full Use full display format.");
puts(" -l, --long Use long display format.");
puts(" -m, --medium Use medium display format.");
puts(" -s, --short Use short display format.");
}
/* Version information */
static void
version()
{
printf("icudate version %s (ICU version %s), created by Stephen F. Booth.\n",
DATE_VERSION, U_ICU_VERSION);
puts(U_COPYRIGHT_STRING);
}
/* Format the date */
static void
date(const UChar *tz,
UDateFormatStyle style,
char *format,
UErrorCode *status)
{
UChar *s = 0;
int32_t len = 0;
UDateFormat *fmt;
UChar uFormat[100];
fmt = udat_open(style, style, 0, tz, -1,NULL,0, status);
if ( format != NULL ) {
u_charsToUChars(format,uFormat,strlen(format)),
udat_applyPattern(fmt,FALSE,uFormat,strlen(format));
}
len = udat_format(fmt, ucal_getNow(), 0, len, 0, status);
if(*status == U_BUFFER_OVERFLOW_ERROR) {
*status = U_ZERO_ERROR;
s = (UChar*) malloc(sizeof(UChar) * (len+1));
if(s == 0) goto finish;
udat_format(fmt, ucal_getNow(), s, len + 1, 0, status);
if(U_FAILURE(*status)) goto finish;
}
/* print the date string */
uprint(s, stdout, status);
/* print a trailing newline */
printf(" @ ICU " U_ICU_VERSION "\n");
finish:
udat_close(fmt);
free(s);
}
#endif

View file

@ -0,0 +1,76 @@
/*
**********************************************************************
* Copyright (C) 1998-2009, International Business Machines Corporation
* and others. All Rights Reserved.
**********************************************************************
*
* File uprint.cpp
*
* Modification History:
*
* Date Name Description
* 06/14/99 stephen Creation.
*******************************************************************************
*/
#include "uprint.h"
#include "unicode/ucnv.h"
#include "unicode/ustring.h"
#define BUF_SIZE 128
/* Print a ustring to the specified FILE* in the default codepage */
U_CAPI void
uprint(const UChar *s,
FILE *f,
UErrorCode *status)
{
/* converter */
UConverter *converter;
char buf [BUF_SIZE];
int32_t sourceLen;
const UChar *mySource;
const UChar *mySourceEnd;
char *myTarget;
int32_t arraySize;
if(s == 0) return;
/* set up the conversion parameters */
sourceLen = u_strlen(s);
mySource = s;
mySourceEnd = mySource + sourceLen;
myTarget = buf;
arraySize = BUF_SIZE;
/* open a default converter */
converter = ucnv_open(0, status);
/* if we failed, clean up and exit */
if(U_FAILURE(*status)) goto finish;
/* perform the conversion */
do {
/* reset the error code */
*status = U_ZERO_ERROR;
/* perform the conversion */
ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize,
&mySource, mySourceEnd, NULL,
TRUE, status);
/* Write the converted data to the FILE* */
fwrite(buf, sizeof(char), myTarget - buf, f);
/* update the conversion parameters*/
myTarget = buf;
arraySize = BUF_SIZE;
}
while(*status == U_BUFFER_OVERFLOW_ERROR);
finish:
/* close the converter */
ucnv_close(converter);
}

View file

@ -0,0 +1,26 @@
/*
**********************************************************************
* Copyright (C) 1998-2009, International Business Machines Corporation
* and others. All Rights Reserved.
**********************************************************************
*
* File uprint.h
*
* Modification History:
*
* Date Name Description
* 06/14/99 stephen Creation.
*******************************************************************************
*/
#ifndef UPRINT_H
#define UPRINT_H 1
#include <stdio.h>
#include "unicode/utypes.h"
/* Print a ustring to the specified FILE* in the default codepage */
U_CFUNC void uprint(const UChar *s, FILE *f, UErrorCode *status);
#endif /* ! UPRINT_H */

View file

@ -0,0 +1,126 @@
# Copyright (C) 2008-2012 IBM Corporation and Others. All Rights Reserved.
MULTICU_ROOT=../../
include $(MULTICU_ROOT)/common/Makefile-multi.inc
XML=./xml
JXML=./jxml
JVMXML=./jvmxml
COOKED=cooked
INPUT=input
INTROXMLS=$(wildcard $(INPUT)/*-introduction.xml)
FEATXMLS=$(INTROXMLS:$(INPUT)/%-introduction.xml=$(COOKED)/%-cooked.xml) $(COOKED)/characters.xml
ALLCOOKED=cooked/features.xml
# java stuff
MergerName=Merger
PropagateName=PropagateFeatures
PropagateCharsName=PropagateCharacters
MergerPackage=com.ibm.icu.dev.meta
MergerPackageSlash=$(subst .,/,$(MergerPackage))
## ICUMETA=/xsrl/E/data/meta (in Makefile.local)
MergerLib=$(ICUMETA)/lib
MergerJar=$(ICUMETA)/icumeta.jar
#was: $(ICUMETA)/classes
MergerClassPath=$(shell ls $(MergerLib)/*.jar | tr '\n' ':')$(MergerJar):$(OTHERJARS)
include Makefile.local
MergerBuild=$(ICUMETA)/build.xml
#MergerClass=$(ICUMETA)/classes/$(MergerPackageSlash)/$(MergerName).class
#MergerJava=$(ICUMETA)/src/$(MergerPackageSlash)/$(MergerName).java
#BASEXMLS=$(ICUMETA)/xml/icumeta.xml
BASEXMLS=$(ICUMETA)/input/versions.xml
APRECIOUS=$(ICUVERS:%=$(BLD)/%/$(S_SRC)) $(ICUVERS:%=$(BLD)/%/$(S_BLD)) $(ICUVERS:%=$(INS)/%/$(S_INS))
all: icucaps.xml
.PRECIOUS: $(APRECIOUS)
tehprecious:
echo $(APRECIOUS)
$(MergerJar):
( cd $(ICUMETA) ; ant jar )
$(BLD):
-mkdir $(BLD)
$(XML):
-mkdir $(XML)
$(JXML):
-mkdir $(JXML)
$(JVMXML):
-mkdir $(JXML)
ifeq ($(JVMSH),)
JVMSH_WARN=warn-jvmsh
warn-jvmsh:
@echo "Note: No $(JVM)/*$(JVM_CFG) files found, see $(JVM)/readme.txt"
endif
DTDCACHE=$(shell pwd)/dtdcache
DTDTMP=$(shell pwd)/dtdtmp
DTDOVR=$(ICUMETA)/dtd
JAVADEBUG=-DCLDR_DTD_CACHE_DEBUG=n -DCLDR_DTD_CACHE_ADEBUG=n
JAVAPROPS= -DCLDR_DTD_CACHE=$(DTDCACHE) -DCLDR_DTD_OVERRIDE=$(DTDOVR) -DICU_DTD_CACHE=$(DTDCACHE) -DICU_DTD_OVERRIDE=$DTDOVR
#//$(DTD)/Makefile: $(ICUMETA)/dtd/Makfile
#// ln -s $^ $@
#//
#//dtd/icucaps.dtd: $(DTD)/Makefile dtd/icucaps.rnc
#// make -C $(DTD)
ICUMETA_XML=$(ICUMETA)/xml/icumeta.xml
BASE_VERSION=$(COOKED)/allversions.xml
BASE_SOURCE=$(BASEXMLS) $(INPUT)/java.xml
#$(ICUMETA)/xml/icumeta.xml: $(MergerBuild)
# ( cd $(ICUMETA) ; ant xml )
ALLXMLS=$(wildcard $(XML)/*.xml $(JXML)/*.xml $(JVMXML)/*.xml)
allxmls: $(XML) $(JXML) $(JVMXML)
$(MAKE) -f Makefile_c outfiles
$(MAKE) -f Makefile_j outfiles
featxmls: $(FEATXMLS)
allcooked: $(ALLCOOKED)
$(COOKED):
-mkdir $(COOKED)
$(BASE_VERSION): $(BASE_SOURCE) $(MergerJar) | $(COOKED)
-rm -rf ./dtdcache
mkdir dtdcache
java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(MergerName) -v -o:$@ $(BASE_SOURCE)
$(ALLCOOKED): $(FEATXMLS) $(MergerJar)
-rm -rf ./dtdcache
mkdir dtdcache
java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(MergerName) -v -o:$@ $(FEATXMLS)
$(COOKED)/%-cooked.xml: $(BASE_VERSION) $(INPUT)/%-introduction.xml $(MergerJar) | $(COOKED)
-rm -rf ./dtdcache
mkdir dtdcache
java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(PropagateName) $(BASE_VERSION) $(INPUT)/$*-introduction.xml > $(COOKED)/$*-cooked.xml
$(COOKED)/characters.xml: $(ALLXMLS) $(COOKED)/junicode-cooked.xml $(MergerJar)
java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(PropagateCharsName) > $@ $(ALLXMLS) $(COOKED)/junicode-cooked.xml || (rm ./$@ ; false)
icucaps.xml: allxmls $(BASE_VERSION) $(ALLXMLS) $(MergerJar) $(ALLCOOKED)
-rm -rf ./dtdcache
mkdir dtdcache
# -rm -rf ./dtdtmp
# mkdir dtdtmp
# ln -s $(ICUMETA)/dtd/*.dtd ./dtdtmp/
# ln -s ./dtd/*.dtd ./dtdtmp/
java $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(MergerName) -v -o:$@ $(BASE_VERSION) $(ALLXMLS) $(ALLJXMLS) $(ALLCOOKED)

View file

@ -0,0 +1,23 @@
# -*- makefile -*-
# Copyright (C) 2008-2012 IBM Corporation and Others. All Rights Reserved.
## --- important ---
# Path to http://source.icu-project.org/repos/icu/data/trunk/meta
ICUMETA=/xsrl/E/data/meta
## --- all others are optional ---
# if needed - additional jars on the CLASSPATH
#OTHERJARS=somejar.jar:some/other/jar.jar
# if needed - force path to ICUJAR
#ICUJAR=.../icu.jar
#Special make options
#MAKE_OPTS=-j2

View file

@ -0,0 +1,47 @@
# -*- makefile -*-
# Copyright (C) 2008-2013 IBM Corporation and Others. All Rights Reserved.
CPPFLAGS+=-DU_DISABLE_RENAMING=1 -I. -I/xsrl/IIE/include -I/xsrl/E/icu/source/tools/toolutil
# TODO - where to get uoptions.h?
OBJECTS=testxml.o xmlout.o
CXX_SOURCES:=$(OBJECTS:%.o=%.cpp)
C_SOURCES=
HEADERS=xmlout.h
TARGET=testxml
all:
@echo To build and list "'" $(OUTFILES) "'" in "'" $(C_GOOD) "'" use "$(MAKE) check"
MULTICU_ROOT=../../
include $(MULTICU_ROOT)/c/Makefile-c.inc
OUT=./xml
$(OUT):
mkdir $(OUT)
OUTFILES=$(C_GOOD:%=$(OUT)/%.xml)
.PRECIOUS: $(C_CLEAN_TARGET)
## Generate a file
$(OUT)/%.xml: $(OUT) $(C_INS)/%/bin/$(TARGET)
$(shell $(C_INS)/$*/bin/icu-config --invoke) $(C_INS)/$*/bin/$(TARGET) > $@
## clean
clean:
-rm -f $(C_CLEAN_TARGET)
-rm -f ./$(OUT)/*
-rmdir $(OUT)
## Just generate
outfiles: $(OUTFILES)
## Test: generate out files, and print them.
check: $(OUTFILES)
@for file in $(OUTFILES); \
do \
echo; \
sed -e "s%^%$$file: %g" < $$file; \
done

View file

@ -0,0 +1,223 @@
# -*- makefile -*-
# Copyright (C) 2012 IBM Corporation and Others. All Rights Reserved.
## Name of the app
TARGET=icu4jscan
all:
@echo To build and list "'" $(OUTFILES) "'" in "'" $(J_GOOD) "'" use "$(MAKE) check"
## Setup multicu
MULTICU_ROOT=../../
include $(MULTICU_ROOT)/j/Makefile-j.inc
## The output files. Will result in: out/3_8.txt out/4_0.txt etc.
OUT=jxml
OUTFILES=$(J_GOOD:%=$(OUT)/%.txt)
.PRECIOUS: $(C_CLEAN_TARGET)
## Generate a file
$(OUT)/%.txt: $(OUT) $(C_INS)/%/bin/$(TARGET)
$(shell $(C_INS)/$*/bin/icu-config --invoke) $(C_INS)/$*/bin/$(TARGET) > $@
## clean
clean:
-rm -f $(C_CLEAN_TARGET)
-rm -f ./$(OUT)/*
-rmdir $(OUT)
## Test: generate out files, and print them.
check: $(OUTFILES)
@for file in $(OUTFILES); \
do \
echo; \
sed -e "s%^%$$file: %g" < $$file; \
done
MULTICU_ROOT=../../
include $(MULTICU_ROOT)/common/Makefile-multi.inc
XML=./xml
JVMXML=./jvmxml
JVM=$(MULTICU_ROOT)/j/jvm
JVM_CFG=.sh
JVMSH:=$(wildcard $(JVM)/[0-9]*$(JVM_CFG))
ALLICUS=$(ICUVERS:%=$(BLD)/%/$(S_BLD))
IICUS=$(ICUVERS:%=$(INS)/%/$(S_INS))
ALLAPPS=$(ICUVERS:%=$(INS)/%/bin/$(TARGET))
ALLXMLS=$(ICUVERS:%=$(XML)/%.xml)
COOKED=cooked
INPUT=input
INTROXMLS=$(wildcard $(INPUT)/*-introduction.xml)
FEATXMLS=$(INTROXMLS:$(INPUT)/%-introduction.xml=$(COOKED)/%-cooked.xml) $(COOKED)/characters.xml
ALLCOOKED=cooked/features.xml
JXML=./jxml
#ICU4JVERS
ALLICU4JS=$(ICU4JVERS:%=$(ICUS)/icu4j-%.jar)
ALLJXMLS=$(J_GOOD:%=$(JXML)/%.xml)
JSCAN=ScanICU
alljxmls: $(JXML) $(ALLJXMLS)
JSCANDIR=../icu4jscan
JCLASSFILE=$(JSCANDIR)/bin/com/ibm/icu/dev/scan/$(JSCAN).class
JScanPackage=com.ibm.icu.dev.scan
ALLJVM=$(JVMSH:$(JVM)/%$(JVM_CFG)=%)
ALLJVMXMLS=$(ALLJVM:%=$(JVMXML)/%.xml)
JVMSCAN=ScanJava
alljvmxmls: $(JVMXML) $(ALLJVMXMLS)
JVMCLASSFILE=$(JSCANDIR)/bin/com/ibm/icu/dev/scan/$(JVMSCAN).class
# java stuff
JAVA=java
MergerName=Merger
PropagateName=PropagateFeatures
PropagateCharsName=PropagateCharacters
MergerPackage=com.ibm.icu.dev.meta
MergerPackageSlash=$(subst .,/,$(MergerPackage))
## ICUMETA=/xsrl/E/data/meta (in Makefile.local)
MergerLib=$(ICUMETA)/lib
MergerJar=$(ICUMETA)/icumeta.jar
#was: $(ICUMETA)/classes
MergerClassPath=$(shell ls $(MergerLib)/*.jar | tr '\n' ':')$(MergerJar):$(OTHERJARS)
include Makefile.local
MergerBuild=$(ICUMETA)/build.xml
#MergerClass=$(ICUMETA)/classes/$(MergerPackageSlash)/$(MergerName).class
#MergerJava=$(ICUMETA)/src/$(MergerPackageSlash)/$(MergerName).java
#BASEXMLS=$(ICUMETA)/xml/icumeta.xml
BASEXMLS=$(ICUMETA)/input/versions.xml
APRECIOUS=$(ICUVERS:%=$(BLD)/%/$(S_SRC)) $(ICUVERS:%=$(BLD)/%/$(S_BLD)) $(ICUVERS:%=$(INS)/%/$(S_INS))
.PRECIOUS: $(APRECIOUS)
tehprecious:
echo $(APRECIOUS)
$(MergerJar):
( cd $(ICUMETA) ; ant jar )
$(BLD):
-mkdir $(BLD)
$(INS)/%/$(S_INS): $(BLD)/%/$(S_BLD)
@if [ -f $(BLD)/$*/build.err ]; then echo Error for $* stored in $(BLD)/$*/build.err; false; fi
( make $(MAKE_OPTS) -C $(BLD)/$*/icu/source 2>&1 all install | tee $(BLD)/$*/build.log ) || ( mv $(BLD)/$*/build.log $(BLD)/$*/build.err ; false )
touch -c $@
$(BLD)/%/$(S_SRC): $(ICUS)/icu4c-%-src.tgz
-mv $(BLD)/$* $(BLD)/$*.old
-( rm -rf ./$(BLD)/$*.old& )
mkdir -p $(BLD)/$*
( cd $(BLD)/$* ; tar xfpz $(DOT)/$^ )
([ -f patch/$* ] && patch -d $(BLD)/$* -p1 < $(DOT)/patch/$*) || true
touch -c $@
$(BLD)/%/$(S_BLD): $(BLD)/%/$(S_SRC)
-mkdir -p $(INS)
( cd $(BLD)/$*/icu/source ; ./configure --disable-renaming --enable-shared --disable-static --enable-release --disable-debug --prefix=$(DOT)/$(INS)/$* )
touch -c $@
$(INS)/%/bin/$(TARGET): $(INS)/%/$(S_INS) $(SRCS)
-rm -rf ./$(BLD)/$*/tmp
mkdir ./$(BLD)/$*/tmp
@for file in $(OBJECTS); \
do \
what=`basename $$file .o` ; \
echo compiling $*/$$what ; \
$(CXX) -c -o ./$(BLD)/$*/tmp/$$what.o $$what.cpp -I $(INS)/$*/include -I $(BLD)/$*/icu/source/tools/toolutil ; \
done
$(CXX) -o $@ $(OBJECTS:%.o=./$(BLD)/$*/tmp/%.o) -licudata -licuuc -licutu -licui18n -L$(INS)/$*/lib
$(XML):
mkdir $(XML)
$(JXML):
mkdir $(JXML)
ifeq ($(JVMSH),)
JVMSH_WARN=warn-jvmsh
warn-jvmsh:
@echo "Note: No $(JVM)/*$(JVM_CFG) files found, see $(JVM)/readme.txt"
endif
$(JVMXML):
mkdir $(JVMXML)
$(XML)/%.xml: $(INS)/%/bin/$(TARGET) $(XML)
$(shell $(INS)/$*/bin/icu-config --invoke) $(INS)/$*/bin/$(TARGET) > $@
allxmls: $(ALLXMLS) | $(OUT)
alljvmxmls: $(ALLJVMXMLS) $(JVMSH_WARN) | $(JVMXML)
allapps: $(BLD) $(ALLAPPS)
allicus: $(BLD) $(ALLICUS)
clean-allapps:
-rm -f $(ALLAPPS)
iicus: $(BLD) $(IICUS)
DTDCACHE=$(shell pwd)/dtdcache
DTDTMP=$(shell pwd)/dtdtmp
DTDOVR=$(ICUMETA)/dtd
JAVADEBUG=-DCLDR_DTD_CACHE_DEBUG=n -DCLDR_DTD_CACHE_ADEBUG=n
JAVAPROPS= -DCLDR_DTD_CACHE=$(DTDCACHE) -DCLDR_DTD_OVERRIDE=$(DTDOVR) -DICU_DTD_CACHE=$(DTDCACHE) -DICU_DTD_OVERRIDE=$DTDOVR
#//$(DTD)/Makefile: $(ICUMETA)/dtd/Makfile
#// ln -s $^ $@
#//
#//dtd/icucaps.dtd: $(DTD)/Makefile dtd/icucaps.rnc
#// make -C $(DTD)
ICUMETA_XML=$(ICUMETA)/xml/icumeta.xml
#$(ICUMETA)/xml/icumeta.xml: $(MergerBuild)
# ( cd $(ICUMETA) ; ant xml )
featxmls: $(FEATXMLS)
allcooked: $(ALLCOOKED)
$(ALLCOOKED): $(FEATXMLS) $(MergerJar)
-rm -rf ./dtdcache
mkdir dtdcache
$(JAVA) $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(MergerName) -v -o:$@ $(FEATXMLS)
$(COOKED)/%-cooked.xml: $(ICUMETA_XML) $(INPUT)/%-introduction.xml $(MergerJar)
-rm -rf ./dtdcache
mkdir dtdcache
$(JAVA) $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(PropagateName) $(ICUMETA_XML) $(INPUT)/$*-introduction.xml > $(COOKED)/$*-cooked.xml
$(COOKED)/characters.xml: $(ALLJXMLS) $(ALLXMLS) $(MergerJar)
$(JAVA) $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(PropagateCharsName) > $@ $(ALLJXMLS) $(ALLXMLS) || (rm ./$@ ; false)
icucaps.xml: $(BASEXMLS) $(ALLJXMLS) $(ALLXMLS) $(MergerJar) $(ALLCOOKED)
-rm -rf ./dtdcache
mkdir dtdcache
# -rm -rf ./dtdtmp
# mkdir dtdtmp
# ln -s $(ICUMETA)/dtd/*.dtd ./dtdtmp/
# ln -s ./dtd/*.dtd ./dtdtmp/
$(JAVA) $(JAVAPROPS) -classpath $(MergerClassPath) $(MergerPackage).$(MergerName) -v -o:$@ $(BASEXMLS) $(ALLXMLS) $(ALLJXMLS) $(ALLCOOKED)
# --- J
$(JXML)/%.xml: $(JCLASSFILE) $(ICUS)/icu4j-%.jar | $(JXML)
$(JAVA) -classpath $(JSCANDIR)/bin:$(ICUS)/icu4j-$*.jar:$(JSCANDIR)/lib/icumeta.jar:$(JSCANDIR)/lib/xalan.jar:$(JSCANDIR)/lib/cldr.jar:$(JSCANDIR)/lib/utilities.jar:$(MergerJar):$(MergerLib)/utilities.jar:$(MergerLib)/cldr.jar:$(JSCANDIR)/lib/xerces.jar:$(OTHERJARS) $(JScanPackage).$(JSCAN) > $@ || (rm -f ./$@ ; false)
$(JVMXML)/%.xml: $(JVMCLASSFILE) $(JVM)/%$(JVM_CFG) | $(JVMXML)
$(JVM)/invoke.sh $(JVM)/$*$(JVM_CFG) $(JSCANDIR)/bin:$(ICUS)/icu4j-$*.jar:$(JSCANDIR)/lib/icumeta.jar:$(JSCANDIR)/lib/xalan.jar:$(JSCANDIR)/lib/cldr.jar:$(MergerJar):$(MergerJar):$(MergerLib)/utilities.jar:$(MergerLib)/cldr.jar:$(JSCANDIR)/lib/utilities.jar:$(JSCANDIR)/lib/xerces.jar:$(OTHERJARS) $(JScanPackage).$(JVMSCAN) > $@ || (rm ./$@ ; false)
## Just generate
outfiles: $(XML) $(JXML) $(ALLJXMLS) $(ALLJVMXMLS)

View file

@ -0,0 +1,12 @@
<!-- Copyright (C) 2008-2012 IBM Corporation and Others. All Rights Reserved. -->
element capabilities
{
element feature
{
attribute type {text },
attribute total {text}?,
attribute version {text},
text
}*
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008-2012 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="java">
<names>
<name type="full">Java</name>
<name type="short">Java</name>
</names>
<releases>
<release version="1.3.1"/>
<release version="1.4.2"/>
<release version="1.5.0"/>
<release version="1.6.0"/>
<release version="1.7.0"/>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,25 @@
<!-- Copyright (C) 2008-2012 IBM Corporation and Others. All Rights Reserved. -->
<icuInfo>
<icuProducts>
<icuProduct type="java">
<releases>
<release version="1.4.2">
<capabilities>
<feature type="layout">
Arab Hebr Thai Beng Deva Gujr Knda Mlym Orya Punj Taml Telu Urdu Hans Hant Jpan Latn Cyrl Grek Armn Geor Runr Ogam Thai
</feature>
</capabilities>
</release>
<release version="1.5.0">
<capabilities>
<feature type="layout">
+Khmr Hang Sinh Tibt
</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,36 @@
<!-- Copyright (C) 2008-2012 IBM Corporation and Others. All Rights Reserved. -->
<icuInfo>
<icuProducts>
<icuProduct type="java">
<releases>
<release version="1.4.2">
<capabilities>
<feature type="unicode" version="3.0"/>
</capabilities>
</release>
<release version="1.5.0">
<capabilities>
<feature type="unicode" version="4.0"/>
</capabilities>
</release>
<release version="1.6.0">
<capabilities>
<feature type="unicode" version="4.0"/>
</capabilities>
</release>
<release version="1.7.0">
<capabilities>
<feature type="unicode" version="6.0"/>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,61 @@
<!-- Copyright (C) 2012 IBM Corporation and Others. All Rights Reserved. -->
<icuInfo>
<icuProducts>
<icuProduct type="icu4c">
<releases>
<release version="1.7">
<capabilities>
<feature type="layout">
Arab Hebr Thai Beng Deva Gujr Knda Mlym Orya Punj Taml Telu
</feature>
</capabilities>
</release>
<release version="2.2">
<capabilities>
<feature type="layout">
+Urdu
</feature>
</capabilities>
</release>
<release version="2.6">
<capabilities>
<feature type="layout">
+Hans Hant Jpan
<!-- CJK Language Variants? -->
</feature>
</capabilities>
</release>
<release version="3.0">
<capabilities>
<feature type="layout">
+Latn Cyrl Grek Armn Geor Runr Ogam Thai
</feature>
</capabilities>
</release>
<release version="3.4">
<capabilities>
<feature type="layout">
+Khmr
</feature>
</capabilities>
</release>
<release version="3.6">
<capabilities>
<feature type="layout">
+Hang Sinh Tibt
</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="java">
<releases>
<release version="1.4.2">
<capabilities>
<feature total="134" type="formatting">
<!-- Note: Java locales have different conventions than ICU. -->
ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE hi_IN iw iw_IL ja ja_JP ko ko_KR th th_TH th_TH_TH zh zh_CN zh_HK zh_TW be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de_AT de_CH de_DE de_LU el el_GR en_AU en_CA en_GB en_IE en_IN en_NZ en_ZA es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_UY es_VE et et_EE fi fi_FI fr fr_BE fr_CA fr_CH fr_FR fr_LU hr hr_HR hu hu_HU is is_IS it it_CH it_IT lt lt_LT lv lv_LV mk mk_MK nl nl_BE nl_NL no no_NO no_NO_NY pl pl_PL pt pt_BR pt_PT ro ro_RO ru ru_RU sh sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_YU sv sv_SE tr tr_TR uk uk_UA en en_US
</feature>
<feature total="134" type="collation">
<!-- Note: Java locales have different conventions than ICU. -->
ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE hi_IN iw iw_IL ja ja_JP ko ko_KR th th_TH th_TH_TH zh zh_CN zh_HK zh_TW be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de_AT de_CH de_DE de_LU el el_GR en_AU en_CA en_GB en_IE en_IN en_NZ en_ZA es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_UY es_VE et et_EE fi fi_FI fr fr_BE fr_CA fr_CH fr_FR fr_LU hr hr_HR hu hu_HU is is_IS it it_CH it_IT lt lt_LT lv lv_LV mk mk_MK nl nl_BE nl_NL no no_NO no_NO_NY pl pl_PL pt pt_BR pt_PT ro ro_RO ru ru_RU sh sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_YU sv sv_SE tr tr_TR uk uk_UA en en_US
</feature>
<feature type="layout">Arab Hebr Thai Beng Deva Gujr Knda Mlym Orya Punj Taml Telu Urdu Hans Hant Jpan Latn Cyrl Grek Armn Geor Runr Ogam Thai</feature>
<feature type="unicode" version="3.0"/>
<feature type="characters">af af_NA af_ZA ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LI de_LU el el_CY el_GR en en_AU en_BE en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU fr_MC fr_SN ga ga_IE gl gl_ES gu gu_IN gv gv_GB ha ha_Latn ha_Latn_NG haw haw_US he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID ii ii_CN is is_IS it it_CH it_IT ja ja_JP kk kk_Cyrl kk_Cyrl_KZ kl kl_GL km km_KH ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO ne ne_IN ne_NP nl nl_BE nl_NL nn nn_NO om om_ET om_KE pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA si si_LK sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA ur ur_IN ur_PK uz uz_Arab uz_Arab_AF uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_HK zh_Hans_MO zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="java">
<releases>
<release version="1.5.0">
<capabilities>
<feature total="135" type="locales">ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE hi_IN iw iw_IL ja ja_JP ko ko_KR th th_TH th_TH_TH vi vi_VN zh zh_CN zh_HK zh_TW be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de_AT de_CH de_DE de_LU el el_GR en_AU en_CA en_GB en_IE en_IN en_NZ en_ZA es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_UY es_VE et et_EE fi fi_FI fr fr_BE fr_CA fr_CH fr_FR fr_LU hr hr_HR hu hu_HU is is_IS it it_CH it_IT lt lt_LT lv lv_LV mk mk_MK nl nl_BE nl_NL no no_NO no_NO_NY pl pl_PL pt pt_BR pt_PT ro ro_RO ru ru_RU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_CS sv sv_SE tr tr_TR uk uk_UA en_US en<!--Note: Java locales have different conventions than ICU.--></feature>
<feature total="135" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE hi_IN iw iw_IL ja ja_JP ko ko_KR th th_TH th_TH_TH vi vi_VN zh zh_CN zh_HK zh_TW be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de_AT de_CH de_DE de_LU el el_GR en_AU en_CA en_GB en_IE en_IN en_NZ en_ZA es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_UY es_VE et et_EE fi fi_FI fr fr_BE fr_CA fr_CH fr_FR fr_LU hr hr_HR hu hu_HU is is_IS it it_CH it_IT lt lt_LT lv lv_LV mk mk_MK nl nl_BE nl_NL no no_NO no_NO_NY pl pl_PL pt pt_BR pt_PT ro ro_RO ru ru_RU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_CS sv sv_SE tr tr_TR uk uk_UA en_US en<!--Note: Java locales have different conventions than ICU.--></feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2009 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="java">
<releases>
<release version="1.6.0">
<capabilities>
<feature total="215" type="formatting">zh th ko iw uk tr sq sk pt pl nl ms mk lv lt kk is hr gu ga fr es cs ca es_PR en_HK pt_PT es_PY ar_YE hu_HU in_ID en_IE hi_IN te_IN ta_IN pa_IN or_IN mr_IN ml_IN kn_IN en_IN ja_JP_JP en_ZA ar_IQ sq_AL it_IT es_AR de_AT_PREEURO sr_RS_Cyrl nl_BE fr_BE en_BE_PREEURO ar_JO ja_JP es_BO pt_BR sv_SE_PREEURO zh_SG sl_SI_PREEURO sk_SK fr_CA es_SV fr_CH es_CL zh_CN ar_KW es_CO es_CR no_NO_NY th_TH ar_LB el_CY_PREEURO mt_MT_EURO cs_CZ tr_TR de_DE_PREEURO zh_TW sk_SK_EURO lt_LT_PREEURO fr_LU_PREEURO de_LU lv_LV_PREEURO es_DO uk_UA ar_LY ar_MA sr_ME es_US es_EC et_EE_PREEURO es_UY mt_MT en_MT cs_CZ_EURO es_ES ca_ES es_VE nl_NL_PREEURO no_NO fi_FI_PREEURO fr_FR en_NZ hu_HU_EURO ar_OM el_GR_PREEURO es_GT en_PH pl_PL_PREEURO vi ja ar te ta sv sr sl sh ru ro pa no mt mr kn it in hu fi et en el de da bg be zh_HK pt_PT_PREEURO es_HN hr_HR en_GB_EURO hu_HU_PREEURO ar_QA ga_IE en_IE_PREEURO iw_IL ar_AE gu_IN bn_IN is_IS it_IT_PREEURO pl_PL_EURO de_AT th_TH_TH en_AU ro_RO sr_BA sr_RS ru_RU nl_BE_PREEURO fr_BE_PREEURO en_BE bg_BG ar_BH ar_SA ar_SD sv_SE en_SG sl_SI da_DK_EURO be_BY sk_SK_PREEURO lt_LT_EURO lv_LV_EURO en_CA it_CH de_CH ar_SY ko_KR kk_KZ sr_CS sh_CS et_EE_EURO el_CY cs_CZ_PREEURO ar_TN de_DE sv_SE_EURO da_DK lt_LT fr_LU de_LU_PREEURO lv_LV ar_DZ mk_MK en_US et_EE ar_EG el_CY_EURO mt_MT_PREEURO es_MX ms_MY es_ES_PREEURO ca_ES_PREEURO sr_RS_Latn vi_VN es_NI nl_NL nb_NO fi_FI fr_FR_PREEURO en_GB el_GR es_PA es_PE pl_PL<!--Note: Java locales have different conventions than ICU.--></feature>
<feature total="215" type="collation">zh th ko iw uk tr sq sk pt pl nl ms mk lv lt kk is hr gu ga fr es cs ca es_PR en_HK pt_PT es_PY ar_YE hu_HU in_ID en_IE hi_IN te_IN ta_IN pa_IN or_IN mr_IN ml_IN kn_IN en_IN ja_JP_JP en_ZA ar_IQ sq_AL it_IT es_AR de_AT_PREEURO sr_RS_Cyrl nl_BE fr_BE en_BE_PREEURO ar_JO ja_JP es_BO pt_BR sv_SE_PREEURO zh_SG sl_SI_PREEURO sk_SK fr_CA es_SV fr_CH es_CL zh_CN ar_KW es_CO es_CR no_NO_NY th_TH ar_LB el_CY_PREEURO mt_MT_EURO cs_CZ tr_TR de_DE_PREEURO zh_TW sk_SK_EURO lt_LT_PREEURO fr_LU_PREEURO de_LU lv_LV_PREEURO es_DO uk_UA ar_LY ar_MA sr_ME es_US es_EC et_EE_PREEURO es_UY mt_MT en_MT cs_CZ_EURO es_ES ca_ES es_VE nl_NL_PREEURO no_NO fi_FI_PREEURO fr_FR en_NZ hu_HU_EURO ar_OM el_GR_PREEURO es_GT en_PH pl_PL_PREEURO vi ja ar te ta sv sr sl sh ru ro pa no mt mr kn it in hu fi et en el de da bg be zh_HK pt_PT_PREEURO es_HN hr_HR en_GB_EURO hu_HU_PREEURO ar_QA ga_IE en_IE_PREEURO iw_IL ar_AE gu_IN bn_IN is_IS it_IT_PREEURO pl_PL_EURO de_AT th_TH_TH en_AU ro_RO sr_BA sr_RS ru_RU nl_BE_PREEURO fr_BE_PREEURO en_BE bg_BG ar_BH ar_SA ar_SD sv_SE en_SG sl_SI da_DK_EURO be_BY sk_SK_PREEURO lt_LT_EURO lv_LV_EURO en_CA it_CH de_CH ar_SY ko_KR kk_KZ sr_CS sh_CS et_EE_EURO el_CY cs_CZ_PREEURO ar_TN de_DE sv_SE_EURO da_DK lt_LT fr_LU de_LU_PREEURO lv_LV ar_DZ mk_MK en_US et_EE ar_EG el_CY_EURO mt_MT_PREEURO es_MX ms_MY es_ES_PREEURO ca_ES_PREEURO sr_RS_Latn vi_VN es_NI nl_NL nb_NO fi_FI fr_FR_PREEURO en_GB el_GR es_PA es_PE pl_PL<!--Note: Java locales have different conventions than ICU.--></feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,24 @@
<!-- Copyright (c) 2012 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="java">
<releases>
<release version="1.6.0">
<capabilities>
<feature total="152" type="formatting">
<!-- Note: Java locales have different conventions than ICU. -->
ja_JP es_PE en ja_JP_JP es_PA sr_BA mk es_GT ar_AE no_NO sq_AL bg ar_IQ ar_YE hu pt_PT el_CY ar_QA mk_MK sv de_CH en_US fi_FI is cs en_MT sl_SI sk_SK it tr_TR zh th ar_SA no en_GB sr_CS lt ro en_NZ no_NO_NY lt_LT es_NI nl ga_IE fr_BE es_ES ar_LB ko fr_CA et_EE ar_KW sr_RS es_US es_MX ar_SD in_ID ru lv es_UY lv_LV iw pt_BR ar_SY hr et es_DO fr_CH hi_IN es_VE ar_BH en_PH ar_TN fi de_AT es nl_NL es_EC zh_TW ar_JO be is_IS es_CO es_CR es_CL ar_EG en_ZA th_TH el_GR it_IT ca hu_HU fr en_IE uk_UA pl_PL fr_LU nl_BE en_IN ca_ES ar_MA es_BO en_AU sr zh_SG pt uk es_SV ru_RU ko_KR vi ar_DZ vi_VN sr_ME sq ar_LY ar zh_CN be_BY zh_HK ja iw_IL bg_BG in mt_MT es_PY sl fr_FR cs_CZ it_CH ro_RO es_PR en_CA de_DE ga de_LU de es_AR sk ms_MY hr_HR en_SG da mt pl ar_OM tr th_TH_TH el ms sv_SE da_DK es_HN
</feature>
<feature total="152" type="collation">
<!-- Note: Java locales have different conventions than ICU. -->
ja_JP es_PE en ja_JP_JP es_PA sr_BA mk es_GT ar_AE no_NO sq_AL bg ar_IQ ar_YE hu pt_PT el_CY ar_QA mk_MK sv de_CH en_US fi_FI is cs en_MT sl_SI sk_SK it tr_TR zh th ar_SA no en_GB sr_CS lt ro en_NZ no_NO_NY lt_LT es_NI nl ga_IE fr_BE es_ES ar_LB ko fr_CA et_EE ar_KW sr_RS es_US es_MX ar_SD in_ID ru lv es_UY lv_LV iw pt_BR ar_SY hr et es_DO fr_CH hi_IN es_VE ar_BH en_PH ar_TN fi de_AT es nl_NL es_EC zh_TW ar_JO be is_IS es_CO es_CR es_CL ar_EG en_ZA th_TH el_GR it_IT ca hu_HU fr en_IE uk_UA pl_PL fr_LU nl_BE en_IN ca_ES ar_MA es_BO en_AU sr zh_SG pt uk es_SV ru_RU ko_KR vi ar_DZ vi_VN sr_ME sq ar_LY ar zh_CN be_BY zh_HK ja iw_IL bg_BG in mt_MT es_PY sl fr_FR cs_CZ it_CH ro_RO es_PR en_CA de_DE ga de_LU de es_AR sk ms_MY hr_HR en_SG da mt pl ar_OM tr th_TH_TH el ms sv_SE da_DK es_HN
</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,24 @@
<!-- Copyright (c) 2012 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="java">
<releases>
<release version="1.7.0">
<capabilities>
<feature total="156" type="formatting">
<!-- Note: Java locales have different conventions than ICU. -->
ms_MY ar_QA is_IS fi_FI pl en_MT it_CH nl_BE ar_SA ar_IQ es_PR es_CL fi de_AT da en_GB es_PA sr ar_YE mk_MK mk en_CA vi_VN nl_NL es_US zh_CN es_HN en_US fr th ar ar_MA lv de in_ID hr en_ZA ko_KR ar_TN in ja sr_RS be_BY zh_TW ar_SD pt is ja_JP_JP_#u-ca-japanese es_BO ar_DZ ms es_AR ar_AE fr_CA sl es lt_LT sr_ME_#Latn ar_SY ru_RU fr_BE es_ES bg iw_IL sv en iw da_DK es_CR zh_HK zh ca_ES th_TH uk_UA es_DO es_VE pl_PL ar_LY ar_JO it uk hu_HU ga es_GT es_PY bg_BG hr_HR sr_BA_#Latn ro_RO fr_LU no lt en_SG es_EC sr_BA es_NI sk ru mt es_SV nl hi_IN et el_GR sl_SI it_IT ja_JP de_LU fr_CH mt_MT ar_BH sq vi sr_ME pt_BR no_NO el de_CH zh_SG ar_KW ar_EG ga_IE es_PE cs_CZ tr_TR cs es_UY en_IE en_IN ar_OM sr_CS ca be sr__#Latn ko sq_AL pt_PT lv_LV sr_RS_#Latn sk_SK es_MX en_AU no_NO_NY en_NZ sv_SE ro ar_LB de_DE th_TH_TH_#u-nu-thai tr es_CO en_PH et_EE el_CY hu fr_FR
</feature>
<feature total="156" type="collation">
<!-- Note: Java locales have different conventions than ICU. -->
ms_MY ar_QA is_IS fi_FI pl en_MT it_CH nl_BE ar_SA ar_IQ es_PR es_CL fi de_AT da en_GB es_PA sr ar_YE mk_MK mk en_CA vi_VN nl_NL es_US zh_CN es_HN en_US fr th ar ar_MA lv de in_ID hr en_ZA ko_KR ar_TN in ja sr_RS be_BY zh_TW ar_SD pt is ja_JP_JP_#u-ca-japanese es_BO ar_DZ ms es_AR ar_AE fr_CA sl es lt_LT sr_ME_#Latn ar_SY ru_RU fr_BE es_ES bg iw_IL sv en iw da_DK es_CR zh_HK zh ca_ES th_TH uk_UA es_DO es_VE pl_PL ar_LY ar_JO it uk hu_HU ga es_GT es_PY bg_BG hr_HR sr_BA_#Latn ro_RO fr_LU no lt en_SG es_EC sr_BA es_NI sk ru mt es_SV nl hi_IN et el_GR sl_SI it_IT ja_JP de_LU fr_CH mt_MT ar_BH sq vi sr_ME pt_BR no_NO el de_CH zh_SG ar_KW ar_EG ga_IE es_PE cs_CZ tr_TR cs es_UY en_IE en_IN ar_OM sr_CS ca be sr__#Latn ko sq_AL pt_PT lv_LV sr_RS_#Latn sk_SK es_MX en_AU no_NO_NY en_NZ sv_SE ro ar_LB de_DE th_TH_TH_#u-nu-thai tr es_CO en_PH et_EE el_CY hu fr_FR
</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="2.2">
<capabilities>
<feature type="unicode" version="3.2"/>
<feature type="formatting"/>
<feature type="collation"/>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="2.4">
<capabilities>
<feature type="unicode" version="3.2"/>
<feature type="formatting"/>
<feature type="collation"/>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="2.6">
<capabilities>
<feature type="unicode" version="4.0"/>
<feature type="formatting"/>
<feature type="collation"/>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="2.6.1">
<capabilities>
<feature type="unicode" version="4.0"/>
<feature type="formatting"/>
<feature type="collation"/>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="2.8">
<capabilities>
<feature type="unicode" version="4.0"/>
<feature type="uca" version="4.0"/>
<feature type="formatting"/>
<feature type="collation"/>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.0">
<capabilities>
<feature type="unicode" version="4.0.1"/>
<feature type="uca" version="4.0"/>
<feature total="219" type="formatting">
af af_ZA am am_ET ar ar_AE
ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM
ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG bn bn_IN ca
ca_ES cs cs_CZ da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR
en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ
en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO
es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA
es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa
fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga
ga_IE gl gl_ES gu gu_IN gv gv_GB he he_IL hi hi_IN hr hr_HR hu
hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja
ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt
lt_LT lv lv_LV mk mk_MK mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO
nl nl_BE nl_NL nn nn_NO om om_ET om_KE pa pa_IN pl pl_PL ps ps_AF
pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sh sh_YU sk sk_SK sl sl_SI
so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_YU sv sv_FI sv_SE sw
sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk
uk_UA vi vi_VN zh zh_CN zh_HK zh_MO zh_SG zh_TW
</feature>
<feature total="59" type="collation">ar be bg ca cs da de el en en_BE eo es et fa fa_AF fi fo fr gu he hi hr hu is it ja kk kl kn ko lt lv mk mr mt nb nn pa pl ps ro ru sh sk sl sq sr sv ta te th tr uk vi zh zh_HK zh_Hant zh_MO zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.2">
<capabilities>
<feature type="unicode" version="4.0.1"/>
<feature type="uca" version="4.0"/>
<feature total="230" type="formatting">af af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_PK en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gl gl_ES gu gu_IN gv gv_GB he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_YU sr_Latn sr_Latn_YU sr_YU sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="62" type="collation">ar be bg ca cs da de el en en_BE eo es et fa fa_AF fi fo fr gu he hi hr hu is it ja kk kl kn ko lt lv mk ml mr mt nb nn om or pa pl ps ro ru sh sk sl sq sr sv ta te th tr uk vi zh zh_HK zh_Hant zh_MO zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.4">
<capabilities>
<feature type="unicode" version="4.1"/>
<feature type="uca" version="4.1"/>
<feature total="242" type="formatting">af af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_PK en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gl gl_ES gu gu_IN gv gv_GB he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_CS sr_Latn sr_Latn_CS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_PK uz uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="197" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sh sh_BA sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_Cyrl sr_Cyrl_BA sr_Cyrl_YU sr_YU sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh_CN zh_HK zh_Hant zh_MO zh_SG zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.4">
<capabilities>
<feature type="unicode" version="4.1"/>
<feature type="uca" version="4.1"/>
<feature total="242" type="formatting">af af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_PK en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gl gl_ES gu gu_IN gv gv_GB he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_CS sr_Latn sr_Latn_CS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_PK uz uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="197" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sh sh_BA sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_Cyrl sr_Cyrl_BA sr_Cyrl_YU sr_YU sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh_CN zh_HK zh_Hant zh_MO zh_SG zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.4.2">
<capabilities>
<feature type="unicode" version="4.1"/>
<feature type="uca" version="4.1"/>
<feature total="242" type="formatting">af af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_PK en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gl gl_ES gu gu_IN gv gv_GB he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_CS sr_Latn sr_Latn_CS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_PK uz uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="197" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sh sh_BA sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_Cyrl sr_Cyrl_BA sr_Cyrl_YU sr_YU sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh_CN zh_HK zh_Hant zh_MO zh_SG zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.4.3">
<capabilities>
<feature type="unicode" version="4.1"/>
<feature type="uca" version="4.1"/>
<feature total="242" type="formatting">af af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_PK en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gl gl_ES gu gu_IN gv gv_GB he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_CS sr_Latn sr_Latn_CS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_PK uz uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="201" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN he he_IL hi hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sh sh_BA sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_Cyrl sr_Cyrl_BA sr_Cyrl_YU sr_YU sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh zh_CN zh_HK zh_Hant zh_MO zh_SG zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.4.3">
<capabilities>
<feature type="unicode" version="4.1"/>
<feature type="uca" version="4.1"/>
<feature total="242" type="formatting">af af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_PK en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gl gl_ES gu gu_IN gv gv_GB he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_CS sr_Latn sr_Latn_CS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_PK uz uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="201" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN he he_IL hi hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sh sh_BA sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_Cyrl sr_Cyrl_BA sr_Cyrl_YU sr_YU sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh zh_CN zh_HK zh_Hant zh_MO zh_SG zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.4.5">
<capabilities>
<feature type="unicode" version="4.1"/>
<feature type="uca" version="4.1"/>
<feature total="242" type="formatting">af af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_PK en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gl gl_ES gu gu_IN gv gv_GB he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_CS sr_Latn sr_Latn_CS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_PK uz uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="201" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN he he_IL hi hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sh sh_BA sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_Cyrl sr_Cyrl_BA sr_Cyrl_YU sr_YU sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh zh_CN zh_HK zh_Hant zh_MO zh_SG zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2009 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.6">
<capabilities>
<feature type="unicode" version="5.0"/>
<feature type="uca" version="5.0"/>
<feature total="245" type="formatting">af af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_PK en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gl gl_ES gu gu_IN gv gv_GB haw haw_US he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_CS sr_Latn sr_Latn_CS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_IN ur_PK uz uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="205" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN be be_BY bg bg_BG bn ca ca_ES cs cs_CZ da da_DK de de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN he he_IL hi hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL kn kn_IN ko ko_KR kok lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sh sh_BA sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_Cyrl sr_Cyrl_BA sr_Cyrl_YU sr_YU sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh zh_CN zh_HK zh_Hant zh_MO zh_SG zh_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.8">
<capabilities>
<feature type="unicode" version="5.0"/>
<feature type="uca" version="5.0"/>
<feature type="tz" version="2007g"/>
<feature total="266" type="formatting">af af_NA af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_BD bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LI de_LU el el_CY el_GR en en_AU en_BE en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU fr_MC ga ga_IE gl gl_ES gu gu_IN gv gv_GB haw haw_US he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP ka ka_GE kk kk_KZ kl kl_GL km km_KH kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_IN ur_PK uz uz_Arab uz_Arab_AF uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="204" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN be be_BY bg bg_BG bn ca ca_ES cs cs_CZ cy da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN haw he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL km kn kn_IN ko ko_KR kok lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="3.8.1">
<capabilities>
<feature type="unicode" version="5.0"/>
<feature type="uca" version="5.0"/>
<feature type="tz" version="2007j"/>
<feature total="266" type="formatting">af af_NA af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_BD bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LI de_LU el el_CY el_GR en en_AU en_BE en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU fr_MC ga ga_IE gl gl_ES gu gu_IN gv gv_GB haw haw_US he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID is is_IS it it_CH it_IT ja ja_JP ka ka_GE kk kk_KZ kl kl_GL km km_KH kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_IN ur_PK uz uz_Arab uz_Arab_AF uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="204" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN be be_BY bg bg_BG bn ca ca_ES cs cs_CZ cy da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN haw he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL km kn kn_IN ko ko_KR kok lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="4.0">
<capabilities>
<feature type="unicode" version="5.1"/>
<feature type="uca" version="5.1"/>
<feature type="tz" version="2008c"/>
<feature total="282" type="formatting">af af_NA af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_BD bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LI de_LU el el_CY el_GR en en_AU en_BE en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU fr_MC fr_SN ga ga_IE gl gl_ES gu gu_IN gv gv_GB ha ha_Latn ha_Latn_NG haw haw_US he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID ii ii_CN is is_IS it it_CH it_IT ja ja_JP ka ka_GE kk kk_Cyrl kk_Cyrl_KZ kl kl_GL km km_KH kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO ne ne_IN ne_NP nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA si si_LK sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_IN ur_PK uz uz_Arab uz_Arab_AF uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_HK zh_Hans_MO zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="211" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN haw he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL km kn kn_IN ko ko_KR kok lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA ur ur_IN ur_PK vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2009 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="4.0.1">
<capabilities>
<feature type="unicode" version="5.1"/>
<feature type="uca" version="5.1"/>
<feature type="tz" version="2008i"/>
<feature total="282" type="formatting">af af_NA af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_BD bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LI de_LU el el_CY el_GR en en_AU en_BE en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU fr_MC fr_SN ga ga_IE gl gl_ES gu gu_IN gv gv_GB ha ha_Latn ha_Latn_NG haw haw_US he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID ii ii_CN is is_IS it it_CH it_IT ja ja_JP ka ka_GE kk kk_Cyrl kk_Cyrl_KZ kl kl_GL km km_KH kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO ne ne_IN ne_NP nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA si si_LK sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_IN ur_PK uz uz_Arab uz_Arab_AF uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_HK zh_Hans_MO zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="211" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN haw he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL km kn kn_IN ko ko_KR kok lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA ur ur_IN ur_PK vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2008 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="4.1.1">
<capabilities>
<feature type="unicode" version="5.1"/>
<feature type="uca" version="5.1"/>
<feature type="tz" version="2008f"/>
<feature total="282" type="formatting">af af_NA af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_BD bn_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LI de_LU el el_CY el_GR en en_AU en_BE en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU fr_MC fr_SN ga ga_IE gl gl_ES gu gu_IN gv gv_GB ha ha_Latn ha_Latn_NG haw haw_US he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID ii ii_CN is is_IS it it_CH it_IT ja ja_JP ka ka_GE kk kk_Cyrl kk_Cyrl_KZ kl kl_GL km km_KH kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO ne ne_IN ne_NP nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA si si_LK sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_IN ur_PK uz uz_Arab uz_Arab_AF uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_HK zh_Hans_MO zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
<feature total="211" type="collation">ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN haw he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL km kn kn_IN ko ko_KR kok lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA sk sk_SK sl sl_SI sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA ur ur_IN ur_PK vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2009 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="4.2">
<capabilities>
<feature type="unicode" version="5.1"/>
<feature type="uca" version="5.1"/>
<feature type="tz" version="2009g"/>
<feature total="292" type="formatting">af af_NA af_ZA am am_ET ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_BD bn_IN bo bo_CN bo_IN ca ca_ES cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LI de_LU el el_CY el_GR en en_AU en_BE en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU fr_MC fr_SN ga ga_IE gl gl_ES gsw gsw_CH gu gu_IN gv gv_GB ha ha_Latn ha_Latn_GH ha_Latn_NE ha_Latn_NG haw haw_US he he_IL hi hi_IN hr hr_HR hu hu_HU hy hy_AM hy_AM_REVISED id id_ID ii ii_CN is is_IS it it_CH it_IT ja ja_JP ka ka_GE kk kk_Cyrl kk_Cyrl_KZ kl kl_GL km km_KH kn kn_IN ko ko_KR kok kok_IN kw kw_GB lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO ne ne_IN ne_NP nl nl_BE nl_NL nn nn_NO om om_ET om_KE or or_IN pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_MD ro_RO ru ru_RU ru_UA si si_LK sk sk_SK sl sl_SI so so_DJ so_ET so_KE so_SO sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE sw sw_KE sw_TZ ta ta_IN te te_IN th th_TH ti ti_ER ti_ET tr tr_TR uk uk_UA ur ur_IN ur_PK uz uz_Arab uz_Arab_AF uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_HK zh_Hans_MO zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW zu zu_ZA</feature>
<feature total="220" type="collation">af af_NA af_ZA ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as as_IN az az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_IN ca ca_ES cs cs_CZ cy da da_DK de de_AT de_BE de_CH de_DE de_LU el el_GR en en_AU en_BE en_BW en_CA en_GB en_HK en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_US_POSIX en_VI en_ZA en_ZW eo es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE gu gu_IN haw he he_IL hi hi_IN hr hr_HR hu hu_HU id id_ID is is_IS it it_CH it_IT ja ja_JP kk kk_KZ kl kl_GL km kn kn_IN ko ko_KR kok lt lt_LT lv lv_LV mk mk_MK ml mr mr_IN ms ms_BN ms_MY mt mt_MT nb nb_NO nl nl_BE nl_NL nn nn_NO om om_ET om_KE or pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pa_IN pl pl_PL ps ps_AF pt pt_BR pt_PT ro ro_RO ru ru_RU ru_UA si si_LK sk sk_SK sl sl_SI sq sq_AL sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_FI sv_SE ta ta_IN te te_IN th th_TH tr tr_TR uk uk_UA ur ur_IN ur_PK vi vi_VN zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2012 IBM Corporation and Others, All Rights Reserved. -->
<!DOCTYPE icuInfo SYSTEM "http://icu-project.org/dtd/icumeta.dtd">
<icuInfo>
<icuProducts>
<icuProduct type="icu4j">
<releases>
<release version="50.1">
<capabilities>
<feature type="unicode" version="6.2"/>
<feature type="uca" version="6.2"/>
<feature type="tz" version="2012h"/>
<feature total="593" type="formatting">af af_NA af_ZA agq agq_CM ak ak_GH am am_ET ar ar_001 ar_AE ar_BH ar_DJ ar_DZ ar_EG ar_EH ar_ER ar_IL ar_IQ ar_JO ar_KM ar_KW ar_LB ar_LY ar_MA ar_MR ar_OM ar_PS ar_QA ar_SA ar_SD ar_SO ar_SY ar_TD ar_TN ar_YE as as_IN asa asa_TZ az az_Cyrl az_Cyrl_AZ az_Latn az_Latn_AZ bas bas_CM be be_BY bem bem_ZM bez bez_TZ bg bg_BG bm bm_ML bn bn_BD bn_IN bo bo_CN bo_IN br br_FR brx brx_IN bs bs_Cyrl bs_Cyrl_BA bs_Latn bs_Latn_BA ca ca_AD ca_ES cgg cgg_UG chr chr_US cs cs_CZ cy cy_GB da da_DK dav dav_KE de de_AT de_BE de_CH de_DE de_LI de_LU dje dje_NE dua dua_CM dyo dyo_SN dz dz_BT ebu ebu_KE ee ee_GH ee_TG el el_CY el_GR en en_150 en_AG en_AS en_AU en_BB en_BE en_BM en_BS en_BW en_BZ en_CA en_CM en_DM en_FJ en_FM en_GB en_GD en_GG en_GH en_GI en_GM en_GU en_GY en_HK en_IE en_IM en_IN en_JE en_JM en_KE en_KI en_KN en_KY en_LC en_LR en_LS en_MG en_MH en_MP en_MT en_MU en_MW en_NA en_NG en_NZ en_PG en_PH en_PK en_PR en_PW en_SB en_SC en_SG en_SL en_SS en_SZ en_TC en_TO en_TT en_TZ en_UG en_UM en_US en_US_POSIX en_VC en_VG en_VI en_VU en_WS en_ZA en_ZM en_ZW eo es es_419 es_AR es_BO es_CL es_CO es_CR es_CU es_DO es_EA es_EC es_ES es_GQ es_GT es_HN es_IC es_MX es_NI es_PA es_PE es_PH es_PR es_PY es_SV es_US es_UY es_VE et et_EE eu eu_ES ewo ewo_CM fa fa_AF fa_IR ff ff_SN fi fi_FI fil fil_PH fo fo_FO fr fr_BE fr_BF fr_BI fr_BJ fr_BL fr_CA fr_CD fr_CF fr_CG fr_CH fr_CI fr_CM fr_DJ fr_DZ fr_FR fr_GA fr_GF fr_GN fr_GP fr_GQ fr_HT fr_KM fr_LU fr_MA fr_MC fr_MF fr_MG fr_ML fr_MQ fr_MR fr_MU fr_NC fr_NE fr_PF fr_RE fr_RW fr_SC fr_SN fr_SY fr_TD fr_TG fr_TN fr_VU fr_YT ga ga_IE gl gl_ES gsw gsw_CH gu gu_IN guz guz_KE gv gv_GB ha ha_Latn ha_Latn_GH ha_Latn_NE ha_Latn_NG haw haw_US he he_IL hi hi_IN hr hr_BA hr_HR hu hu_HU hy hy_AM id id_ID ig ig_NG ii ii_CN is is_IS it it_CH it_IT it_SM ja ja_JP jgo jgo_CM jmc jmc_TZ ka ka_GE kab kab_DZ kam kam_KE kde kde_TZ kea kea_CV khq khq_ML ki ki_KE kk kk_Cyrl kk_Cyrl_KZ kl kl_GL kln kln_KE km km_KH kn kn_IN ko ko_KP ko_KR kok kok_IN ks ks_Arab ks_Arab_IN ksb ksb_TZ ksf ksf_CM kw kw_GB lag lag_TZ lg lg_UG ln ln_AO ln_CD ln_CF ln_CG lo lo_LA lt lt_LT lu lu_CD luo luo_KE luy luy_KE lv lv_LV mas mas_KE mas_TZ mer mer_KE mfe mfe_MU mg mg_MG mgh mgh_MZ mgo mgo_CM mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY ms_SG mt mt_MT mua mua_CM my my_MM naq naq_NA nb nb_NO nd nd_ZW ne ne_IN ne_NP nl nl_AW nl_BE nl_CW nl_NL nl_SR nl_SX nmg nmg_CM nn nn_NO nus nus_SD nyn nyn_UG om om_ET om_KE or or_IN pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_AO pt_BR pt_CV pt_GW pt_MO pt_MZ pt_PT pt_ST pt_TL rm rm_CH rn rn_BI ro ro_MD ro_RO rof rof_TZ ru ru_BY ru_KG ru_KZ ru_MD ru_RU ru_UA rw rw_RW rwk rwk_TZ saq saq_KE sbp sbp_TZ seh seh_MZ ses ses_ML sg sg_CF shi shi_Latn shi_Latn_MA shi_Tfng shi_Tfng_MA si si_LK sk sk_SK sl sl_SI sn sn_ZW so so_DJ so_ET so_KE so_SO sq sq_AL sq_MK sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_AX sv_FI sv_SE sw sw_KE sw_TZ sw_UG swc swc_CD ta ta_IN ta_LK ta_MY ta_SG te te_IN teo teo_KE teo_UG th th_TH ti ti_ER ti_ET to to_TO tr tr_CY tr_TR twq twq_NE tzm tzm_Latn tzm_Latn_MA uk uk_UA ur ur_IN ur_PK uz uz_Arab uz_Arab_AF uz_Cyrl uz_Cyrl_UZ uz_Latn uz_Latn_UZ vai vai_Latn vai_Latn_LR vai_Vaii vai_Vaii_LR vi vi_VN vun vun_TZ xog xog_UG yav yav_CM yo yo_NG zh zh_Hans zh_Hans_CN zh_Hans_HK zh_Hans_MO zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW zu zu_ZA</feature>
<feature total="401" type="collation">af af_NA af_ZA ar ar_001 ar_AE ar_BH ar_DJ ar_DZ ar_EG ar_EH ar_ER ar_IL ar_IQ ar_JO ar_KM ar_KW ar_LB ar_LY ar_MA ar_MR ar_OM ar_PS ar_QA ar_SA ar_SD ar_SO ar_SY ar_TD ar_TN ar_YE as as_IN az az_Latn az_Latn_AZ be be_BY bg bg_BG bn bn_BD bn_IN bs bs_Cyrl bs_Cyrl_BA bs_Latn bs_Latn_BA ca ca_AD ca_ES chr chr_US cs cs_CZ cy cy_GB da da_DK de de_AT de_BE de_CH de_DE de_LI de_LU dz ee ee_GH ee_TG el el_CY el_GR en en_150 en_AG en_AS en_AU en_BB en_BE en_BM en_BS en_BW en_BZ en_CA en_CM en_DM en_FJ en_FM en_GB en_GD en_GG en_GH en_GI en_GM en_GU en_HK en_IE en_IM en_IN en_JE en_JM en_KE en_KI en_KN en_KY en_LC en_LR en_LS en_MG en_MH en_MP en_MT en_MU en_MW en_NA en_NG en_NZ en_PG en_PH en_PK en_PR en_PW en_SB en_SC en_SG en_SL en_SS en_TC en_TO en_TT en_TZ en_UG en_UM en_US en_US_POSIX en_VC en_VG en_VI en_VU en_WS en_ZA en_ZM en_ZW eo es es_419 es_AR es_BO es_CL es_CO es_CR es_CU es_DO es_EA es_EC es_ES es_GQ es_GT es_HN es_IC es_MX es_NI es_PA es_PE es_PH es_PR es_PY es_SV es_US es_UY es_VE et et_EE fa fa_AF fa_IR fi fi_FI fil fil_PH fo fo_FO fr fr_BE fr_BF fr_BI fr_BJ fr_BL fr_CA fr_CD fr_CF fr_CG fr_CH fr_CI fr_CM fr_DJ fr_DZ fr_FR fr_GA fr_GN fr_GP fr_GQ fr_HT fr_KM fr_LU fr_MA fr_MC fr_MF fr_MG fr_ML fr_MQ fr_MR fr_MU fr_NC fr_NE fr_PF fr_RE fr_RW fr_SC fr_SN fr_SY fr_TD fr_TG fr_TN fr_VU ga ga_IE gu gu_IN ha ha_Latn ha_Latn_GH ha_Latn_NE ha_Latn_NG haw he he_IL hi hi_IN hr hr_BA hr_HR hu hu_HU hy hy_AM id id_ID ig ig_NG is is_IS it it_CH it_IT it_SM ja ja_JP ka ka_GE kk kk_KZ kl kl_GL km km_KH kn kn_IN ko ko_KP ko_KR kok kok_IN ln ln_AO ln_CD ln_CF ln_CG lt lt_LT lv lv_LV mk mk_MK ml ml_IN mr mr_IN ms ms_BN ms_MY ms_SG mt mt_MT my my_MM nb nb_NO nl nl_AW nl_BE nl_CW nl_NL nl_SR nl_SX nn nn_NO om om_ET om_KE or or_IN pa pa_Arab pa_Arab_PK pa_Guru pa_Guru_IN pl pl_PL ps ps_AF pt pt_AO pt_BR pt_CV pt_GW pt_MO pt_MZ pt_PT pt_ST pt_TL ro ro_MD ro_RO ru ru_BY ru_KG ru_KZ ru_MD ru_RU ru_UA si si_LK sk sk_SK sl sl_SI sq sq_AL sq_MK sr sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sv sv_AX sv_FI sv_SE sw sw_KE sw_TZ sw_UG ta ta_IN ta_LK ta_MY ta_SG te te_IN th th_TH to to_TO tr tr_CY tr_TR uk uk_UA ur ur_IN ur_PK vi vi_VN yo yo_NG zh zh_Hans zh_Hans_CN zh_Hans_SG zh_Hant zh_Hant_HK zh_Hant_MO zh_Hant_TW zu zu_ZA</feature>
</capabilities>
</release>
</releases>
</icuProduct>
</icuProducts>
</icuInfo>

View file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:215e9cc66b7962f53a08db564558553366f06f64eb6d8508a3ff2dac47c90cb6
size 9713

View file

@ -0,0 +1,3 @@
# Copyright (C) 2012 IBM Corporation and Others. All Rights Reserved.
Note: this is a bit of a mess right now.

Some files were not shown because too many files have changed in this diff Show more