comment_char    %
escape_char     /
% Kannada language locale for India.
% Copied fron hi_IN one, G Karunakar <karunakar@freedomink.org> . Kannada Translations by Arun Sharma <arun@sharma-home.net>

% *** Below just modify to suit your language. I have modified for Kannada
% *** other language codes - Gujarati - gu, Punjabi - pa, Oriya - or

LC_IDENTIFICATION
title      "Kannada language locale for India"
source     "IndLinux.org"
address    ""
contact    ""
email      "bug-glibc-locales@gnu.org"
tel        ""
fax        ""
language   "Kannada"
territory  "India"
revision   "0.1"
date       "2002-11-28"
%
category  "kn_IN:2000";LC_IDENTIFICATION
category  "kn_IN:2000";LC_CTYPE
category  "kn_IN:2000";LC_COLLATE
category  "kn_IN:2000";LC_TIME
category  "kn_IN:2000";LC_NUMERIC
category  "kn_IN:2000";LC_MONETARY
category  "kn_IN:2000";LC_MESSAGES
category  "kn_IN:2000";LC_PAPER
category  "kn_IN:2000";LC_NAME
category  "kn_IN:2000";LC_ADDRESS
category  "kn_IN:2000";LC_TELEPHONE

END LC_IDENTIFICATION

LC_CTYPE
copy "i18n"

% Kannada uses the alternate digits U+0CE6..U+0CEF
outdigit <U0CE6>..<U0CEF>

% This is used in the scanf family of functions to read Kannada numbers
% using "%Id" and such.
map to_inpunct; /
  (<U0030>,<U0CE6>); /
  (<U0031>,<U0CE7>); /
  (<U0032>,<U0CE8>); /
  (<U0033>,<U0CE9>); /
  (<U0034>,<U0CEA>); /
  (<U0035>,<U0CEB>); /
  (<U0036>,<U0CEC>); /
  (<U0037>,<U0CED>); /
  (<U0038>,<U0CEE>); /
  (<U0039>,<U0CEF>); 

translit_start
include  "translit_combining";""
translit_end
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 definition file
% for IBM Class for Unicode/Java
%
int_curr_symbol       "<U0049><U004E><U0052><U0020>"
% *** Change this to reflect Kannada , in Dev it is RA with VS U attached
currency_symbol       "<U0CB0><U0CC2>"
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        1
n_cs_precedes         1
n_sep_by_space        1
p_sign_posn           1
n_sign_posn           1
%
END LC_MONETARY


LC_NUMERIC
copy "hi_IN"
END LC_NUMERIC


% *** Modify them for Kannada - eg write down on paper - see what all unicode
% *** characters are needed, look up their codes & put them here - Kannada

LC_TIME
% This is the POSIX Locale definition for the LC_TIME category.
% These are generated based on XML base Locale definition file
% for IBM Class for Unicode/Java
%
% Abbreviated weekday names (%a)
abday       "<U0CB0>";/
            "<U0CB8><U0CCB>";/
            "<U0CAE><U0C82>";/
            "<U0CAC><U0CC1>";/
            "<U0C97><U0CC1>";/
            "<U0CB6><U0CC1>";/
            "<U0CB6>"
%
% Full weekday names (%A)
day      "<U0CB0><U0CB5><U0CBF><U0CB5><U0CBE><U0CB0>";/
            "<U0CB8><U0CCB><U0CAE><U0CB5><U0CBE><U0CB0>";/
            "<U0CAE><U0C82><U0C97><U0CB3><U0CB5><U0CBE><U0CB0>";/
            "<U0CAC><U0CC1><U0CA7><U0CB5><U0CBE><U0CB0>";/
            "<U0C97><U0CC1><U0CB0><U0CC1><U0CB5><U0CBE><U0CB0>";/
            "<U0CB6><U0CC1><U0C95><U0CCD><U0CB0><U0CB5><U0CBE><U0CB0>";/
            "<U0CB6><U0CA8><U0CBF><U0CB5><U0CBE><U0CB0>"

%
% Abbreviated month names (%b)
abmon       	"<U0C9C>";/
	"<U0CAB><U0CC6>";/
	"<U0CAE><U0CBE>";/
	"<U0C8F>";/
	"<U0CAE><U0CC7>";/
	"<U0C9C><U0CC2>";/
	"<U0C9C><U0CC1>";/
	"<U0C86>";/
	"<U0CB8><U0CC6>";/
	"<U0C85>";/
	"<U0CA8>";/
	"<U0CA6>"

%
% Full month names (%B)
mon      	"<U0C9C><U0CA8><U0CB5><U0CB0><U0CBF>";/
	"<U0CAB><U0CC6><U0CAC><U0CCD><U0CB0><U0CB5><U0CB0><U0CBF>";/
	"<U0CAE><U0CBE><U0CB0><U0CCD><U0C9A>";/
	"<U0C8F><U0CAA><U0CCD><U0CB0><U0CBF><U0CB2><U0CCD>";/
	"<U0CAE><U0CC7>";/
	"<U0C9C><U0CC2><U0CA8><U0CCD>";/
	"<U0C9C><U0CC1><U0CB2><U0CBE><U0CAF><U0CBF>";/
	"<U0C86><U0C97><U0CB8><U0CCD><U0CA4><U0CC1>";/
	"<U0CB8><U0CC6><U0CAA><U0CCD><U0C9F><U0CC6><U0C82><U0CAC><U0CB0>";/
	"<U0C85><U0C95><U0CCD><U0CA4><U0CC2><U0CAC><U0CB0>";/
	"<U0CA8><U0CB5><U0CC6><U0C82><U0CAC><U0CB0>";/
	"<U0CA6><U0CB6><U0C82><U0CAC><U0CB0>"
%
% Equivalent of AM PM
am_pm       	"<U0CAA><U0CC2><U0CB0><U0CCD><U0CB5><U0CBE><U0CB9><U0CCD><U0CA8>";/
            	"<U0C85><U0CAA><U0CB0><U0CBE><U0CB9><U0CCD><U0CA8>"

% *** There arent any Devanagari characters below, so for time being
% *** maintain same for Kannada also,  Karunakar

%
% Appropriate date and time representation
% %A %d %b %Y%I:%M:%S  %Z
d_t_fmt     "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062>/
<U0020><U0025><U0059><U0020><U0025><U0049><U003A><U0025><U004D><U003A>/
<U0025><U0053><U0020><U0025><U0070><U0020><U0025><U005A>"
%
% Appropriate date representation
% %A %d %b %Y
d_fmt       "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062>/
<U0020><U0025><U0059>"
%
% Appropriate time representation
% %I:%M:%S  %Z
t_fmt       "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0020><U0025><U005A>"
%
% Appropriate 12 h time representation (%r)
t_fmt_ampm  "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U0070><U0020><U0025><U005A>"
%
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
yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
noexpr  "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
END LC_MESSAGES


LC_PAPER
copy "hi_IN"
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    ""
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>"

country_ab2 "<U0049><U004E>"
country_ab3 "<U0049><U004E><U0044>"
country_num 356
END LC_ADDRESS


LC_TELEPHONE
copy "hi_IN"
END LC_TELEPHONE


LC_MEASUREMENT
copy "hi_IN"
END LC_MEASUREMENT
