nss: upgrade to release 3.73
[LibreOffice.git] / i18npool / source / localedata / data / locale.dtd
blob60006d87f439bfb2e71db6c85ee7b717dc85b528
1 <!--
2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
17 -->
19 <!-- ............................................................... -->
20 <!-- Locale data specification DTD ................................. -->
21 <!-- ............................................................... -->
23 <!--
24 ===========================================================================
25 ATTENTION! PLEASE! HEADS UP! IMPORTANT!
26 ===========================================================================
28 Please validate your locale data contribution.
30 A quick validation check can be done if you have xmllint installed and the
31 current locale.dtd file at hand, you can download the locale.dtd file from
32 https://cgit.freedesktop.org/libreoffice/core/plain/i18npool/source/localedata/data/locale.dtd
34 xmllint --dtdvalid locale.dtd --noout your_data.xml
37 Second, using a validating parser. A validating parser, for example, may be found at
38 http://unicode.org/cldr/data/tools/java/org/unicode/cldr/util/XMLValidator.java
39 Compile it into a class-jar and call it in the
40 i18npool/source/localedata/data/ directory:
41 java -cp <your_path>/XMLValidator.jar org.unicode.cldr.util.XMLValidator your_data.xml
44 A third possibility is:
46 - temporarily (!) change the DOCTYPE of your file to read (all on one line)
47 <!DOCTYPE Locale SYSTEM "https://cgit.freedesktop.org/libreoffice/core/plain/i18npool/source/localedata/data/locale.dtd">
49 - upload it to the form available at http://www.validome.org/xml/
51 This will validate the file against the HEAD revision of locale.dtd
54 Please test locale data files either in an enable-dbgutil build, which
55 implements some checks and pops up assertion message boxes if the tests
56 fail, or by setting the environment variable OOO_ENABLE_LOCALE_DATA_CHECKS
57 to 'Y' or 'Yes' (or any other string starting with 'Y') or '1' before
58 starting the application, which outputs the same messages to stderr and
59 also works in a product build.
61 Then follow this procedure:
62 1. Create a new spreadsheet document.
63 2. On a cell use context menu -> Format Cells -> Numbers.
64 3. Select the locale in the Language list box => MUST be assertion free.
65 3.a. Assertions are only shown at the very first time a number formatter
66 is created, respectively the first time a specific locale data is
67 used. To repeat steps 1.-3. you'd need to create another spreadsheet
68 document.
70 ===========================================================================
71 NOTE the FormatElement comments further down.
72 ===========================================================================
74 -->
76 <!-- ............................................................... -->
77 <!-- Entities for characters and symbols ........................... -->
79 <!ENTITY % UNOModule
80 'unoid CDATA #IMPLIED'>
82 <!ENTITY % MessageID
83 'msgid CDATA #REQUIRED'>
85 <!ENTITY % RefLocale
86 'ref CDATA #IMPLIED'>
87 <!-- Where given, an element can be inherited from another locale, e.g.
88 ref="en_US" -->
90 <!ENTITY % LIBModule
91 'module CDATA #IMPLIED'>
92 <!-- The locale referred to for the sub categories, implementation detail. -->
94 <!ENTITY % replaceFrom 'replaceFrom CDATA #IMPLIED'>
95 <!ENTITY % replaceTo 'replaceTo CDATA #IMPLIED'>
96 <!-- See below for the LC_FORMAT element. -->
98 <!ELEMENT DefaultName (#PCDATA)>
100 <!-- Locale is made of different sub categories -->
101 <!ELEMENT Locale (LC_INFO, LC_CTYPE, LC_FORMAT, LC_FORMAT_1?, LC_COLLATION, LC_SEARCH, LC_INDEX, LC_CALENDAR, LC_CURRENCY, LC_TRANSLITERATION, LC_MISC, LC_NumberingLevel, LC_OutLineNumberingLevel)>
102 <!ATTLIST Locale versionDTD CDATA #FIXED "2.0.3">
103 <!-- Version identifier to prevent mismatching data files being submitted
104 because of older files being copied as templates. The version should be
105 less than or equal to the LibreOffice release, or the LibreOffice release
106 number plus some extension, like "2.0.enhanced", to be able to easily
107 determine the corresponding LibreOffice version. New versions of the DTD
108 with new required elements SHOULD REALLY result in a new versionDTD here
109 and LOCALE_VERSION_DTD in ../LocaleNode.cxx, and *.xml files MUST be
110 adapted then, otherwise building the data or checking it with a validating
111 parser will throw an error.
113 <!ATTLIST Locale allowUpdateFromCLDR (yes|no) #REQUIRED>
114 <!-- Whether some data elements may be (automatically) updated from the Common
115 Locale Data Repository, see http://cldr.unicode.org/
116 Note: This mechanism currently (2010-02-21) is outdated.
118 <!ATTLIST Locale version CDATA #REQUIRED>
119 <!-- Valid number, may designate versioned data -->
122 <!ELEMENT LC_INFO (Language, Country, Platform?, Variant?)>
124 <!ELEMENT Language (LangID, DefaultName) >
125 <!ELEMENT LangID (#PCDATA) >
126 <!-- LangID must be a valid two or three letter language identifier defined by
127 ISO 639. Use ISO 639-1 two letter code where available, else ISO 639-2 or
128 639-3 three letter code.
130 If the Variant element designates a BCP 47 language tag (because the
131 locale is not expressible as a Language,Country pair, for example contains
132 a script tag) then the LangID value MUST be the code 'qlt' (reserved by
133 ISO 639-3 for private use) to tell the language tag processor that the
134 actual language tag is in the Variant element.
137 <!ELEMENT Country (CountryID, DefaultName) >
138 <!ELEMENT CountryID (#PCDATA) >
139 <!-- CountryID must be a valid two letter country identifier defined by ISO 3166. -->
141 <!ELEMENT Platform (PlatformID) >
142 <!ELEMENT PlatformID (#PCDATA) >
143 <!-- Unused, deprecated, can be generic|unix|win32|macos, best Platform element
144 be absent.
147 <!ELEMENT Variant (#PCDATA) >
148 <!-- If the LangID element contains the value 'qlt' then the Variant element
149 MUST contain the valid BCP 47 language tag of the locale. If LangID is
150 another ISO 639 code than 'qlt' then the Variant element must be empty or
151 not present.
155 <!-- The LC_FORMAT element contains number format codes and may actually appear
156 twice (with the second occurrence named LC_FORMAT_1). One section is
157 mandatory and MUST contain at least all required format codes
158 formatindex="0" to formatindex="47" (except 10 and 11 MUST NOT be
159 defined), MUST NOT contain formatindex 48 and 49, MUST contain formatindex
160 50, and MAY contain other format codes. See below ATTLIST FormatElement
161 formatindex.
163 A second LC_FORMAT_1 section may follow containing other format codes. The
164 difference between the two sections is that they are inherited
165 independently if a locale uses the RefLocale mechanism (ref="..."). This
166 may be used to not offer locale dependent format codes to other locales
167 that otherwise inherit the format codes.
170 <!ELEMENT LC_FORMAT (DateAcceptancePattern*, FormatElement*) >
171 <!-- All FormatElement elements must be given if the RefLocale mechanism is not used! -->
172 <!ATTLIST LC_FORMAT %RefLocale;>
173 <!ATTLIST LC_FORMAT %replaceFrom;>
174 <!-- Define placeholder for currency code, usually "[CURRENCY]" -->
175 <!ATTLIST LC_FORMAT %replaceTo;>
176 <!-- Currency code to be used to replace the placeholder, e.g. "[$R-1C09]".
177 Note: The brackets and the leading $ character are mandatory, the
178 hyphen-minus separates the currency symbol from the hexagesimal MS-LCID,
179 letters contained in the LCID have to be in upper case, leading zeros are
180 to be omitted. LCIDs are defined in include/i18nlangtag/lang.h (
181 https://opengrok.libreoffice.org/xref/core/include/i18nlangtag/lang.h )
184 <!ELEMENT DateAcceptancePattern (#PCDATA)>
185 <!-- Pattern that defines an input sequence match to be accepted as
186 (abbreviated) date. For example, in en_US locale "M/D" accepts an input of
187 11/23 as CurrentYear-November-23 whereas 11/23/ would not be a date. In
188 de_DE locale "D.M." accepts an input of 23.11. as CurrentYear-November-23
189 whereas 23.11 would not be a date.
191 For each locale one pattern that matches a full date is automatically
192 generated from FormatElement formatIndex="21" and does not need to be
193 defined, for example "M/D/Y" or "D.M.Y".
195 At least one pattern for abbreviated date input must be defined, i.e.
196 contain D and M but not Y.
198 NOTE: use only single letter D,M,Y. Multiple patterns can be defined.
201 <!ELEMENT LC_FORMAT_1 (FormatElement*) >
202 <!ATTLIST LC_FORMAT_1 %RefLocale;>
203 <!ATTLIST LC_FORMAT_1 %replaceFrom;>
204 <!ATTLIST LC_FORMAT_1 %replaceTo;>
206 <!ELEMENT FormatElement ( FormatCode, DefaultName?)>
207 <!ATTLIST FormatElement %MessageID;>
208 <!ATTLIST FormatElement default (true|false) #REQUIRED >
209 <!ATTLIST FormatElement type (short|medium|long) #REQUIRED >
210 <!--
211 There may be up to three groups (type="short", type="medium", type="long")
212 for each usage category defined. Each group, if defined, needs exactly one
213 default. The type roughly determines the display string length, for example
214 short, medium, and long date formats.
216 The number formatter determines an ultimate default format of a specific
217 usage category by looking at the medium, long, and short default formats,
218 in that very particular order.
220 <!ATTLIST FormatElement usage (FIXED_NUMBER|FRACTION_NUMBER|PERCENT_NUMBER|SCIENTIFIC_NUMBER|CURRENCY|DATE|TIME|DATE_TIME) #REQUIRED >
221 <!ATTLIST FormatElement formatindex CDATA #REQUIRED>
222 <!--
223 The following FormatElements must follow specific rules:
225 All:
226 The format indices 0..65 are reserved and, for backwards compatibility,
227 indices 0..49 MUST be used as stated in
228 offapi/com/sun/star/i18n/NumberFormatIndex.idl (
229 https://opengrok.libreoffice.org/xref/core/offapi/com/sun/star/i18n/NumberFormatIndex.idl )
230 Note that indices 10 ("# ?/?"), 11 ("# ??/??"), 48 (BOOLEAN) and 49 (@
231 Text) are generated internally, as they aren't locale dependent, and
232 must not be used in locale data XML files. All other formats have to be
233 present.
235 Note also that "must be used as stated" does not mean that the format
236 codes must be identical, of course the meaning of a format code should
237 match, for example en_US MM/DD/YY matches de_DE DD.MM.YY
238 Just imagine the same index being used with another locale shouldn't
239 change the meaning of representation significantly.
241 You'll notice differences of non-matching format codes only if
242 documents use the Default language in number formats and either are
243 stored in old SO5 binary file format and loaded on another system where
244 languages/locales aren't the same, or if the default locale is switched
245 under menu Tools.Options.LanguageSettings.Languages.LocaleSetting
246 dialog, which exchanges formats on the fly in the spreadsheet
247 application. Please check it out! So far only very few locale data file
248 we received got that right, especially not in date formats!
250 For easier comparison between locales in future please sort the
251 FormatElements by their formatindex="..." value within a usage group.
252 This isn't necessary to be technically correct and isn't done in many
253 locales yet, but will certainly help.
255 If you want to define yet more formats than the preset and reserved
256 0..49 range that's fine, only make sure those formatindex="..." values
257 are each >=66 and all values are unique within one locale.
259 Of usage="FIXED_NUMBER":
260 formatindex="0" MUST be the format containing the 'General' keyword.
261 The keyword itself may be localized, it is good practice though to
262 stick with a wording known from another spreadsheet application for
263 better user experience. Like other format codes it may be prepended
264 with a [NatNum1] modifier if values are to be displayed using native
265 numbering if no specific format was applied. The format must have the
266 default="true" and type="medium" attributes.
268 Of usage="DATE":
269 formatindex="21" is used to edit already existing date data. In order
270 to always edit the full century the long year YYYY code must be used.
271 Furthermore, the format has to be of an editable type, of course, which
272 means parseable. Therefore it should only contain DD, MM, YYYY and date
273 separators, and the YMD default order is determined from the order
274 encountered in this format.
275 TODO: Future versions should make use of an edit="true" attribute
276 instead of relying on this special index requirement.
278 formatindex="33" must be ISO 8601 YYYY-MM-DD format code.
280 Of usage="DATE_TIME":
281 formatindex="46" should contain a short year YY code and only HH and MM
282 without SS seconds.
284 formatindex="47" is used to edit already existing combined date/time
285 data. The requirements are the same as for formatindex="21" above, plus
286 HH and MM and SS codes.
288 formatindex="50" must contain a long year YYYY code and only HH and MM
289 without SS seconds.
291 Of usage="TIME":
292 * The FormatElement with default="true" type="medium" is used to edit
293 times and thus must contain all HH and MM and SS codes, e.g. HH:MM:SS
294 * Formatindices 43, 44, 45 are special in the sense that they are
295 programmatically used to automatically display values that meet
296 certain criteria:
297 * Formatindex="43" contains the [HH] format code that displays hour
298 values greater than or equal to 24 (as opposed to a simple HH that
299 displays modulo 24).
300 * Formatindex="44" uses no hour code but 100th seconds and the
301 Time100SecSeparator.
302 * Formatindex="45" uses both [HH] hour code and 100th seconds to be
303 able to edit such time values without losing information.
305 Of usage="CURRENCY":
306 formatindices 12, 13, 14, 15, 17 with [$xxx-yyy] notation must use the
307 xxx currency symbol that has the attribute
308 usedInCompatibleFormatCodes="true". The hexadecimal yyy LANGID must be
309 properly set. It can be found in the file include/i18nlangtag/lang.h (
310 https://opengrok.libreoffice.org/xref/core/include/i18nlangtag/lang.h )
311 You may verify the proper use of the xxx currency symbol with the AWK
312 script i18npool/source/localedata/data/currency-check.awk, it mustn't
313 display any output. If it does, then there's something wrong.
316 <!ELEMENT FormatCode (#PCDATA)>
319 <!-- The LC_CALENDAR element defines calendars used with a locale. -->
320 <!ELEMENT LC_CALENDAR (Calendar* ) >
321 <!-- At least one Calendar element must be given if the RefLocale mechanism is not used! -->
322 <!ATTLIST LC_CALENDAR %RefLocale;>
324 <!ELEMENT Calendar (DaysOfWeek, MonthsOfYear, GenitiveMonths*, PartitiveMonths*, Eras, StartDayOfWeek, MinimalDaysInFirstWeek) >
325 <!ATTLIST Calendar %UNOModule;>
326 <!-- The unoid of a gregorian calendar MUST be lower case "gregorian",
327 calendars MUST match the names defined in the OASIS OpenDocument Format
328 (ODF) 1.2 or later specification. The implementation name registered with
329 the LibreOffice service registry MUST match, e.g.
330 com.sun.star.i18n.Calendar_gregorian
332 <!ATTLIST Calendar default (true|false) #REQUIRED >
333 <!-- Exactly one Calendar element has to be the default calendar. -->
335 <!ELEMENT DaysOfWeek (Day*)>
336 <!-- All Day elements of a Calendar must be given if the RefLocale mechanism is not used! -->
337 <!ATTLIST DaysOfWeek %RefLocale;>
338 <!-- Sequence of days is important, MUST start with Sunday. -->
339 <!ELEMENT Day (DayID, DefaultAbbrvName, DefaultFullName, DefaultNarrowName*)>
340 <!ELEMENT DayID (#PCDATA)>
341 <!-- Preferably the lower case abbreviated English name like sun for Sunday. -->
342 <!ELEMENT DefaultAbbrvName (#PCDATA)>
343 <!-- The abbreviated day name, e.g. Sun for Sunday. -->
344 <!ELEMENT DefaultFullName (#PCDATA)>
345 <!-- The full day name, e.g. Sunday for Sunday. -->
346 <!ELEMENT DefaultNarrowName (#PCDATA)>
347 <!-- The narrow day name, e.g. S for Sunday.
348 If not specified, the first letter of the corresponding DefaultFullName is taken.
351 <!ELEMENT MonthsOfYear (Month*)>
352 <!-- Nominative month names.
353 All Month elements of a Calendar must be given if the RefLocale mechanism is not used!
355 <!ATTLIST MonthsOfYear %RefLocale;>
356 <!-- Sequence of months is important, MUST start with the first month of a
357 year, e.g. January in a Gregorian calendar.
360 <!ELEMENT GenitiveMonths (Month*)>
361 <!-- Possessive genitive case month names, for example in Slavic locales. The
362 element is optional, but if present all Month elements of a Calendar must
363 be given if the RefLocale mechanism is not used! If not specified,
364 the MonthsOfYear names will be used in the context of the number
365 formatter's genitive case. -->
366 <!ATTLIST GenitiveMonths %RefLocale;>
367 <!-- Sequence of months is important, MUST start with the first month of a
368 year, e.g. January in a Gregorian calendar.
371 <!ELEMENT PartitiveMonths (Month*)>
372 <!-- Partitive case month names, for example in Finnish locales. The
373 element is optional, but if present all Month elements of a Calendar must
374 be given if the RefLocale mechanism is not used! If not specified,
375 GenitiveMonths names will be used, or if those are not specified then
376 MonthsOfYear, in the context of the number formatter's partitive case. -->
377 <!ATTLIST PartitiveMonths %RefLocale;>
378 <!-- Sequence of months is important, MUST start with the first month of a
379 year, e.g. January in a Gregorian calendar.
382 <!-- Rules for use of nominative / genitive / partitive case month names in
383 number formatter when encountering MMM or MMMM:
385 * MMM or MMMM immediately preceded or followed by a literal character
386 other than space => nominative month name (noun), for Excel and
387 backwards compatibility such as Finnish MMMM"ta"
388 * no day of month (D or DD) present in format code => nominative name
389 * day of month (D or DD) after MMM or MMMM => genitive name
390 * no genitive names defined => nominative name
391 * day of month (D or DD) before MMM or MMMM => partitive name
392 * no partitive names defined => genitive name
393 * no genitive names defined => nominative name
395 NOTE:
397 If only <MonthsOfYear> and <PartitiveMonths> are specified but not
398 <GenitiveMonths>, then for MMM(M) D(D) formats the <MonthsOfYear>
399 nominative name is displayed. Only for D(D) MMM(M) formats the
400 <PartitiveMonths> name is displayed.
402 If only for MMM(M) D(D) formats the <GenitiveMonths> are to be displayed
403 but nominative names for D(D) MMM(M), then specify <PartitiveMonths>
404 identical to <MonthsOfYear>, do not omit it as otherwise it would inherit
405 from <GenitiveMonths> again.
409 <!ELEMENT Month (MonthID, DefaultAbbrvName, DefaultFullName, DefaultNarrowName*)>
410 <!ELEMENT MonthID (#PCDATA)>
411 <!-- Preferably the lower case abbreviated English name like jan for January. -->
413 <!ELEMENT Eras (Era*)>
414 <!-- All Era elements of a Calendar must be given if the RefLocale mechanism is not used! -->
415 <!ATTLIST Eras %RefLocale;>
416 <!-- The eras MUST be in chronological order, e.g. first BC then AC. -->
417 <!ELEMENT Era (EraID, DefaultAbbrvName, DefaultFullName)>
418 <!ELEMENT EraID (#PCDATA)>
419 <!-- If a calendar has special eras (like zh_TW ROC or ja_JP Gengou calendar)
420 and a date before those eras is undefined, a leading (first) dummy era
421 with EraID="Dummy" has to be defined to enable the number formatter to
422 fall back to a Gregorian calendar for those date values if the XCalendar
423 implementation returns an era value of 0.
426 <!ELEMENT StartDayOfWeek (DayID)>
427 <!-- MUST exactly match (case significant!) one of the DayID of DaysOfWeek -->
429 <!ELEMENT MinimalDaysInFirstWeek (#PCDATA)>
430 <!-- The number of days of a week that must reside in the beginning of a year
431 to make a week the first week of the year. For example, a value of 4 means
432 that at least 4 days of a week must be in the new year. So if the week
433 starts on Monday, the first week of a year will be the week where Thursday
434 is in the new year.
438 <!-- The LC_CURRENCY element defines currencies used with a locale. -->
439 <!ELEMENT LC_CURRENCY (Currency* ) >
440 <!-- At least one Currency element must be given if the RefLocale mechanism is not used! -->
441 <!ATTLIST LC_CURRENCY %RefLocale;>
442 <!ELEMENT Currency (CurrencyID, CurrencySymbol, BankSymbol, CurrencyName, DecimalPlaces)>
443 <!ATTLIST Currency default (true|false) #REQUIRED >
444 <!-- Exactly one Currency element has to be the default currency. -->
445 <!ATTLIST Currency usedInCompatibleFormatCodes (true|false) #REQUIRED >
446 <!-- If this currency is the one used in compatible number format codes with
447 <member>FormatElement::formatIndex</member> values in the range 12..17.
448 Those format codes are used to generate some old style currency format
449 codes for compatibility with StarOffice5 and StarOffice4.
450 Every locale data file MUST contain exactly one currency having this set to "true",
451 and that currency MUST be used in format codes 12..17.
452 For European countries using EUR it MUST be the old currency, for example, DM.
454 <!ATTLIST Currency legacyOnly (true|false) #IMPLIED >
455 <!-- If this Currency element exists only to be able to correctly load legacy
456 documents and is not selectable in the UI otherwise. Defaults to "false"
457 if not specified. If this attribute is "true", 'default' and
458 'usedInCompatibleFormatCodes' must both be "false".
460 Currency elements must not be changed to contain only a different
461 CurrencySymbol element without changing the CurrencyID and BankSymbol
462 elements, instead the entire Currency element must be duplicated, the old
463 element needs this 'legacyOnly' attribute be added and 'default' and
464 'usedInCompatibleFormatCodes' attributes must be set to "false", and only
465 in the new duplicated Currency element the CurrencySymbol element be
466 changed.
468 <!ELEMENT CurrencyID (#PCDATA)>
469 <!-- The ISO 4217 three letter currency code, e.g. USD or EUR. -->
470 <!ELEMENT CurrencySymbol (#PCDATA)>
471 <!-- The currency symbol, e.g. $ or €. -->
472 <!ELEMENT BankSymbol (#PCDATA)>
473 <!-- The ISO 4217 three letter currency code, e.g. USD or EUR. -->
474 <!ELEMENT CurrencyName (#PCDATA)>
475 <!-- The native currency name, e.g. Dollar or Euro. -->
476 <!ELEMENT DecimalPlaces (#PCDATA)>
477 <!-- Number of decimal places used with the currency, usually 2 or 0, e.g. 2
478 for cents.
482 <!ELEMENT LC_CTYPE (Separators?, Markers?, TimeAM?, TimePM?, MeasurementSystem?)>
483 <!-- All elements must be given if the RefLocale mechanism is not used! -->
484 <!ATTLIST LC_CTYPE %RefLocale;>
485 <!ATTLIST LC_CTYPE %UNOModule;>
487 <!ELEMENT Separators (DateSeparator, ThousandSeparator, DecimalSeparator, DecimalSeparatorAlternative?, TimeSeparator, Time100SecSeparator, ListSeparator, LongDateDayOfWeekSeparator, LongDateDaySeparator, LongDateMonthSeparator, LongDateYearSeparator)>
488 <!ELEMENT DateSeparator (#PCDATA)>
489 <!ELEMENT ThousandSeparator (#PCDATA)>
490 <!ELEMENT DecimalSeparator (#PCDATA)>
491 <!ELEMENT DecimalSeparatorAlternative (#PCDATA)>
492 <!ELEMENT TimeSeparator (#PCDATA)>
493 <!ELEMENT Time100SecSeparator (#PCDATA)>
494 <!ELEMENT ListSeparator (#PCDATA)>
495 <!ELEMENT LongDateDayOfWeekSeparator (#PCDATA)>
496 <!ELEMENT LongDateDaySeparator (#PCDATA)>
497 <!ELEMENT LongDateMonthSeparator (#PCDATA)>
498 <!ELEMENT LongDateYearSeparator (#PCDATA)>
500 <!ELEMENT Markers (QuotationStart, QuotationEnd, DoubleQuotationStart, DoubleQuotationEnd)>
501 <!ELEMENT QuotationStart (#PCDATA)>
502 <!ELEMENT QuotationEnd (#PCDATA)>
503 <!ELEMENT DoubleQuotationStart (#PCDATA)>
504 <!ELEMENT DoubleQuotationEnd (#PCDATA)>
506 <!ELEMENT TimeAM (#PCDATA)>
507 <!ELEMENT TimePM (#PCDATA)>
508 <!ELEMENT MeasurementSystem (#PCDATA)>
511 <!ELEMENT LC_COLLATION (Collator*, CollationOptions?)>
512 <!-- All elements must be given if the RefLocale mechanism is not used! -->
513 <!ATTLIST LC_COLLATION %RefLocale;>
514 <!--
515 Optional ICU tailoring.
517 See Collation Customization in ICU User Guide for syntax,
518 http://www.icu-project.org/userguide/Collate_Customization.html
520 There are two ways to add language specific tailoring in LibreOffice.
521 For small tailoring, you can directly add it in locale data here. For
522 large tailoring, it is suggested to put the data under collator/data, so
523 it will be compiled to a binary format in build time and improve performance
524 in run time.
527 <!ELEMENT Collator (#PCDATA)>
528 <!ATTLIST Collator %UNOModule;>
529 <!ATTLIST Collator default (true|false) #REQUIRED >
530 <!ELEMENT CollationOptions (TransliterationModules+)>
531 <!ELEMENT TransliterationModules (#PCDATA)>
534 <!ELEMENT LC_SEARCH (SearchOptions?)>
535 <!-- All elements must be given if the RefLocale mechanism is not used! -->
536 <!ATTLIST LC_SEARCH %RefLocale;>
537 <!ELEMENT SearchOptions (TransliterationModules+)>
540 <!ELEMENT LC_INDEX (IndexKey*, UnicodeScript*, FollowPageWord*)>
541 <!ATTLIST LC_INDEX %RefLocale;>
543 <!--
544 The IndexKey element is optional, but should be given if the locale
545 requires a specific sort order in Writer's index tables or entries are to
546 be combined under keys.
548 Index key for the algorithm and language, like >A-Z< for English => A, B,
549 C, ..., Y, Z. The letters specify under which key an entry goes and the
550 order the keys are sorted. Keys may be reordered or letters inserted to
551 form a specific order, for example (ve_ZA) >A-D Ḓ E-L Ḽ M N Ṋ Ṅ O-T Ṱ U-Z<
552 Entries that don't match a defined key are appended to the index list. Used
553 in Writer textprocessor.
555 The initial data was setup according to the ICU collation chart at
556 http://oss.software.ibm.com/icu/charts/collation/
557 Note: ICU site was moved to http://www.icu-project.org/ and as ICU per
558 default uses CLDR, collation charts are available at
559 http://unicode.org/cldr/comparison_charts.html#Collation
561 Possible notations in the syntax of the IndexKey element are:
563 '-' (dash): Ellipsis, all letters elided by the ellipsis are included as
564 index keys in alphabetic order. For example, 'A-Z' includes all ASCII
565 letters A to Z.
567 '[]' (square brackets): all letters included in square brackets are
568 skipping letters. It is used for CTL languages, for example in Thai
569 (th_TH), to skip prefix vowels or signs. For example, if ["] double quote
570 is defined as skipping letter, index item '"Index"' will be under 'I', not
571 '"'.
573 '{}' (curly brackets): define multiple letters index key, for example
574 '{Cs}' is one of the index keys for Hungarian (hu_HU).
576 '()' (parentheses): define optional description for index key. If defined,
577 the description will be shown as index key title, instead of the index key
578 itself. For example, 'E(E, É)' in Hungarian adds entries with 'E' to the
579 description 'E, É'.
582 <!ELEMENT IndexKey (#PCDATA)>
583 <!ATTLIST IndexKey %UNOModule;>
584 <!ATTLIST IndexKey %LIBModule;>
585 <!ATTLIST IndexKey default (true|false) #REQUIRED >
586 <!ATTLIST IndexKey phonetic (true|false) #REQUIRED >
588 <!--
589 The Unicode script types are those of
590 offapi/com/sun/star/i18n/UnicodeScript.idl, they define the code range for
591 the language.
593 <!ELEMENT UnicodeScript (#PCDATA)>
595 <!--
596 The FollowPageWord entries were originally hard-coded in
597 ../../indexentry/indexentrysupplier.cxx, most locales used the English
598 ``p.'' and ``pp.'', valid data should be provided by native speakers.
599 These words or abbreviations are used in the Writer's index table. The
600 first FollowPageWord element is the abbreviation for "page" (p.), the
601 second FollowPageWord element the abbreviation for "page and following
602 pages" (pp.).
604 <!ELEMENT FollowPageWord (#PCDATA)>
607 <!ELEMENT LC_TRANSLITERATION (Transliteration*)>
608 <!ATTLIST LC_TRANSLITERATION %RefLocale;>
609 <!ELEMENT Transliteration EMPTY>
610 <!ATTLIST Transliteration %UNOModule;>
612 <!ELEMENT LC_MISC (ForbiddenCharacters?, BreakIteratorRules?, ReservedWords?)>
613 <!ATTLIST LC_MISC %RefLocale;>
614 <!ELEMENT ForbiddenCharacters (ForbiddenLineBeginCharacters, ForbiddenLineEndCharacters, LineBreakHangingCharacters)>
615 <!ELEMENT ForbiddenLineBeginCharacters (#PCDATA)>
616 <!ELEMENT ForbiddenLineEndCharacters (#PCDATA)>
618 <!-- optional break iterator rules for the languages.
619 if defined, 5 rules should be all listed, each of them can be blank and default will be used.
620 order of the rules is significant!
622 <!ELEMENT BreakIteratorRules (EditMode, DictionaryMode, WordCountMode, CharacterMode, LineMode)>
623 <!ELEMENT EditMode (#PCDATA)>
624 <!ELEMENT DictionaryMode (#PCDATA)>
625 <!ELEMENT WordCountMode (#PCDATA)>
626 <!ELEMENT CharacterMode (#PCDATA)>
627 <!ELEMENT LineMode (#PCDATA)>
629 <!ELEMENT ReservedWords (trueWord, falseWord, quarter1Word, quarter2Word, quarter3Word, quarter4Word, aboveWord, belowWord, quarter1Abbreviation, quarter2Abbreviation, quarter3Abbreviation, quarter4Abbreviation)>
630 <!-- order is significant! -->
631 <!ELEMENT trueWord (#PCDATA)>
632 <!ELEMENT falseWord (#PCDATA)>
633 <!ELEMENT quarter1Word (#PCDATA)>
634 <!ELEMENT quarter2Word (#PCDATA)>
635 <!ELEMENT quarter3Word (#PCDATA)>
636 <!ELEMENT quarter4Word (#PCDATA)>
637 <!ELEMENT aboveWord (#PCDATA)>
638 <!ELEMENT belowWord (#PCDATA)>
639 <!-- aboveWord and belowWord are used as reference field content in Writer, it
640 is a "physical" object relative position, not "numerical" relative.
642 <!ELEMENT quarter1Abbreviation (#PCDATA)> <!-- "Q1" (quarter), "T1" (trimestre), ... -->
643 <!ELEMENT quarter2Abbreviation (#PCDATA)>
644 <!ELEMENT quarter3Abbreviation (#PCDATA)>
645 <!ELEMENT quarter4Abbreviation (#PCDATA)>
648 <!--
649 In numbering levels, the NumType attribute is a value of the constants
650 defined in offapi/com/sun/star/style/NumberingType.idl (
651 https://opengrok.libreoffice.org/xref/core/offapi/com/sun/star/style/NumberingType.idl
655 <!ELEMENT LC_NumberingLevel (NumberingLevel* )>
656 <!ATTLIST LC_NumberingLevel %RefLocale;>
657 <!ELEMENT NumberingLevel EMPTY>
658 <!ATTLIST NumberingLevel Prefix CDATA #REQUIRED>
659 <!ATTLIST NumberingLevel NumType CDATA #REQUIRED>
660 <!ATTLIST NumberingLevel Suffix CDATA #REQUIRED>
661 <!ATTLIST NumberingLevel Transliteration CDATA #IMPLIED>
662 <!ATTLIST NumberingLevel NatNum CDATA #IMPLIED>
665 <!ELEMENT LC_OutLineNumberingLevel (OutlineStyle* )>
666 <!ATTLIST LC_OutLineNumberingLevel %RefLocale;>
667 <!ELEMENT OutlineStyle (OutLineNumberingLevel+)>
668 <!ELEMENT OutLineNumberingLevel EMPTY>
669 <!ATTLIST OutLineNumberingLevel Prefix CDATA #REQUIRED >
670 <!ATTLIST OutLineNumberingLevel NumType CDATA #REQUIRED >
671 <!ATTLIST OutLineNumberingLevel Suffix CDATA #REQUIRED >
672 <!ATTLIST OutLineNumberingLevel BulletChar CDATA #REQUIRED >
673 <!ATTLIST OutLineNumberingLevel BulletFontName CDATA #REQUIRED>
674 <!ATTLIST OutLineNumberingLevel ParentNumbering CDATA #REQUIRED >
675 <!ATTLIST OutLineNumberingLevel LeftMargin CDATA #REQUIRED>
676 <!ATTLIST OutLineNumberingLevel SymbolTextDistance CDATA #REQUIRED >
677 <!ATTLIST OutLineNumberingLevel FirstLineOffset CDATA #REQUIRED >
678 <!ATTLIST OutLineNumberingLevel Transliteration CDATA #IMPLIED >
679 <!ATTLIST OutLineNumberingLevel NatNum CDATA #IMPLIED>