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

LC_IDENTIFICATION
title      "Chinese language locale for Singapore"
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    "Chinese"
territory   "Singapore"
revision    "1.0"
date        "2000,October,27 (XML source:2000,July,20)"
%
category  "zh_SG:2000";LC_IDENTIFICATION
category  "zh_SG:2000";LC_CTYPE
category  "zh_SG:2000";LC_COLLATE
category  "zh_SG:2000";LC_TIME
category  "zh_SG:2000";LC_NUMERIC
category  "zh_SG:2000";LC_MONETARY
category  "zh_SG:2000";LC_MESSAGES
category  "zh_SG:2000";LC_PAPER
category  "zh_SG:2000";LC_NAME
category  "zh_SG:2000";LC_ADDRESS
category  "zh_SG: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
% generated by IBM Basic CountryPack Transformer.
% These are generated based on XML base Locale defintion file 
% for IBM Class for Unicode.
%
int_curr_symbol       "<U0053><U0047><U0044><U0020>"
currency_symbol       "<U0024>"
mon_decimal_point     "<U002E>"
mon_thousands_sep     "<U002C>"
mon_grouping          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           0
%
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
% generated by IBM Basic CountryPack Transformer.
% These are generated based on XML base Locale difintion file 
% for IBM Class for Unicode.
%
% Abbreviated weekday names (%a)
abday       "<U661F><U671F><U65E5>";"<U661F><U671F><U4E00>";/
            "<U661F><U671F><U4E8C>";"<U661F><U671F><U4E09>";/
            "<U661F><U671F><U56DB>";"<U661F><U671F><U4E94>";/
            "<U661F><U671F><U516D>"
%
% Full weekday names (%A)
day         "<U661F><U671F><U65E5>";"<U661F><U671F><U4E00>";/
            "<U661F><U671F><U4E8C>";"<U661F><U671F><U4E09>";/
            "<U661F><U671F><U56DB>";"<U661F><U671F><U4E94>";/
            "<U661F><U671F><U516D>"
%
% Abbreviated month names (%b)
abmon       "<U4E00><U6708>";"<U4E8C><U6708>";/
            "<U4E09><U6708>";"<U56DB><U6708>";/
            "<U4E94><U6708>";"<U516D><U6708>";/
            "<U4E03><U6708>";"<U516B><U6708>";/
            "<U4E5D><U6708>";"<U5341><U6708>";/
            "<U5341><U4E00><U6708>";"<U5341><U4E8C><U6708>"
%
% Full month names (%B)
mon         "<U4E00><U6708>";"<U4E8C><U6708>";/
            "<U4E09><U6708>";"<U56DB><U6708>";/
            "<U4E94><U6708>";"<U516D><U6708>";/
            "<U4E03><U6708>";"<U516B><U6708>";/
            "<U4E5D><U6708>";"<U5341><U6708>";/
            "<U5341><U4E00><U6708>";"<U5341><U4E8C><U6708>"
%
% Equivalent of AM PM 
am_pm       "<U4E0A><U5348>";"<U4E0B><U5348>"
%
% Appropriate date and time representation 
% %Y\u5e74%m\u6708%d\u65e5 %H\u65f6%M\u5206%S\u79d2 %Z
d_t_fmt     "<U0025><U0059><U5E74><U0025><U006D><U6708><U0025><U0064><U65E5><U0020><U0025><U0048><U65F6><U0025><U004D><U5206><U0025><U0053><U79D2><U0020><U0025><U005A>"
%
% Appropriate date representation 
% %Y\u5e74%m\u6708%d\u65e5
d_fmt       "<U0025><U0059><U5E74><U0025><U006D><U6708><U0025><U0064><U65E5>"
%
% Appropriate time representation 
% %H\u65f6%M\u5206%S\u79d2 %Z
t_fmt       "<U0025><U0048><U65F6><U0025><U004D><U5206><U0025><U0053><U79D2><U0020><U0025><U005A>"
%
% Appropriate 12 h time representation (%r) 
t_fmt_ampm  ""
%
END LC_TIME


LC_MESSAGES
% This is the POSIX Locale definition for the LC_MESSAGES category
% generated by IBM Basic CountryPack Transformer.
% These are generated based on XML base Locale difintion file
% for IBM Class for Unicode.
%
% ^[yY]
yesexpr     "<U005E><U005B><U0079><U0059><U005D>"

% Syntax on Unicode Regular Expression Guidelines TR#18 
% yesexpr     "<U005E><U005B><U0079><U0059><U005D>"

%
% ^[nN]
noexpr      "<U005E><U005B><U006E><U004E><U005D>"

% Syntax on Unicode Regular Expression Guidelines TR#18 
% noexpr      "<U005E><U005B><U006E><U004E><U005D>"
%

% Yes
yesstr      "<U0059><U0065><U0073>"
%
% No
nostr       "<U004E><U006F>"
%
END LC_MESSAGES


LC_PAPER
% This is the ISO_IEC TR14652 Locale definition for the LC_PAPER category
% generated by IBM Basic CountryPack Transformer.
height      297
width       210

END LC_PAPER


LC_NAME
% This is the ISO_IEC TR14652 Locale definition for the LC_NAME category
% generated by IBM Basic CountryPack Transformer.
% 
% 
name_fmt    "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074><U0025><U0067>"
name_gen    ""
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 category
% generated by IBM Basic CountryPack Transformer.
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 LC_TELEPHONE
% generated by IBM Basic CountryPack Transformer.
tel_int_fmt "<U002B><U0025><U0063><U0020><U003B><U0025><U0061><U0020><U003B><U0025><U006C>"

END LC_TELEPHONE


LC_MEASUREMENT
% This is the ISO_IEC TR14652 Locale definition for the LC_MEASUREMENT
% category generated by IBM Basic CountryPack Transformer.
measurement 1

END LC_MEASUREMENT
