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 the Peoples Republic of China
%
% This work is based on ISO PDTR 14652, Unicode 3.0, locale definition
% file for zh_CN revision 1.0 (hashao@china.com, 1999-04-28) and
% charmap file for GBK version 1.0 (sean.chen@turbolinux.com).
%
% The file is designed to work with multiple charsets.  To ease the
% maintance and adding support for new charsets, all characters are
% in UCS notation and presented in Unicode order.
%
% Changelog:
% Tue Jul 25 2000 Yong Li <rigel863@hotmail.com>
% - first version for glibc 2.2

LC_IDENTIFICATION
title      "Chinese locale for Peoples Republic of China"
source     ""
address    ""
contact    ""
email      "bug-glibc@gnu.org"
tel        ""
fax        ""
language   "Chinese"
territory  "P.R. of China"
revision   "0.1"
date       "2000-07-25"
%
category  "zh_CN:2000";LC_IDENTIFICATION
category  "zh_CN:2000";LC_CTYPE
category  "zh_CN:2000";LC_COLLATE
category  "zh_CN:2000";LC_TIME
category  "zh_CN:2000";LC_NUMERIC
category  "zh_CN:2000";LC_MONETARY
category  "zh_CN:2000";LC_MESSAGES
category  "zh_CN:2000";LC_PAPER
category  "zh_CN:2000";LC_NAME
category  "zh_CN:2000";LC_ADDRESS
category  "zh_CN:2000";LC_TELEPHONE

END LC_IDENTIFICATION


LC_CTYPE
% This is a copy of the "i18n" LC_CTYPE with the following modifications:
% - Additional classes: hanzi

copy "i18n"

class	"hanzi"; /
%	<U3400>..<U4DBF>;/
	<U4E00>..<U9FA5>;/
	<UF92C>;<UF979>;<UF995>;<UF9E7>;<UF9F1>;<UFA0C>;<UFA0D>;<UFA0E>;/
	<UFA0F>;<UFA11>;<UFA13>;<UFA14>;<UFA18>;<UFA1F>;<UFA20>;<UFA21>;/
	<UFA23>;<UFA24>;<UFA27>;<UFA28>;<UFA29>
END LC_CTYPE

% ISO 14651 collation sequence
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE


LC_MONETARY
int_curr_symbol           "<U0043><U004E><U0059><U0020>"
currency_symbol           "<UFFE5>"
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
int_p_cs_precedes         1
int_p_sep_by_space        0
int_n_cs_precedes         1
int_n_sep_by_space        0
p_sign_posn               4
n_sign_posn               4
int_p_sign_posn           1
int_n_sign_posn           1
END LC_MONETARY

LC_NUMERIC
decimal_point             "<U002E>"
thousands_sep             "<U002C>"
grouping                  3
END LC_NUMERIC

LC_TIME
abday 	"<U65E5>";"<U4E00>";"<U4E8C>";"<U4E09>";"<U56DB>";"<U4E94>";"<U516D>"

day 	"<U661F><U671F><U65E5>";/
	"<U661F><U671F><U4E00>";/
	"<U661F><U671F><U4E8C>";/
	"<U661F><U671F><U4E09>";/
	"<U661F><U671F><U56DB>";/
	"<U661F><U671F><U4E94>";/
	"<U661F><U671F><U516D>"

abmon	"<U0020><U0031><U6708>";"<U0020><U0032><U6708>";/
	"<U0020><U0033><U6708>";"<U0020><U0034><U6708>";/
	"<U0020><U0035><U6708>";"<U0020><U0036><U6708>";/
	"<U0020><U0037><U6708>";"<U0020><U0038><U6708>";/
	"<U0020><U0039><U6708>";"<U0031><U0030><U6708>";/
	"<U0031><U0031><U6708>";"<U0031><U0032><U6708>"

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>"

d_t_fmt "<U0025><U0059><U5E74><U0025><U006D><U6708><U0025><U0064><U65E5><U0020>/
<U0025><U0041><U0020><U0025><U0048><U65F6><U0025><U004D><U5206><U0025>/
<U0053><U79D2>"

d_fmt   "<U0025><U0059><U5E74><U0025><U006D><U6708><U0025><U0064><U65E5>"

t_fmt   "<U0025><U0048><U65F6><U0025><U004D><U5206><U0025><U0053><U79D2>"

am_pm   "<U4E0A><U5348>";"<U4E0B><U5348>"

t_fmt_ampm "<U0025><U0070><U0020><U0025><U0049><U65F6><U0025><U004D><U5206><U0025><U0053><U79D2>"

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
% Any string starting with a Latin Y(y) or Chinese "Shi4" is recognized
% as affirmative answer.
% Any string starting with a Latin N(n) or Chinese "Bu4" or "Fou3" is
% recognized as negative answer.
yesexpr "<U005E><U005B><U0079><U0059><U662F><U005D>"
noexpr  "<U005E><U005B><U006E><U004E><U4E0D><U5426><U005D>"
END LC_MESSAGES

LC_PAPER
% I assume A4, FIXME
height   297
width    210
END LC_PAPER

LC_TELEPHONE
tel_int_fmt	"<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025><U006C>"
tel_dom_fmt	"<U0030><U0025><U0061><U0020><U0025><U006C>"
int_select	"<U0030><U0030>"
int_prefix	"<U0038><U0036>"
END LC_TELEPHONE

LC_NAME
name_fmt	"<U0025><U0066><U0025><U0074><U0025><U0067><U0025><U0074><U0025><U0064>"
name_gen	""
name_miss	"<U5C0F><U59D0>"
name_mr		"<U5148><U751F>"
name_mrs	"<U592A><U592A>"
name_ms		"<U5973><U58EB>"
END LC_NAME

LC_ADDRESS
postal_fmt	"<U0025><U0063><U0025><U004E><U0025>/
<U0054><U0025><U004E><U0025><U0073><U0020><U0025><U0068><U0020><U0025>/
<U0065><U0020><U0025><U0072><U0025><U004E><U0025><U0062><U0025><U004E>/
<U0025><U0064><U0025><U004E><U0025><U0066><U0025><U004E><U0025><U0061>/
<U0025><U004E>"
country_name	"<U4E2D><U534E><U4EBA><U6C11><U5171><U548C><U56FD>"
%country_post	"FIXME"
country_ab2	"<U0043><U004E>"
country_ab3	"<U0043><U0048><U004E>"
country_num	156
%country_car	"FIXME"
country_isbn	"<U0037>"
lang_name	"<U4E2D><U6587>"
lang_ab		"<U007A><U0068>"
lang_term	"<U007A><U0068><U006F>"
lang_lib	"<U0063><U0068><U0069>"
END LC_ADDRESS

LC_MEASUREMENT
measurement    1
END LC_MEASUREMENT
