Subject: French locale from X/Open

From: [email-masked] ("[email-masked] (Greger Leijonhufvud, ISC, High Wycombe, U.K.)")
Date: Mon, 19 Nov 90 12:46:43 GMT

The following is the French locale as supplied by X/Open, with some minor
corrections to the 8859 charmap. Note that the collation order does
imply that accented letters follow unaccented in regular expressions.
If that is not the intent, they should be moved up to their appropriate
positions in the sequence.

-Greger Leijonhufvud-
greger@{iuk,ism}.isc.com

-----------cut here---------------
#French Language Locale

#This example assumes a character set description file
#that defines a Portable Character Set and  Control
#Character set to ISO 8859-1 mapping.

#
LC_CTYPE
#
upper   <A>;...;<Z>;\
	<A-grave>;...;<O-diaeresis>;\
	<O-slash>;...;<sharp-s>
#
lower   <a>;...;<z>;\
	<sharp-s>;<a-grave>;...;<o-diaeresis>;\
	<o-slash>;...;<y-diaeresis>
#
space   <tab>;<newline>;<vertical-tab>;\
	<form-feed>;carriage-return>;<space>;\
	<no-break space>
#
cntrl   <NUL>;...;<IS1>;\
	<DEL>;\
	<RES1>;...;<APC>
#
punct   <exclamation-mark>;...;<slash>;\
	<colon>;...;<commercial-at>;\
	<left-bracket>;...;<grave-accent>;\
	<left-brace>;...;<tilde>;\
	<inverted-exclamation>;...;<inverted-question>;\
	<multiplication-sign>;<division-sign>
#
digit   <zero>;...;<nine>
#
xdigit  <zero>;...;<nine>;<A>;...;<F>;<a>;...;<f>
#
blank   <space>;<tab>;<no-break-space>
#
# Note.  same text than english language locale plus the following
#
#        One may notice that the sharp-s character is considered in this
#        example of french locale as being both an uppercase and lowercase
#        character.
#
toupper  (<a>,<A>);(<b>,<B>);(<c>,<C>);\
	 (<d>,<D>);(<e>,<E>);(<f>,<F>);\
	 (<g>,<G>);(<h>,<H>);(<i>,<I>);\
	 (<j>,<J>);(<k>,<K>);(<l>,<L>);\
	 (<m>,<M>);(<n>,<N>);(<o>,<O>);\
	 (<p>,<P>);(<q>,<Q>);(<r>,<R>);\
	 (<s>,<S>);(<t>,<T>);(<u>,<U>);\
	 (<v>,<V>);(<w>,<W>);(<x>,<X>);\
	 (<y>,<Y>);(<z>,<Z>);(<a-grave>,<A>);\
	 (<a-acute>,<A>);(<a-circumflex>,<A>);(<a-tilde>,<A>);\
	 (<a-diaeresis>,<A>);(<a-ring>,<A>);(<ae>,<AE>);\
	 (<c-cedilla>,<C>);(<e-grave>,<E>);(<e-acute>,<E>);\
	 (<e-circumflex>,<E>);(<e-diaeresis>,<E>);(<i-grave>,<I>);\
	 (<i-acute>,<I>);(<i-circumflex>,<I>);(<i-diaeresis>,<I>);\
	 (<thorn>,<Thorn>);\
	 (<n-tilde>,<N>);(<o-grave>,<O>);(<o-acute>,<O>);\
	 (<o-circumflex>,<O>);(<o-tilde>,<O>);(<o-diaeresis>,<O>);\
	 (<o-slash>,<O>);(<u-grave>,<U>);(<u-acute>,<U>);\
	 (<u-circumflex>,<U>);(<u-diaeresis>,<U>);(<y-acute>,<Y>);\
	 (<y-diaeresis>,<Y>)
#
tolower  (<A>,<a>);(<B>,<b>);(<C>,<c>);\
	 (<D>,<d>);(<E>,<e>);(<F>,<f>);\
	 (<G>,<g>);(<H>,<h>);(<I>,<i>);\
	 (<J>,<j>);(<K>,<k>);(<L>,<l>);\
	 (<M>,<m>);(<N>,<n>);(<O>,<o>);\
	 (<P>,<p>);(<Q>,<q>);(<R>,<r>);\
	 (<S>,<s>);(<T>,<t>);(<U>,<u>);\
	 (<V>,<v>);(<W>,<w>);(<X>,<x>);\
	 (<Y>,<y>);(<Z>,<z>);(<A-grave>,<a-grave>);\
	 (<A-acute>,<a-acute>);(<A-circumflex>,<a-circumflex>);\
	 (<A-tilde>,<a-tilde>);\
	 (<A-diaeresis>,<a-diaeresis>);(<A-ring>,<a-ring>);(<AE>,<ae>);\
	 (<C-cedilla>,<c-cedilla>);(<E-grave>,<e-grave>);(<E-acute>,<e-acute>);\
	 (<E-circumflex>,<e-circumflex>);(<E-diaeresis>,<e-diaeresis>);\
	 (<I-grave>,<i-grave>);(<I-acute>,<i-acute>);\
	 (<I-circumflex>,<i-circumflex>);(<I-diaeresis>,<i-diaeresis>);\
	 (<Thorn>,<thorn>);\
	 (<N-tilde>,<n-tilde>);(<O-grave>,<o-grave>);(<O-acute>,<o-acute>);\
	 (<O-circumflex>,<o-circumflex>);(<O-tilde>,<o-tilde>);\
	 (<O-diaeresis>,<o-diaeresis>);(<O-slash>,<o-slash>);\
	 (<U-grave>,<u-grave>);(<U-acute>,<u-acute>);\
	 (<U-circumflex>,<u-circumflex>);(<U-diaeresis>,<u-diaeresis>);\
	 (<Y-acute>,<y-acute>)
#
END LC_CTYPE

#
LC_COLLATE
#
# This locale uses string ordering and assumes that
# [EQUIV_CLASS_MAX] is superior or equal to 3.
#
# The primary weighting doesnt-acute distinguish case
# nor accents.
#
# The second weighting doesnt-acute distinguish case
# but take accents into account using reverse sorting.
#
# The third weighting distinguish case.
#
# Special and control characters are ignored.
#
# Characters not used in French are ignored.
#
# COMMENT: THIS ORDERING IMPLIES THAT, IN REGULAR EXPRESSIONS,
# ACCENTED LETTERS FOLLOW THE LAST UNACCENTED LETTER. IF THAT
# WAS NOT THE INTENT, THESE LETTERS SHOULD BE MOVED UP.
#
order start forward;backward;forward
...             IGNORE;IGNORE;IGNORE
<zero>          <zero>;<zero>;<zero>
...             ...;...;...
<nine>          <nine>;<nine>;<nine>
...             IGNORE;IGNORE;IGNORE
<A>             <A>;<A>;<A>
<B>             <B>;<B>;<B>
<C>             <C>;<C>;<C>
<D>             <D>;<D>;<D>
<E>             <E>;<E>;<E>
<F>             <F>;<F>;<F>
<G>             <G>;<G>;<G>
<H>             <H>;<H>;<H>
<I>             <I>;<I>;<I>
<J>             <J>;<J>;<J>
<K>             <K>;<K>;<K>
<L>             <L>;<L>;<L>
<M>             <M>;<M>;<M>
<N>             <N>;<N>;<N>
<O>             <O>;<O>;<O>
<P>             <P>;<P>;<P>
<Q>             <Q>;<Q>;<Q>
<R>             <R>;<R>;<R>
<S>             <S>;<S>;<S>
<T>             <T>;<T>;<T>
<U>             <U>;<U>;<U>
<V>             <V>;<V>;<V>
<W>             <W>;<W>;<W>
<X>             <X>;<X>;<X>
<Y>             <Y>;<Y>;<Y>
<Z>             <Z>;<Z>;<Z>
...             IGNORE;IGNORE;IGNORE
<a>             <A>;<A>;<a>
<b>             <B>;<B>;<b>
<c>             <C>;<C>;<c>
<d>             <D>;<D>;<d>
<e>             <E>;<E>;<e>
<f>             <F>;<F>;<f>
<g>             <G>;<G>;<g>
<h>             <H>;<H>;<h>
<i>             <I>;<I>;<i>
<j>             <J>;<J>;<j>
<k>             <K>;<K>;<k>
<l>             <L>;<L>;<l>
<m>             <M>;<M>;<m>
<n>             <N>;<N>;<n>
<o>             <O>;<O>;<o>
<p>             <P>;<P>;<p>
<q>             <Q>;<Q>;<q>
<r>             <R>;<R>;<r>
<s>             <S>;<S>;<s>
<t>             <T>;<T>;<t>
<u>             <U>;<U>;<u>
<v>             <V>;<V>;<v>
<w>             <W>;<W>;<w>
<x>             <X>;<X>;<x>
<y>             <Y>;<Y>;<y>
<z>             <Z>;<Z>;<z>
...             IGNORE;IGNORE;IGNORE
<a-grave>       <A>;<a-grave>;<a>
<a-grave>       IGNORE;IGNORE;IGNORE
<a-circumflex>  <A>;<a-circumflex>;<a>
<a-tilde>       IGNORE;IGNORE;IGNORE
<a-diaeresis>   <A>;<a-diaeresis>;<a>
...             IGNORE;IGNORE;IGNORE
<c-cedilla>     <C>;<c-cedilla>;<c>
<e-grave>       <E>;<e-grave>;<e>
<e-acute>       <E>;<e-acute>;<e>
<e-circumflex>  <E>;<e-circumflex>;<e>
<e-diaeresis>   <E>;<e-diaeresis>;<e>
...             IGNORE;IGNORE;IGNORE
<o-circumflex>  <O>;<o-circumflex>;<o>
<o-tilde>       IGNORE;IGNORE;IGNORE
<o-diaeresis>   <O>;<o-diaeresis>;<o>
...             IGNORE;IGNORE;IGNORE
<u-circumflex>  <U>;<u-circumflex>;<u>
<u-diaeresis>   <U>;<u-diaeresis>;<u>
...             IGNORE;IGNORE;IGNORE
order end
#
END LC_COLLATE

#
LC_MESSAGES
#
yesexpr "[oO][[:alpha:]]*"
noexpr  "[nN][[:alpha:]]*"
#
END LC_MESSAGES
#
LC_MONETARY
#
int_curr_symbol           "FFR "
currency_symbol           "FR"
mon_decimal_point         ","
mon_thousands_sep         " "
mon_grouping              3;0
positive_sign             ""
negative_sign             "-"
int_frac_digits           2
frac_digits               2
p_cs_precedes             0
p_sep_by_space            1
n_cs_precedes             0
n_sep_by_space            1
p_sign_posn               1
n_sign_posn               1
#
END LC_MONETARY

#
LC_NUMERIC
#
decimal_point             ","
thousands_sep             ""
grouping                  0;0
#
END LC_NUMERIC

#
LC_TIME
#
abday   "<D><i><m>";"<L><u><n>";"<M><a><r>";"<M><e><r>";\
	"<J><e><u>";"<V><e><n>";"<S><a><m>"
<#>
day     "<D><i><m><a><n><c><h><e>";"<L><u><n><d><i>";"<M><a><r><d><i>";\
	"<M><e><r><c><r><e><d><i>";"<J><e><u><d><i>";
	"<V><e><n><d><r><e><d><i>";"<S><a><m><e><d><i>"
#
abmon   "<J><a><n>";"<F><e-acute><v>";"<M><a><r>";"<A><v><r>";\
	"<M><a><i>";"<J><u><n>";"<J><u><i>";"<A><o><u-circumflex>;\
	"<S><e><p>";"<O><c><t>";"<N><o><v>";"<D><e-acute><c>"
#
mon     "<J><a><n><v><i><e><r>";"<F><e-acute><v><r><i><e><r>";"<M><a><r><s>";\
	"<A><v><r><i><l>";"<M><a><i>";"<J><u><i><n>";\
	"<J><u><i><l><l><e><t>";"<A><o><u-circumflex><t>";\
	"<S><e><p><t><e><m><b><r><e>";"<O><c><t><o><b><r><e>";\
	"<N><o><v><e><m><b><r><e>";"<D><e-acute><c><e><m><b><r><e>"
#
d_t_fmt "%A %d %B %Y %H:%M:%S %Z\n"
#
d_fmt   "%d/%m/%y"
#
t_fmt   "%H:%M:%S"
*
am_pm   "AM";"PM"
#
END LC_TIME