Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Jul 2009 22:02:13 +0000 (UTC)
From:      Edwin Groothuis <edwin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r195955 - user/edwin/locale/tools
Message-ID:  <200907292202.n6TM2DvU083639@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: edwin
Date: Wed Jul 29 22:02:13 2009
New Revision: 195955
URL: http://svn.freebsd.org/changeset/base/195955

Log:
  Add support for the (FreeBSD specific) alternative month.
  Since it is not defined in the CLDR, we have to keep track of the
  information ourselves as long it differs from the normal long month
  name.

Modified:
  user/edwin/locale/tools/charmaps.pm
  user/edwin/locale/tools/charmaps.xml
  user/edwin/locale/tools/cldr2def.pl

Modified: user/edwin/locale/tools/charmaps.pm
==============================================================================
--- user/edwin/locale/tools/charmaps.pm	Wed Jul 29 21:54:34 2009	(r195954)
+++ user/edwin/locale/tools/charmaps.pm	Wed Jul 29 22:02:13 2009	(r195955)
@@ -1,5 +1,9 @@
 #!/usr/local/bin/perl -w
 
+#
+# $FreeBSD$
+#
+
 use strict;
 use XML::Parser;
 use Data::Dumper;
@@ -9,7 +13,9 @@ my %d = ();
 my $index = -1;
 
 sub get_xmldata {
-	open(FIN, "charmaps.xml");
+	my $xmlfile = shift;
+
+	open(FIN, $xmlfile);
 	my @xml = <FIN>;
 	chomp(@xml);
 	close(FIN);
@@ -38,10 +44,12 @@ sub h_start {
 
 	$data{element}{++$index} = $element;
 
-	if ($element eq "language") {
+	if ($index == 2
+	 && $data{element}{1} eq "languages"
+	 && $element eq "language") {
 		my $name = $attrs{name};
-		my $encoding = $attrs{encoding};
 		my $countries = $attrs{countries};
+		my $encoding = $attrs{encoding};
 		my $family = $attrs{family};
 		my $f = defined $attrs{family} ? $attrs{family} : "x";
 		my $link = $attrs{link};
@@ -63,7 +71,9 @@ sub h_start {
 		return;
 	}
 
-	if ($element eq "translation") {
+	if ($index == 2
+	 && $data{element}{1} eq "translations"
+	 && $element eq "translation") {
 		if (defined $attrs{hex}) {
 			my $k = "<" . $attrs{cldr} . ">";
 			my $hs = $attrs{hex};
@@ -80,17 +90,51 @@ sub h_start {
 		}
 		return;
 	}
+
+	if ($index == 2
+	 && $data{element}{1} eq "alternativemonths"
+	 && $element eq "language") {
+		my $name = $attrs{name};
+		my $countries = $attrs{countries};
+
+		$data{fields}{name} = $name;
+		$data{fields}{countries} = $countries;
+		$data{fields}{text} = "";
+
+		return;
+	}
 }
 
 sub h_end {
 	my $expat = shift;
 	my $element = shift;
+
+	if ($index == "2") {
+		if ($data{element}{1} eq "alternativemonths"
+		 && $data{element}{2} eq "language") {
+			foreach my $c (split(/,/, $data{fields}{countries})) {
+				my $m = $data{fields}{text};
+
+				$m =~ s/[\t ]//g;
+				$d{AM}{$data{fields}{name}}{$c} = $m;
+			}
+			$data{fields} = ();
+		}
+	}
+
 	$index--;
 }
 
 sub h_char {
 	my $expat = shift;
 	my $string = shift;
+
+	if ($index == "2") {
+		if ($data{element}{1} eq "alternativemonths"
+		 && $data{element}{2} eq "language") {
+			$data{fields}{text} .= $string;
+		}
+	}
 }
 
 #use Data::Dumper;

Modified: user/edwin/locale/tools/charmaps.xml
==============================================================================
--- user/edwin/locale/tools/charmaps.xml	Wed Jul 29 21:54:34 2009	(r195954)
+++ user/edwin/locale/tools/charmaps.xml	Wed Jul 29 22:02:13 2009	(r195955)
@@ -1,3 +1,4 @@
+<!-- $FreeBSD -->
 <data>
 <languages>
 	<!-- Attributes known:
@@ -5,16 +6,21 @@
 		encoding = encodings to be done - seperated by space
 		countries = countries to create - seperated by space
 		family = which font family - only one
-		link = only with family, create this original file too - only one
-		fallback = read this file if name_countries doesn't exist - only one
+		link = only with family, create this original file too - \
+			only one
+		fallback = read this file if name_countries doesn't exist - \
+			only one
 
 		By default, the name of the input file is name_countries.
-		If family is defined, the name of the input file will be name_family_countries.
+		If family is defined, the name of the input file will be \
+			name_family_countries.
 		If fallback is defined, the name of the input file will be that.
 
 		By default, the name of the output file is name_countries.
-		If family is defined, the name of the output file will be name_family_countries.
-		For backwards compatibility you use link which is name_countries.
+		If family is defined, the name of the output file will be \
+			name_family_countries.
+		For backwards compatibility you use link which is \
+			name_countries.
 
 	-->
 	<language name="af"
@@ -31,7 +37,7 @@
 	<language name="ca"
 		fallback="ca_ES"
 		encoding="ISO8859-1 ISO8859-15"
-		countries="AD ES FR IT" />	<!-- Not defined for anything else -->
+		countries="AD ES FR IT" />	<!-- only ca_ES defined -->
 	<language name="cs"
 		encoding="ISO8859-2"
 		countries="CZ" />
@@ -46,7 +52,7 @@
 		countries="GR" />
 	<language name="en"
 		encoding="ISO8859-1 ISO8859-15 US-ASCII"
-		countries="AU CA GB NZ US" />
+		countries="AU CA GB NZ US ZA" />
 	<language name="en"
 		countries="IE" />
 	<language name="es"
@@ -191,6 +197,9 @@
 	<translation encoding="ISO8859-5" cldr="HRYVNIA_SIGN" hex="D3E0DD" />
 	<translation encoding="KOI8-U" cldr="HRYVNIA_SIGN" hex="C7D2CE" />
 
+	<!-- Spaces from XX -->
+	<!-- translation encoding="US-ASCII" cldr="NO-BREAK_SPACE" string="XX" / -->
+
 	<!-- Value found in http://en.wikipedia.org/wiki/Pound_sign -->
 	<translation encoding="US-ASCII" cldr="POUND_SIGN" hex="A3" />
 
@@ -234,4 +243,159 @@
 	<translation encoding="ARMSCII-8" cldr="ONE_DOT_LEADER" string="." />
 
 </translations>
+
+<alternativemonths>
+	<!-- Months which are different in dates ("21 december 1980") and in
+		sentence usage ("We will do that in December.").
+		The CLDR doesn't understand them, therefore we have
+		to define them inline. Fortunately it doesn't happen
+		often...
+	  -->
+	<language name="be" countries="BY">
+		<![CDATA[
+		"<CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_ZE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_YU><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_YERU>";
+		"<CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_KA><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_KA>";
+		"<CYRILLIC_SMALL_LETTER_KA><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_KA>";
+		"<CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_CHE><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_PE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_ZHE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_KA><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_YERU><CYRILLIC_SMALL_LETTER_CHE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_KA>";
+		"<CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_PE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_DE>";
+		"<CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_ZHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>"
+		]]>
+	</language>
+	<language name="cs" countries="CZ">
+		<![CDATA[
+		"<l><e><d><e><n>";
+		"<LATIN_SMALL_LETTER_U_WITH_ACUTE><n><o><r>";
+		"<b><LATIN_SMALL_LETTER_R_WITH_CARON><e><z><e><n>";
+		"<d><u><b><e><n>";
+		"<k><v><LATIN_SMALL_LETTER_E_WITH_CARON><t><e><n>";
+		"<LATIN_SMALL_LETTER_C_WITH_CARON><e><r><v><e><n>";
+		"<LATIN_SMALL_LETTER_C_WITH_CARON><e><r><v><e><n><e><c>";
+		"<s><r><p><e><n>";
+		"<z><LATIN_SMALL_LETTER_A_WITH_ACUTE><LATIN_SMALL_LETTER_R_WITH_CARON><LATIN_SMALL_LETTER_I_WITH_ACUTE>";
+		"<LATIN_SMALL_LETTER_R_WITH_CARON><LATIN_SMALL_LETTER_I_WITH_ACUTE><j><e><n>";
+		"<l><i><s><t><o><p><a><d>";
+		"<p><r><o><s><i><n><e><c>"
+		]]>
+	</language>
+	<language name="el" countries="GR">
+		<![CDATA[
+		"<GREEK_CAPITAL_LETTER_IOTA><GREEK_SMALL_LETTER_ALPHA><GREEK_SMALL_LETTER_NU><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_UPSILON><GREEK_SMALL_LETTER_ALPHA_WITH_TONOS><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_PHI><GREEK_SMALL_LETTER_EPSILON><GREEK_SMALL_LETTER_BETA><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_UPSILON><GREEK_SMALL_LETTER_ALPHA_WITH_TONOS><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_MU><GREEK_SMALL_LETTER_ALPHA_WITH_TONOS><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_TAU><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_ALPHA><GREEK_SMALL_LETTER_PI><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_IOTA_WITH_TONOS><GREEK_SMALL_LETTER_LAMDA><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_MU><GREEK_SMALL_LETTER_ALPHA_WITH_TONOS><GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_UPSILON_WITH_TONOS><GREEK_SMALL_LETTER_NU><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_UPSILON_WITH_TONOS><GREEK_SMALL_LETTER_LAMDA><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_ALPHA><GREEK_SMALL_LETTER_UPSILON_WITH_TONOS><GREEK_SMALL_LETTER_GAMMA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_UPSILON><GREEK_SMALL_LETTER_SIGMA><GREEK_SMALL_LETTER_TAU><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_SIGMA><GREEK_SMALL_LETTER_EPSILON><GREEK_SMALL_LETTER_PI><GREEK_SMALL_LETTER_TAU><GREEK_SMALL_LETTER_EPSILON_WITH_TONOS><GREEK_SMALL_LETTER_MU><GREEK_SMALL_LETTER_BETA><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_OMICRON><GREEK_SMALL_LETTER_KAPPA><GREEK_SMALL_LETTER_TAU><GREEK_SMALL_LETTER_OMEGA_WITH_TONOS><GREEK_SMALL_LETTER_BETA><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_NU><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_EPSILON_WITH_TONOS><GREEK_SMALL_LETTER_MU><GREEK_SMALL_LETTER_BETA><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>";
+		"<GREEK_CAPITAL_LETTER_DELTA><GREEK_SMALL_LETTER_EPSILON><GREEK_SMALL_LETTER_KAPPA><GREEK_SMALL_LETTER_EPSILON_WITH_TONOS><GREEK_SMALL_LETTER_MU><GREEK_SMALL_LETTER_BETA><GREEK_SMALL_LETTER_RHO><GREEK_SMALL_LETTER_IOTA><GREEK_SMALL_LETTER_OMICRON><GREEK_SMALL_LETTER_FINAL_SIGMA>"
+		]]>
+	</language>
+	<language name="kk" countries="KZ">
+		<![CDATA[
+		"<CYRILLIC_SMALL_LETTER_KA_WITH_DESCENDER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_KA_WITH_DESCENDER><CYRILLIC_SMALL_LETTER_PE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EN>";
+		"<CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_YERU><CYRILLIC_SMALL_LETTER_ZE>";
+		"<CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_SCHWA><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_SMALL_LETTER_EM><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EM><CYRILLIC_SMALL_LETTER_YERU><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_SMALL_LETTER_EM><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_YERU><CYRILLIC_SMALL_LETTER_EM>";
+		"<CYRILLIC_SMALL_LETTER_SHA><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_IE>";
+		"<CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EM><CYRILLIC_SMALL_LETTER_YERU><CYRILLIC_SMALL_LETTER_ZE>";
+		"<CYRILLIC_SMALL_LETTER_KA_WITH_DESCENDER><CYRILLIC_SMALL_LETTER_YERU><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_KA><CYRILLIC_SMALL_LETTER_STRAIGHT_U><CYRILLIC_SMALL_LETTER_SHORT_I><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_KA>";
+		"<CYRILLIC_SMALL_LETTER_KA_WITH_DESCENDER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ZE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EN>";
+		"<CYRILLIC_SMALL_LETTER_KA_WITH_DESCENDER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_SHA><CYRILLIC_SMALL_LETTER_A>";
+		"<CYRILLIC_SMALL_LETTER_ZHE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_KA_WITH_DESCENDER><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EN>"
+		]]>
+	</language>
+	<language name="lt" countries="LT">
+		<![CDATA[
+		"<s><a><u><s><i><s>";
+		"<v><a><s><a><r><i><s>";
+		"<k><o><v><a><s>";
+		"<b><a><l><a><n><d><i><s>";
+		"<g><e><g><u><LATIN_SMALL_LETTER_Z_WITH_CARON><LATIN_SMALL_LETTER_E_WITH_DOT_ABOVE>";
+		"<b><i><r><LATIN_SMALL_LETTER_Z_WITH_CARON><e><l><i><s>";
+		"<l><i><e><p><a>";
+		"<r><u><g><p><j><LATIN_SMALL_LETTER_U_WITH_MACRON><t><i><s>";
+		"<r><u><g><s><LATIN_SMALL_LETTER_E_WITH_DOT_ABOVE><j><i><s>";
+		"<s><p><a><l><i><s>";
+		"<l><a><p><k><r><i><t><i><s>";
+		"<g><r><u><o><d><i><s>"
+		]]>
+	</language>
+	<language name="mn" countries="MN">
+		<![CDATA[
+		"<CYRILLIC_CAPITAL_LETTER_EN><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_STRAIGHT_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_HA><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_IO><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_GHE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_DE><CYRILLIC_SMALL_LETTER_BARRED_O><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_BARRED_O><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_STRAIGHT_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_TE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_ZE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_DE><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_EN><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_SHORT_I><CYRILLIC_SMALL_LETTER_EM><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_IE><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_STRAIGHT_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EN><space><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_STRAIGHT_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_E><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>";
+		"<CYRILLIC_CAPITAL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EN><space><CYRILLIC_SMALL_LETTER_HA><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_IO><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><space><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER>"
+		]]>
+	</language>
+	<language name="pl" countries="PL">
+		<![CDATA[
+		"<s><t><y><c><z><e><LATIN_SMALL_LETTER_N_WITH_ACUTE>";
+		"<l><u><t><y>";
+		"<m><a><r><z><e><c>";
+		"<k><w><i><e><c><i><e><LATIN_SMALL_LETTER_N_WITH_ACUTE>";
+		"<m><a><j>";
+		"<c><z><e><r><w><i><e><c>";
+		"<l><i><p><i><e><c>";
+		"<s><i><e><r><p><i><e><LATIN_SMALL_LETTER_N_WITH_ACUTE>";
+		"<w><r><z><e><s><i><e><LATIN_SMALL_LETTER_N_WITH_ACUTE>";
+		"<p><a><LATIN_SMALL_LETTER_Z_WITH_ACUTE><d><z><i><e><r><n><i><k>";
+		"<l><i><s><t><o><p><a><d>";
+		"<g><r><u><d><z><i><e><LATIN_SMALL_LETTER_N_WITH_ACUTE>"
+		]]>
+	</language>
+	<language name="ru" countries="RU">
+		<![CDATA[
+		"<CYRILLIC_SMALL_LETTER_YA><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EF><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EM><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_TE>";
+		"<CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_PE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EM><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_SHORT_I>";
+		"<CYRILLIC_SMALL_LETTER_I><CYRILLIC_SMALL_LETTER_YU><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_I><CYRILLIC_SMALL_LETTER_YU><CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_TE>";
+		"<CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_YA><CYRILLIC_SMALL_LETTER_BE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_KA><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_YA><CYRILLIC_SMALL_LETTER_BE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_YA><CYRILLIC_SMALL_LETTER_BE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_KA><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_BE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_SOFT_SIGN>"
+		]]>
+	</language>
+	<language name="uk" countries="UA">
+		<![CDATA[
+		"<CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_CHE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_YU><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_I><CYRILLIC_SMALL_LETTER_SHORT_I>";
+		"<CYRILLIC_SMALL_LETTER_BE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_ZE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_KA><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_CHE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_I><CYRILLIC_SMALL_LETTER_PE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_PE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_ZHE><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_VE><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>";
+		"<CYRILLIC_SMALL_LETTER_EL><CYRILLIC_SMALL_LETTER_I><CYRILLIC_SMALL_LETTER_ES><CYRILLIC_SMALL_LETTER_TE><CYRILLIC_SMALL_LETTER_O><CYRILLIC_SMALL_LETTER_PE><CYRILLIC_SMALL_LETTER_A><CYRILLIC_SMALL_LETTER_DE>";
+		"<CYRILLIC_SMALL_LETTER_GHE><CYRILLIC_SMALL_LETTER_ER><CYRILLIC_SMALL_LETTER_U><CYRILLIC_SMALL_LETTER_DE><CYRILLIC_SMALL_LETTER_IE><CYRILLIC_SMALL_LETTER_EN><CYRILLIC_SMALL_LETTER_SOFT_SIGN>"
+		]]>
+	</language>
+
+</alternativemonths>
+
 </data>

Modified: user/edwin/locale/tools/cldr2def.pl
==============================================================================
--- user/edwin/locale/tools/cldr2def.pl	Wed Jul 29 21:54:34 2009	(r195954)
+++ user/edwin/locale/tools/cldr2def.pl	Wed Jul 29 22:02:13 2009	(r195955)
@@ -1,5 +1,9 @@
 #!/usr/bin/perl -wC
 
+#
+# $FreeBSD$
+#
+
 use strict;
 use XML::Parser;
 use Text::Iconv;
@@ -26,6 +30,7 @@ my %values = ();
 my %hashtable = ();
 my %languages = ();
 my %translations = ();
+my %alternativemonths = ();
 get_languages();
 
 my %cm = ();
@@ -44,6 +49,8 @@ my %FILESNAMES = (
 
 my %callback = (
 	mdorder => \&callback_mdorder,
+	altmon => \&callback_altmon,
+	data => (),
 );
 
 my %DESC = (
@@ -87,7 +94,7 @@ my %DESC = (
 	"XXX"		=> "c_fmt",
 	"am_pm"		=> "AM/PM",
 	"d_t_fmt"	=> "date_fmt",
-	"mon2"		=> "Long month names (without case ending)",
+	"altmon"	=> "Long month names (without case ending)",
 	"md_order"	=> "md_order",
 	"t_fmt_ampm"	=> "ampm_fmt",
 
@@ -151,7 +158,8 @@ if ($TYPE eq "timedef") {
 	    "am_pm"		=> "as",
 	    "d_fmt"		=> "s",
 	    "d_t_fmt"		=> "s",
-	    "mon2"		=> ">mon",		# repeat them for now
+#	    "altmon"		=> ">mon",		# repeat them for now
+	    "altmon"		=> "<altmon<mon<as",
 	    "md_order"		=> "<mdorder<d_fmt<s",
 	    "t_fmt_ampm"	=> "s",
 	);
@@ -167,6 +175,18 @@ sub callback_mdorder {
 	return $s;
 };
 
+sub callback_altmon {
+	# if the language/country is known in %alternative months then
+	# return that, otherwise repeat mon
+	my $s = shift;
+
+	if (defined $alternativemonths{$callback{data}{l}}{$callback{data}{c}}) {
+		return $alternativemonths{$callback{data}{l}}{$callback{data}{c}};
+	}
+
+	return $s;
+}
+
 ############################
 
 sub get_utf8map {
@@ -197,6 +217,7 @@ sub get_languages {
 	my %data = get_xmldata($CHARMAPS);
 	%languages = %{$data{L}}; 
 	%translations = %{$data{T}}; 
+	%alternativemonths = %{$data{AM}}; 
 
 	return if (!defined $doonly);
 
@@ -342,16 +363,24 @@ EOF
 
 				$output .= "#\n# $DESC{$k}\n";
 
+				# Replace one row with another
 				if ($f =~ /^>/) {
 					$k = substr($f, 1);
 					$f = $keys{$k};
 				}
+
+				# Callback function
 				if ($f =~ /^\</) {
+					$callback{data}{c} = $c;
+					$callback{data}{k} = $k;
+					$callback{data}{l} = $l;
+					$callback{data}{e} = $enc;
 					my @a = split(/\</, substr($f, 1));
 					my $rv =
 					    &{$callback{$a[0]}}($values{$l}{$c}{$a[1]});
 					$values{$l}{$c}{$k} = $rv;
 					$f = $a[2];
+					$callback{data} = ();
 				}
 
 				my $v = $values{$l}{$c}{$k};
@@ -451,7 +480,7 @@ sub make_makefile {
 # tools in /usr/src/tools/tools/locale.
 # 
 
-LOCALEDIR=	/usr/share/locale
+LOCALEDIR=	/share/locale
 FILESNAME=	$FILESNAMES{$TYPE}
 .SUFFIXES:	.src .out
 
@@ -480,6 +509,12 @@ EOF
 	foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) {
 		next if ($#filter == 2 && ($filter[0] ne $l
 		    || $filter[1] ne $f || $filter[2] ne $c));
+		if (defined $languages{$l}{$f}{data}{$c}{$DEFENCODING}
+		 && $languages{$l}{$f}{data}{$c}{$DEFENCODING} eq "0") {
+			print "Skipping ${l}_" . ($f eq "x" ? "" : "${f}_") .
+			    "${c} - not read\n";
+			next;
+		}
 		foreach my $e (sort keys(%{$languages{$l}{$f}{data}{$c}})) {
 			my $file = $l . "_";
 			$file .= $f . "_" if ($f ne "x");
@@ -516,10 +551,6 @@ SYMLINKS+=	../\${f:C/:.*\$//}/\${FILESNA
 FILESDIR_\${f}.out= \${LOCALEDIR}/\${f}
 .endfor
 
-
-src:
-	./cldr2def.pl /home/edwin/cldr/1.7.0/ charmaps.xml timedef nl_NL
-
 .include <bsd.prog.mk>
 EOF
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907292202.n6TM2DvU083639>