comment_char %
escape_char  /
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Licensed to the Apache Software  Foundation (ASF) under one or more
% contributor  license agreements.  See  the NOTICE  file distributed
% with  this  work  for  additional information  regarding  copyright
% ownership.   The ASF  licenses this  file to  you under  the Apache
% License, Version  2.0 (the  License); you may  not use  this file  
% except in  compliance with the License.   You may obtain  a copy of
% the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the  License is distributed on an  "AS IS" BASIS,
% WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
% implied.   See  the License  for  the  specific language  governing
% permissions and limitations under the License.
%
% Copyright 1999-2007 Rogue Wave Software, Inc.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Catalan Language Locale for Spain with Euro
% Language: ca
% Territory: ES
% Option: euro
% Revision: 0.1
% Date: 2000-08-20
% Application: general
% Users: general
% Charset: ISO-8859-15
% Distribution and use is free, also
% for commercial purposes.

LC_IDENTIFICATION
title      "Catalan locale for Catalonia with Euro"
source     "Free Software Foundation, Inc."
address    "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA"
contact    ""
email      "bug-glibc@gnu.org"
tel        ""
fax        ""
language   "Catalan"
territory  "Spain"
revision   "1.0"
date       "2000-08-20"
%
category  "ca_ES@euro:2000";LC_IDENTIFICATION
category  "ca_ES@euro:2000";LC_CTYPE
category  "ca_ES@euro:2000";LC_COLLATE
category  "ca_ES@euro:2000";LC_TIME
category  "ca_ES@euro:2000";LC_NUMERIC
category  "ca_ES@euro:2000";LC_MONETARY
category  "ca_ES@euro:2000";LC_MESSAGES
category  "ca_ES@euro:2000";LC_PAPER
category  "ca_ES@euro:2000";LC_NAME
category  "ca_ES@euro:2000";LC_ADDRESS
category  "ca_ES@euro:2000";LC_TELEPHONE

END LC_IDENTIFICATION

LC_COLLATE
copy "ca_ES"
END LC_COLLATE

LC_CTYPE
copy "i18n"
END LC_CTYPE

LC_MESSAGES
copy "ca_ES"
END LC_MESSAGES

LC_MONETARY
int_curr_symbol      "<U0045><U0055><U0052><U0020>"
currency_symbol      "<U20AC>"
mon_decimal_point    "<U002C>"
mon_thousands_sep    "<U002E>"
mon_grouping         2;3
positive_sign        ""
negative_sign        "<U002D>"
int_frac_digits      0
frac_digits          0
p_cs_precedes        1
p_sep_by_space       1
n_cs_precedes        1
n_sep_by_space       1
p_sign_posn          1
n_sign_posn          1
END LC_MONETARY

LC_NUMERIC
copy "ca_ES"
END LC_NUMERIC

LC_TIME
copy "ca_ES"
END LC_TIME

LC_PAPER
copy "ca_ES"
END LC_PAPER

LC_TELEPHONE
copy "ca_ES"
END LC_TELEPHONE

LC_MEASUREMENT
copy "ca_ES"
END LC_MEASUREMENT

LC_NAME
copy "ca_ES"
END LC_NAME

LC_ADDRESS
copy "ca_ES"
END LC_ADDRESS
