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.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% English language locale for Ireland with Euro
% Language: en
% Territory: IE
% Option: euro
% Date: 2000-08-20
% Users: general
% Charset: ISO-8859-15
% Distribution and use is free, also
% for commercial purposes.

LC_IDENTIFICATION
title      "English locale for Ireland 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   "English"
territory  "Ireland"
revision   "1.0"
date       "2000-08-20"
%
category  "en_IE@euro:2000";LC_IDENTIFICATION
category  "en_IE@euro:2000";LC_CTYPE
category  "en_IE@euro:2000";LC_COLLATE
category  "en_IE@euro:2000";LC_TIME
category  "en_IE@euro:2000";LC_NUMERIC
category  "en_IE@euro:2000";LC_MONETARY
category  "en_IE@euro:2000";LC_MESSAGES
category  "en_IE@euro:2000";LC_PAPER
category  "en_IE@euro:2000";LC_NAME
category  "en_IE@euro:2000";LC_ADDRESS
category  "en_IE@euro:2000";LC_TELEPHONE

END LC_IDENTIFICATION

LC_CTYPE
copy "i18n"
END LC_CTYPE

LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE

LC_MONETARY

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

END LC_MONETARY

LC_NUMERIC
copy "en_GB"
END LC_NUMERIC

LC_TIME
copy "en_IE"
END LC_TIME

LC_MESSAGES
copy "en_IE"
END LC_MESSAGES

LC_PAPER
copy "en_IE"
END LC_PAPER

LC_TELEPHONE
copy "en_IE"
END LC_TELEPHONE

LC_MEASUREMENT
copy "en_IE"
END LC_MEASUREMENT

LC_NAME
copy "en_IE"
END LC_NAME

LC_ADDRESS
copy "en_IE"
END LC_ADDRESS
