Незалежна від мов локальність наборів кодованих символів подібна до прикладу данської локальності у POSIX-стандарті “Оболонка й утиліти” (додаток G ISO/IEC 9945-2:1993) , і європейської мультилінгвістичної POSIX-специфікації впорядкування, тому вона виявилася придатною, якщо незначне число відмінностей можна визначити просто як зміни у наявній локальності. Використання конструкта «reorder-after» також допомагає вирішити питання, які зміни дійсні для розробників та інших користувачів
.
Наведемо приклад використання конструктів «reorder-afters». За промовчанням європейське впорядкування латиниці може бути адекватним данській, за винятком правил порівняння літер і/, й, /Е, ае, А, а, 0, о, А і а. Застосовуючи конструкт «reorder-after», данську специфікацію легше можна зробити копіюванням і перевпорядкуванням наявної європейської специфікації, ніж визначенням параметрів порівняння для всіх латинських літер (з діакритичними знаками чи без них). Для Данії такий підхід не обов’язковий, але обов’язковий додаток Е забезпечує для цього такий механізм, як придатний.
Е.5 awk-письмо для конструкта «reorder-after»
(підрозділ довідковий)
Для реалізації конструкта «reorder-after» задамо опис «амк»-мовою, визначеною у POSIX- стандарті ISO/IEC 9945-2:
BEGIN { comment = «%»; back[0]= followfO] =0; } /LC_COLLATE/ { coll=l }
/END LC_COLLATE/ { coll=0; for (lnr= 1; Inr; lnr = follow[Inr])print c-ont[lnr]} { if (coll == 0) print $0; else { if ($1 == «сору») { file = $2 while (getline < file ) if ( $1 == «LC_COLLATE» ) copy_lc = 1 else if ( $1 == «END» && $2 == «LC_COLLATE» ) copy_lc =0 else if (copy_lc) { lnr + + follow[lnr-1] = Inr; back [Inr ] = lnr-1 contflnr] = $0; symb[ $1 ] = Inr ) close (file )
else if ($1 == «reorder-after») { ra=l ; after = symb [ $2 J } else if ($1 == «reorder-end») ra = 0 else {
Inr + + if (ra) follow [ Inr ] = follow [ after ] if (ra) back [ follow [ after ] ] = Inr follow[after] = Inr; back [Inr ] = after contflnr] = $0 if ( ra && $1 != comment &&$!!=»») { old = s ymb [ $ 1 ] ; follow [ back [ old ] ] = follow [ old ]; back [ follow [ old ] ] = back [ old ]; s ymb f $ 1 ] = Inr; } after = Inr } } }
E.6 Приклади специфікації POSIX-локальностей для данської та ірландської гаельсь- кої мов
(довідковий)
Е
НАЦІОНАЛЬНЕ ПОЯСНЕННЯ
% Локальність данської мови для Данії
% Джерело: Асоціація данських стандартів
% Адреса: Baunegaardsvej 73,
% DK-2900 Hellerup, Danmark
% Контакт; Keld Simonsen
% Email: [email protected]
.6.1 Приклад данської мови escape_char / comment_char %% Danish language locale for Denmark % Source: Danish Standards Association % Address: Baunegaardsvej 73, % DK-2900 Hellerup, Danmark % Contact: Keld Simonsen % Email: Keld. Simonsen@dkuug■dk
%
% Tel: +45 — 39770101
% Fax: +45 — 39770202
% Мова: da
% Територія: DK
% Версія: 4.0
% Дата: 1995-04-12
% Додаток: загальний
% Користувачі: загальні
% Репертуарна карта: mnemonic, DS
% Символьний набір: ISO_8859-1:1987
% Розповсюдження та вживання вільне, а також з комерційною метою.
% Алгоритм упорядкування згідно з данським % стандартом DS 377 (1980) і Данським %орфографічним словником(1986).
% Також відповідає гренландській орфографії
Tel: +45 - 39770101 % Fax: +45 - 39770202 % Language: da % Territory: DK % Revision: 4.0 % Date: 1995-04-12 % Application: general % Users: general % Repertoiremap: mnemonic,DS % Charset: ISO_8859-1:1987 % Distribution and use is free, also % for commercial purposes.% The ordering algorithm is in accordance % with Danish Standard DS 377 (1980) and % the Danish Orthography Dictionary (1986) . % It is also in accordance with % Greenlandic orthography.
LC_COLLATE collating-element <A-A> from « <AXA>» collating-element <A-a> from «<А><а>» collating-element <a-A> from «<а><А>» collating-element <a-a> from « <a><a>» copy en_DK reorder-after <CAPITAL> <CAPITAL> <CAPITAL-SMALL> <SMALL-CAPITAL> <SMALL> reorder-after <q8> <kk> <Q>;<SPECIAL>;<SMALL>;IGNORE reorder-after <t8> <TH> «<ТХН>» ; «<ТНХТН>» ; «<CAPITALXCAPITAL>» ; IGNORE <tth.> <«TXH»> ; «<ТНХТН>» ; «<SMALLXSMALL>» ; IGNORE reorder-after <y8> % <U: > and <U»> are treated as <Y> in Danish (<U:> та <U»> обробляють ЯК <Y>) <U:> <Y> <U:>;<CAPITAL>;IGNORE <u:> <Y> <U:>;<SMALL>;IGNORE <U»> <Y> <U»>;<CAPITAL>;IGNORE <U»> <Y> <U»>;<SMALL>;IGNORE reorder-after <z8> % <AE> is a separate letter in Danish (окрема данська буква) <AE> <AE> <NONE>;<CAPITAL>;IGNORE <ae> <AE> <NONE>;<SMALL>;IGNORE <AE " > <AE> <ACUTE>;<CAPITAL>;IGNORE <ae'><AE> <ACUTE>;<SMALL>;IGNORE <A3> <AE> <MACRON>;<CAPITAL>;IGNORE <a3> <AE> <MACRON>;<SMALL>;IGNORE <A:> <AE> <SPECIAL>;<CAPITAL>;IGNORE <a:> <AE> <SPECIAL>;<SMALL>;IGNORE
%<О//> is a separate letter in Danish (окрема данська буква)
<О//ХО//> <NONE>; <CAPITAL>; IGNORE
<o//xO//> <NONE>;<SMALL>;IGNORE
<O//'> <0//> <ACUTE>;<CAPITAL>;IGNORE
<o//'> <O//> <ACUTE>;<SMALL>;IGNORE
<О:> <О//> <DIAERESIS>;<CAPITAL>;IGNORE
<с:> <О//> <DIAERESIS>;<SMALL>;IGNORE
<O»> <O//> <DOUBLE-ACUTE>;<CAPITAL>;IGNORE
<o»> <O//> <DOUBLE-ACUTE>;<SMALL>;IGNORE
% <AA> is a separate letter in Danish (окрема данська буква)
<AA> <AA>;<NONE>;<CAPITAL>;IGNORE
<aa> <AA>;<NONE>;<SMALL>;IGNORE
<A-AXAA>; <A-A>; <CAPITAL>; IGNORE
<A-aXAA>;<A-A> ; <CAPITAL-SMALL>;IGNORE
<a-AXAA>; <A-A>; <SMALL-CAPITAL>; IGNORE
<a-a><AA> ; <A-A> ; <SMALL> ; IGNORE
<AA ” > <AA>;<AA">;<CAPITAL>; <aa' XAA>; <AA' >; <SMALL>; IGNORE |
' IGNORE |
reorder-end |
|
END LC-COLLATE |
|
LC_CTYPE |
|
copy «en_DK» |
|
END LC CTYPE |
|
LC_MONETARY |
|
int_curr symbol |
<<<DXKXKXS P>» |
currency_symbol |
«<kxr>» |
mon_decimal_point |
«<, >» |
mon_thousands_sep |
«< . >» |
mon_grouping |
3; 3 |
positive_sign |
« « |
negative_sign |
«<->» |
int_frac_digits |
2 |
frac_digits |
2 |
P_cs_precedes |
1 |
p s ep_by_space |
2 |
n cs_precedes |
1 |
n_sep_by_space |
2 |
p_sign_posn |
4 |
n_sign_posn |
4 |
END LC_MONETARY |
|
LC_NUMERIC |
|
decimal_poxnt |
«<, >» |
thousands_sep |
« < . > » |
grouping |
3 ; 3 |
END LC NUMERIC
"<mXa><n>» ; /
«<tXi><r>" ; » <oXnXs>»; /
<<<txo><r>"; » <fxrxe>» ; /
« <1> < о// > < r > "
«<sXo//XnXdXaXg>>> ; /
LC_TIME
abday
day
abmon
mon
«<m> |
|
><n> |
<d>- |
<a> |
<g>» |
; / |
||||
«<t> |
<lz |
>< r> |
<S>' |
^d> |
<a>< |
g>» ; / |
||||
«<o> |
<ru |
>< s > |
<d>- |
<a> |
<g>» |
; / |
||||
«<t> |
<Oz |
><r> |
<3 >’ |
<d> |
<a>< |
g>» ; / |
||||
«<f> |
<r^ |
><e> |
<d>- |
<a> |
<g>» |
; / |
||||
«<1> |
<o//>< |
r ><c |
ix, |
axg |
>» |
|||||
«<j> |
<a: |
><n> |
" ; » |
<f |
><e> |
<b>»; / |
||||
«<m> |
<a: |
><r> |
";» |
<a |
><p> |
<r>»; / |
||||
«<m> |
<a: |
xj> |
"; » |
<j |
><U> |
<n>>>; / |
||||
«< j > |
<u: |
><1> |
" ; » |
<a |
><u> |
<g>»; / |
||||
«<s> |
<e: |
xp> |
" ; » |
<o |
><k> |
<t»>; / |
||||
«<n> |
<o; |
Xr> |
";» |
<dxe> |
<c>» |
|||||
«<j> |
<a5 |
><nxu>< |
'a> |
<r>" |
; / |
|||||
«<f> |
<e: |
><b> |
<r >‘ |
u> |
<a>< |
r > » ; / |
||||
« <m> |
<a: |
><r > |
<t>< |
c s > |
/ |
|
«<%XaxSPX%xdxSPX%xbXSPX%XYXSPX%XTXSPx%xZ>»
d_fmt «<%xdx-x%xmX-x%><Y>»
t_fmt «<% ><T>»
эш pin « « ; « «
t_fmt_ampm « «
END LC_TIME
LC_MESSAGES
yesexpr ''<<(>< 1 XJXj XYXyX )/>><• X * >"
noexp r "<< ( ><0XNxnX ) / >><.><*>"
END LCAMESSAGES
E.6.2 Приклад ірландської мови
% Irish Gaelic language locale for Ireland % Source: NSAI
% Address: Everson Gunn Teoranta, 15 Port Chaeimhghein <1'>ochtarach, % Baile <A'>tha Cliath 2, <E'>ire % Contact: Michael Everson % Email: [email protected] % Tel: + 353 1 478-2597 % Fax: +353 1 478-2597 % Language: ga % Territory: IE % Revision: 0.5
% Date: 1996-01-28
% Users: general
% Repertoiremap: mnemonic, ds
% Charset: ISO_8859-1:1987
% Distribution and use is free, also for commercial purposes.
% Clause 1, Alphanumeric deterministic ordering
% Cuid 1, Rang<u'> docht a1fa-uimhrі<u'>і1 LC_COLLATE
% Based on European multilingual ordering (to replace «en_DK») % Accented characters are ordered as their unaccented counterparts. % In the case of equality after this comparison has been made, % unaccented characters are ordered before accented characters, % and capital letters are ordered before small letters.
% Bunaithe ar an ord iltheangach Eorpach (in <a'>it «en_DK»)
% D<e'>antar litreacha ar a bhfurl comharthaci'> idirdhealaitheacha a
% rang<u'> d<i'>reach ar n<o'>s na coda eile. Tugtar t<u'>s <a'>ite don
% litir lorn laistigh den rang<u'> sin, agus tugtar t<u'>s <a'>ite % laistigh den rang<u'> sin do litreacha m<o'>ra thar litreacha beaga. copy «enJDK» END LC_COLLATE
% Clause 2, Classification of characters
% Cuid 2, Aicm<i'> carachtar
LC_CTYPE
% Based on European multilingual classification (to replace «en_DK») % Bunaithe ar na haicm<i'> carachtar iltheangacha Eorpacha , % (in <a'>it «en_DK») copy «en_DK» END LC CTYPE
% Clause 3, Numeric formatting
% Cuid 3, Form.O'>id<i ' > uimhri<u'>la LC_NUMERIC
decimal_point «<.>» thousands_sep «<,>» grouping 3;3
END LC_NUMERIC
% Clause 4, Monetary formatting % Cuid 4, Form<a'>id<i' > airgid LC_MONETARY
% Currency symbols (int_curr_symbol < ISO 4217)
% Comhartha<i'> airgeadais (int_curr_symbol < ISO 4217) int_curr_symbol <«IXEXPXSP>»
currency_synbol «<Pd>»
% Normal numeric writing % Gn<a' >thscr<i'>bhinn uimhri<u'>il mon_thousands_sep «<,>» mon_grouping 3; 3
mon_decimal point «<•>»
% Plus and minus symbols % Comhartha<i'> m<o'>ide agus l<u'>ide positive sign « «
negative_sign «<->»
% Decimal accuracy % Cruinneas deach<u'>il int_frac_digits 2
frac_digits 2
% Position of currency symbols % Su<i'>omh an comhartha airgeadais p_cs_precedes 1
p_sep by_space 0
n cs_precedes 1
n_sep_by_space 0
% Position of plus and minus
% Su<i'>omh na gcomhartha<i' > m<o'>ide agus l<u'>ide p_sign_posn 1
n_sign_posn 1
END LC_MONETARY
% Clause 5, Date and time conventions
% Cuid 5, Form<a'>idci'> ama agus d<a'>ta LC_TIME
% Abbreviated and long weekday names (%a and %A)
% Giorr<u'>ch<a' >n ar ainmneacha na laethanta, agus ainmneacha fada % (%a agus %A)
abday «<Dxo><m> <h>» ; "<LXuXa><n>/
«<M><a' Xi><r >" ; » <CXe ' xaxd>» ; /
«<DXe><a><r>" ; » <Axoxixn>» ; /
<<<SXaXtxh>"
«
day
<D><e ' XS P><DXoXmxh><n><axixgxh>» ; /«<D><e' xSP><L><uXaxixn>» ; /
«<D><e' xSPXMXa' xixrxsxdxaxg>» ; /
«<D><e' xs Pxcxe' xaxdxaxoxixn»> ; /
«<D><e' xaxrxdxaxoxixn>» ; /
<<<DXe' xsPxhxAXoxixnxe>» /
«<Dxe' xspxsxaxtxhxaxixrxn»>
% Abbreviated and long month names (%b and %B)
% Giorr<u'>ch<a'>n ar ainmneacha na m<i'>onna, agus ainmneacha fada % (%b agus
«
Abmon
<Exa><n><S PXSP>" ; » <FXeXa><bXh>»; / «<MXaXrxSPXSP>" ; » <AxixbxSP><SP>»; /«<В><еxaxlxsР>";» <М>< е х і > <tхh>»; / «<IXU><1X1XSP>";» <LXuXnXSPXSP>»; / «<MXFXoXm><h>" ; » <DXFxoxmxh>»; / «<Sxa><mxhxSP>";» <NxoxlxlxSP>» mon «<EXaXnXa><iXr>" ; /
«<FxexaxbxhxrXa>»; / «<Mxaxrxt><a>"; / «<AXiXbxrXeXaxixn>»; / «<Mxi><SPxnxaxSPxBxexaxlxtxaxixn><e>"; / «<MxeXixtxh><exaxmxh>»; / «<lxuxixl>; / «<LXuxn><aXsxa>»; / «<MxexaXnxSPxFxoXmXhxaxi><r>"; / <<<D><eXi xr xexaxdxhxs PXF><oxmxh><axi><r>» ; / «<MXixSPXnXaxSPxS><aXnixhxnXa>"; / «<MXixSPxnxaxSPXN><oxlxl><axg>"; / % Long date + time (example): % D<a'>ta fada + am (sample: % «D<e'> C<e'>adaoin, 1 M<i'> na Bealtaine 1996, 23:22:33 GMT» ) d_t_fmt «%A<, XSP>%e<SP>%B<SP>%Y<, ><SP>%T» % Numeric date (example: «1996-05-01») % D<a'>ta uimhri<u'>il (sampla: «1996-05-01») d_fmt «%Y<->%m<->%d» % Time format (example: «12:30:12») % Form<a'>id ama (sampla: «12:30:12») t_fmt «%Т» am_pm « r.n.»;»i.n.» t_fmt_ampm «%I<:>M<:>S<SP>%p»
END LC TIME
% Clause 6, Affirmative and negative answers
% Cuid 6, Freagra<i'> dearfacha agus freagra<i'> di<u'>ltacha LC_MESSAGES
yesexpr "<< ( XTXtXSXsXYXyXlX + X )/>>".*»
% T<a'>, Sea, Yes, 1, +
% The affirmative form in Irish Gaelic is to repeat the verb.
% Tugtar foirm dhearfach an bhriathair mar fhreagra dearfach.
noexpr «<< ( XNXnXCXCXO x-X )/>>.*»
% N<1'>1, N<1'> hea, No, Chan fhuil, Chan ea, 0,
% The negative form in Irish Gaelic is to repeat the verb
% combined and mutated with a negative particle (n<i'> or chan).
% Tugtar foirm dhi<u'>ltach an bhriathair mar fhreagra di<u'>ltach. END LC MESSAGES
ДОДАТОК F
(довідковий)
ОПИС РОЗПОВІДНИХ КУЛЬТУРНИХ ЕЛЕМЕНТІВ
У цьому додатку описано деталі категорій культурних елементів для розповідної культурної специфікації. Додаток ґрунтується на інформації з POSIX-стандарту ISO/IEC 9945-2 та Підсумкового звіту скандинавських культурних вимог з інформаційних технологій. Пункти 1—6 стосуються POSIXy, а розповідний опис супроводжено відповідною специфікацією POSIX-локальнос- тей. Пункти 7-32 потрібні для забезпечення інформацією, що тепер не можна виразити у POSIX- нотаціях. Приклади розповідної культурної специфікації наведено у додатку D.
Пункт 1: Абетково-цифрове детерміноване впорядкування
Тут має бути специфікація національного стандарту для впорядкування. За наявності кількох стандартів чи опцій стандарту для кожного з впорядкувань має бути одна POSIX-специфікація Можна посилатися на Європейський стандарт мультилінгвістичного сортування чи на інші міжна- родні стандарти, вже включені до реєстру, і якщо є певні відхилення, їх потрібно описати. Опису стосується, чи є якісь літери, які сортують інакше від інших мов, чи сортують великі літери перед малими, чи є специфічне впорядкування для наголошених літер. Це є POSIX-категорія.