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.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Arabic language locale for Lebanon.
% Contributed by Kentaroh Noji <knoji@jp.ibm.com> and
% Tetsuji Orita <orita@jp.ibm.com>.

LC_IDENTIFICATION
title      "Arabic language locale for Lebanon"
source     "IBM Globalization Center of Competency, Yamato Software Laboratory"
address    "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan"
contact    ""
email      "bug-glibc@gnu.org"
tel        ""
fax        ""
language   "Arabic"
territory  "Lebanon"
revision   "1.0"
date       "2000-07-20"
%
category  "ar_LB:2000";LC_IDENTIFICATION
category  "ar_LB:2000";LC_CTYPE
category  "ar_LB:2000";LC_COLLATE
category  "ar_LB:2000";LC_TIME
category  "ar_LB:2000";LC_NUMERIC
category  "ar_LB:2000";LC_MONETARY
category  "ar_LB:2000";LC_MESSAGES
category  "ar_LB:2000";LC_PAPER
category  "ar_LB:2000";LC_NAME
category  "ar_LB:2000";LC_ADDRESS
category  "ar_LB:2000";LC_TELEPHONE

END LC_IDENTIFICATION

LC_CTYPE
copy "i18n"
END LC_CTYPE

LC_COLLATE

% Copy the template from ISO/IEC 14651
copy "iso14651_t1"

END LC_COLLATE

LC_MONETARY
% This is the POSIX Locale definition the LC_MONETARY category.
% These are generated based on XML base Locale difintion file
% for IBM Class for Unicode/Java
%
int_curr_symbol       "<U004C><U0042><U0050><U0020>"
currency_symbol       "<U0644><U002E><U0644><U002E>"
mon_decimal_point     "<U002E>"
mon_thousands_sep     "<U002C>"
mon_grouping          3
positive_sign         ""
negative_sign         "<U002D>"
int_frac_digits       3
frac_digits           3
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           2
%
END LC_MONETARY


LC_NUMERIC
% This is the POSIX Locale definition for the LC_NUMERIC category.
%
decimal_point          "<U002E>"
thousands_sep          "<U002C>"
grouping               3
%
END LC_NUMERIC


LC_TIME
% This is the POSIX Locale definition for the LC_TIME category.
% These are generated based on XML base Locale difintion file
% for IBM Class for Unicode/Java
%
% Abbreviated weekday names (%a)
abday       "<U0627><U0644><U0623><U062D><U062F>";/
            "<U0627><U0644><U0627><U062B><U0646><U064A><U0646>";/
            "<U0627><U0644><U062B><U0644><U0627><U062B><U0627><U0621>";/
            "<U0627><U0644><U0623><U0631><U0628><U0639><U0627><U0621>";/
            "<U0627><U0644><U062E><U0645><U064A><U0633>";/
            "<U0627><U0644><U062C><U0645><U0639><U0629>";/
            "<U0627><U0644><U0633><U0628><U062A>"
%
% Full weekday names (%A)
day         "<U0627><U0644><U0623><U062D><U062F>";/
            "<U0627><U0644><U0627><U062B><U0646><U064A><U0646>";/
            "<U0627><U0644><U062B><U0644><U0627><U062B><U0627><U0621>";/
            "<U0627><U0644><U0623><U0631><U0628><U0639><U0627><U0621>";/
            "<U0627><U0644><U062E><U0645><U064A><U0633>";/
            "<U0627><U0644><U062C><U0645><U0639><U0629>";/
            "<U0627><U0644><U0633><U0628><U062A>"
%
% Abbreviated month names (%b)
abmon       "<U0643><U0627><U0646><U0648><U0646><U0020><U0627><U0644>/
<U062B><U0627><U0646><U064A>";/
            "<U0634><U0628><U0627><U0637>";/
            "<U0622><U0630><U0627><U0631>";/
            "<U0646><U064A><U0633><U0627><U0646>";/
            "<U0646><U0648><U0627><U0631>";/
            "<U062D><U0632><U064A><U0631><U0627><U0646>";/
            "<U062A><U0645><U0648><U0632>";/
            "<U0622><U0628>";/
            "<U0623><U064A><U0644><U0648><U0644>";/
            "<U062A><U0634><U0631><U064A><U0646><U0020><U0627><U0644>/
<U0623><U0648><U0644>";/
            "<U062A><U0634><U0631><U064A><U0646><U0020><U0627><U0644>/
<U062B><U0627><U0646><U064A>";/
            "<U0643><U0627><U0646><U0648><U0646><U0020><U0627><U0644>/
<U0623><U0648><U0644>"
%
% Full month names (%B)
mon         "<U0643><U0627><U0646><U0648><U0646><U0020><U0627><U0644>/
<U062B><U0627><U0646><U064A>";/
            "<U0634><U0628><U0627><U0637>";/
            "<U0622><U0630><U0627><U0631>";/
            "<U0646><U064A><U0633><U0627><U0646>";/
            "<U0646><U0648><U0627><U0631>";/
            "<U062D><U0632><U064A><U0631><U0627><U0646>";/
            "<U062A><U0645><U0648><U0632>";/
            "<U0622><U0628>";/
            "<U0623><U064A><U0644><U0648><U0644>";/
            "<U062A><U0634><U0631><U064A><U0646><U0020><U0627><U0644>/
<U0623><U0648><U0644>";/
            "<U062A><U0634><U0631><U064A><U0646><U0020><U0627><U0644>/
<U062B><U0627><U0646><U064A>";/
            "<U0643><U0627><U0646><U0648><U0646><U0020><U0627><U0644>/
<U0623><U0648><U0644>"
%
% Equivalent of AM PM
am_pm       "<U0635>";"<U0645>"
%
% Appropriate date and time representation
% %d %b, %Y%Z %I:%M:%S
d_t_fmt     "<U0025><U0064><U0020><U0025><U0062><U002C><U0020><U0025>/
<U0059><U0020><U0025><U005A><U0020><U0025><U0049><U003A><U0025><U004D>/
<U003A><U0025><U0053><U0020><U0025><U0070>"
%
% Appropriate date representation
% %d %b, %Y
d_fmt       "<U0025><U0064><U0020><U0025><U0062><U002C><U0020><U0025><U0059>"
%
% Appropriate time representation
% %Z %I:%M:%S
t_fmt       "<U0025><U005A><U0020><U0025><U0049><U003A><U0025><U004D>/
<U003A><U0025><U0053><U0020>"
%
% Appropriate 12 h time representation (%r)
t_fmt_ampm  "<U0025><U005A><U0020><U0025><U0049><U003A><U0025><U004D>/
<U003A><U0025><U0053><U0020><U0025><U0070>"
%
% Appropriate date representation (date(1))   "%a %b %e %H:%M:%S %Z %Y"
date_fmt	"<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
END LC_TIME


LC_MESSAGES
% This is the POSIX Locale definition for the LC_MESSAGES category.
% These are generated based on XML base Locale difintion file
% for IBM Class for Unicode/Java
%
yesexpr     "<U005E><U005B><U0646><U005D><U002E><U002A>"
%
noexpr      "<U005E><U005B><U0644><U005D><U002E><U002A>"
%
END LC_MESSAGES


LC_PAPER
% This is the ISO_IEC TR14652 Locale definition for the
% LC_PAPER category
height      297
width       210

END LC_PAPER


LC_NAME
% This is the ISO_IEC TR14652 Locale definition for the
% LC_NAME category.
%
name_fmt    "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074>/
<U0025><U0067>"
name_gen    "<U002D><U0073><U0061><U006E>"
name_mr     "<U004D><U0072><U002E>"
name_mrs    "<U004D><U0072><U0073><U002E>"
name_miss   "<U004D><U0069><U0073><U0073><U002E>"
name_ms     "<U004D><U0073><U002E>"

END LC_NAME


LC_ADDRESS
% This is the ISO_IEC TR14652 Locale definition for the
% LC_ADDRESS
postal_fmt  "<U0025><U007A><U0025><U0063><U0025><U0054><U0025><U0073>/
<U0025><U0062><U0025><U0065><U0025><U0072>"

END LC_ADDRESS


LC_TELEPHONE
% This is the ISO_IEC TR14652 Locale definition for the
%
tel_int_fmt "<U002B><U0025><U0063><U0020><U003B><U0025><U0061><U0020>/
<U003B><U0025><U006C>"
int_prefix  "<U0039><U0036><U0031>"

END LC_TELEPHONE


LC_MEASUREMENT
% This is the ISO_IEC TR14652 Locale definition for the
%
measurement 1

END LC_MEASUREMENT
