|
1 <!-- |
|
2 ! |
|
3 ! Some notes to the DTD: |
|
4 ! |
|
5 ! The location element is set as optional since it was introduced first in Qt 4.2. |
|
6 ! The userdata element is set as optional since it was introduced first in Qt 4.4. |
|
7 ! The source and translation elements are optional starting with version 3.0 |
|
8 ! (Qt 4.6) to support S60 blank messages. |
|
9 ! |
|
10 --> |
|
11 <!-- |
|
12 ! Macro used in order to escape byte entities not allowed in an xml document |
|
13 ! for instance, only #x9, #xA and #xD are allowed characters below #x20. |
|
14 --> |
|
15 <!ENTITY % evilstring '(#PCDATA | byte)*' > |
|
16 <!ELEMENT byte EMPTY> |
|
17 <!-- value contains decimal (e.g. 1000) or hex (e.g. x3e8) unicode encoding of one char --> |
|
18 <!ATTLIST byte |
|
19 value CDATA #REQUIRED> |
|
20 <!-- |
|
21 ! This element wildcard is no valid DTD. No better solution available. |
|
22 ! extra elements may appear in TS and message elements. Each element may appear |
|
23 ! only once within each scope. The contents are preserved verbatim; any |
|
24 ! attributes are dropped. Currently recognized extra tags include: |
|
25 ! extra-po-msgid_plural, extra-po-old_msgid_plural |
|
26 ! extra-po-flags (comma-space separated list) |
|
27 ! extra-loc-layout_id |
|
28 ! extra-loc-feature |
|
29 ! extra-loc-blank |
|
30 --> |
|
31 <!ELEMENT extra-* %evilstring; > |
|
32 <!ELEMENT TS (defaultcodec?, extra-**, (context|message)+) > |
|
33 <!ATTLIST TS |
|
34 version CDATA #IMPLIED |
|
35 sourcelanguage CDATA #IMPLIED |
|
36 language CDATA #IMPLIED> |
|
37 <!-- The encoding to use in the QM file by default. Default is ISO-8859-1. --> |
|
38 <!ELEMENT defaultcodec (#PCDATA) > |
|
39 <!ELEMENT context (name?, comment?, (context|message)+) > |
|
40 <!ATTLIST context |
|
41 encoding CDATA #IMPLIED> |
|
42 <!ELEMENT name %evilstring; > |
|
43 <!-- If "no", then the context nesting is for informational puposes only --> |
|
44 <!ATTLIST name |
|
45 nest (yes|no) "yes"> |
|
46 <!-- This is "disambiguation" in the (new) API, or "msgctxt" in gettext speak --> |
|
47 <!ELEMENT comment %evilstring; > |
|
48 <!-- Previous content of comment (result of merge) --> |
|
49 <!ELEMENT oldcomment %evilstring; > |
|
50 <!-- The real comment (added by developer/designer) --> |
|
51 <!ELEMENT extracomment %evilstring; > |
|
52 <!-- Comment added by translator --> |
|
53 <!ELEMENT translatorcomment %evilstring; > |
|
54 <!ELEMENT message (location*, source?, oldsource?, comment?, oldcomment?, extracomment?, translatorcomment?, translation?, userdata?, extra-**) > |
|
55 <!-- |
|
56 ! If utf8 is true, the defaultcodec is overridden and the message is encoded |
|
57 ! in UTF-8 in the QM file. |
|
58 --> |
|
59 <!ATTLIST message |
|
60 id CDATA #IMPLIED |
|
61 utf8 (true|false) "false" |
|
62 numerus (yes|no) "no"> |
|
63 <!ELEMENT location EMPTY> |
|
64 <!-- |
|
65 ! If the line is omitted, the location specifies only a file. |
|
66 ! |
|
67 ! location supports relative specifications as well. Line numbers are |
|
68 ! relative (explicitly positive or negative) to the last reference to a |
|
69 ! given filename; each file starts with current line 0. If the filename |
|
70 ! is omitted, the "current" one is used. For the 1st location in a message, |
|
71 ! "current" is the filename used for the 1st location of the previous message. |
|
72 ! For subsequent locations, it is the filename used for the previous location. |
|
73 ! A single TS file has either all absolute or all relative locations. |
|
74 --> |
|
75 <!ATTLIST location |
|
76 filename CDATA #IMPLIED |
|
77 line CDATA #IMPLIED> |
|
78 <!ELEMENT source %evilstring;> |
|
79 <!-- Previous content of source (result of merge) --> |
|
80 <!ELEMENT oldsource %evilstring;> |
|
81 <!-- |
|
82 ! The following should really say one evilstring macro or several |
|
83 ! numerusform or lengthvariant elements, but the DTD can't express this. |
|
84 --> |
|
85 <!ELEMENT translation (#PCDATA|byte|numerusform|lengthvariant)* > |
|
86 <!-- |
|
87 ! If no type is set, the message is "finished". |
|
88 ! Length variants must be ordered by falling display length. |
|
89 ! variants may not be yes if the message has numerus yes. |
|
90 --> |
|
91 <!ATTLIST translation |
|
92 type (unfinished|obsolete) #IMPLIED |
|
93 variants (yes|no) "no"> |
|
94 <!-- Deprecated. Use extra-* --> |
|
95 <!ELEMENT userdata (#PCDATA)* > |
|
96 <!-- |
|
97 ! The following should really say one evilstring macro or several |
|
98 ! lengthvariant elements, but the DTD can't express this. |
|
99 ! Length variants must be ordered by falling display length. |
|
100 --> |
|
101 <!ELEMENT numerusform (#PCDATA|byte|lengthvariant)* > |
|
102 <!ATTLIST numerusform |
|
103 plurality (nullar|singular|dual|trial|paucal|greaterpaucal|plural|greaterplural) #IMPLIED> |
|
104 variants (yes|no) "no"> |
|
105 <!ELEMENT lengthvariant %evilstring; > |
|
106 <!-- |
|
107 ! The translation variants have a priority between 1 ("highest") and 9 ("lowest") |
|
108 ! Typically longer translations get a higher priority. |
|
109 ! If omitted, the order of appearance of the variants in the TS files is used. |
|
110 --> |
|
111 <!ATTLIST lengthvariant |
|
112 priority (1|2|3|4|5|6|7|8|9) #IMPLIED> |
|
113 |