Незалежна від мов локальність наборів кодованих символів подібна до прикладу данської локальності у 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-категорія.