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>