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 Botswana
% Source: RAP
% Email: Schalk W. Cronje <schalkc@ntaba.co.za>
% Tel: +27 83  2797047
% Fax: +27 838 2797047
% Language: en
% Territory: BW
% Revision: 1.0
% Date: 1999-12-23
% Users: general
% Repertoiremap: mnemonic,ds
% Charset: ISO-8859-1
% Distribution and use is free, also
% for commercial purposes.

LC_IDENTIFICATION
title      "English locale for Botswana"
source     "RAP"
address    ""
contact    ""
email      "bug-glibc@gnu.org"
tel        ""
fax        ""
language   "English"
territory  "Botswana"
revision   "1.0"
date       "2000-06-29"
%
category  "en_BW:2000";LC_IDENTIFICATION
category  "en_BW:2000";LC_CTYPE
category  "en_BW:2000";LC_COLLATE
category  "en_BW:2000";LC_TIME
category  "en_BW:2000";LC_NUMERIC
category  "en_BW:2000";LC_MONETARY
category  "en_BW:2000";LC_MESSAGES
category  "en_BW:2000";LC_PAPER
category  "en_BW:2000";LC_NAME
category  "en_BW:2000";LC_ADDRESS
category  "en_BW:2000";LC_TELEPHONE

END LC_IDENTIFICATION

LC_CTYPE
copy "en_ZA"
END LC_CTYPE

LC_COLLATE
copy "en_ZA"
END LC_COLLATE

LC_MONETARY
int_curr_symbol         "<U0042><U0057><U0050><U0020>"
currency_symbol         "<U0050><U0075>"
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_ZA"
END LC_NUMERIC

LC_TIME
copy "en_ZA"
END LC_TIME

LC_MESSAGES
copy "en_ZA"
END LC_MESSAGES

LC_PAPER
% FIXME
height   297
% FIXME
width    210
END LC_PAPER

LC_TELEPHONE
tel_int_fmt    "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
<U006C>"
int_prefix     "<U0032><U0036><U0037>"
END LC_TELEPHONE

LC_MEASUREMENT
% FIXME
measurement    1
END LC_MEASUREMENT

LC_NAME
name_fmt    "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
<U0025><U006D><U0025><U0074><U0025><U0066>"
END LC_NAME

LC_ADDRESS
postal_fmt    "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
<U004E><U0025><U0063><U0025><U004E>"
END LC_ADDRESS
