<!-- ! ! Some notes to the DTD: ! ! The location element is set as optional since it was introduced first in Qt 4.2. ! The userdata element is set as optional since it was introduced first in Qt 4.4. ! The source and translation elements are optional starting with version 3.0 ! (Qt 4.6) to support S60 blank messages. ! --><!-- ! Macro used in order to escape byte entities not allowed in an xml document ! for instance, only #x9, #xA and #xD are allowed characters below #x20. --><!ENTITY % evilstring '(#PCDATA | byte)*' ><!ELEMENT byte EMPTY><!-- value contains decimal (e.g. 1000) or hex (e.g. x3e8) unicode encoding of one char --><!ATTLIST byte value CDATA #REQUIRED><!-- ! This element wildcard is no valid DTD. No better solution available. ! extra elements may appear in TS and message elements. Each element may appear ! only once within each scope. The contents are preserved verbatim; any ! attributes are dropped. Currently recognized extra tags include: ! extra-po-msgid_plural, extra-po-old_msgid_plural ! extra-po-flags (comma-space separated list) ! extra-loc-layout_id ! extra-loc-feature ! extra-loc-blank --><!ELEMENT extra-* %evilstring; ><!ELEMENT TS (defaultcodec?, extra-**, (context|message)+) > <!ATTLIST TS version CDATA #IMPLIED sourcelanguage CDATA #IMPLIED language CDATA #IMPLIED><!-- The encoding to use in the QM file by default. Default is ISO-8859-1. --><!ELEMENT defaultcodec (#PCDATA) ><!ELEMENT context (name?, comment?, (context|message)+) ><!ATTLIST context encoding CDATA #IMPLIED><!ELEMENT name %evilstring; ><!-- If "no", then the context nesting is for informational puposes only --><!ATTLIST name nest (yes|no) "yes"><!-- This is "disambiguation" in the (new) API, or "msgctxt" in gettext speak --><!ELEMENT comment %evilstring; ><!-- Previous content of comment (result of merge) --><!ELEMENT oldcomment %evilstring; ><!-- The real comment (added by developer/designer) --><!ELEMENT extracomment %evilstring; ><!-- Comment added by translator --><!ELEMENT translatorcomment %evilstring; ><!ELEMENT message (location*, source?, oldsource?, comment?, oldcomment?, extracomment?, translatorcomment?, translation?, userdata?, extra-**) ><!-- ! If utf8 is true, the defaultcodec is overridden and the message is encoded ! in UTF-8 in the QM file. --><!ATTLIST message id CDATA #IMPLIED utf8 (true|false) "false" numerus (yes|no) "no"><!ELEMENT location EMPTY><!-- ! If the line is omitted, the location specifies only a file. ! ! location supports relative specifications as well. Line numbers are ! relative (explicitly positive or negative) to the last reference to a ! given filename; each file starts with current line 0. If the filename ! is omitted, the "current" one is used. For the 1st location in a message, ! "current" is the filename used for the 1st location of the previous message. ! For subsequent locations, it is the filename used for the previous location. ! A single TS file has either all absolute or all relative locations. --><!ATTLIST location filename CDATA #IMPLIED line CDATA #IMPLIED><!ELEMENT source %evilstring;><!-- Previous content of source (result of merge) --><!ELEMENT oldsource %evilstring;><!-- ! The following should really say one evilstring macro or several ! numerusform or lengthvariant elements, but the DTD can't express this. --><!ELEMENT translation (#PCDATA|byte|numerusform|lengthvariant)* ><!-- ! If no type is set, the message is "finished". ! Length variants must be ordered by falling display length. ! variants may not be yes if the message has numerus yes. --><!ATTLIST translation type (unfinished|obsolete) #IMPLIED variants (yes|no) "no"><!-- Deprecated. Use extra-* --><!ELEMENT userdata (#PCDATA)* ><!-- ! The following should really say one evilstring macro or several ! lengthvariant elements, but the DTD can't express this. ! Length variants must be ordered by falling display length. --><!ELEMENT numerusform (#PCDATA|byte|lengthvariant)* ><!ATTLIST numerusform plurality (nullar|singular|dual|trial|paucal|greaterpaucal|plural|greaterplural) #IMPLIED> variants (yes|no) "no"><!ELEMENT lengthvariant %evilstring; ><!-- ! The translation variants have a priority between 1 ("highest") and 9 ("lowest") ! Typically longer translations get a higher priority. ! If omitted, the order of appearance of the variants in the TS files is used. --><!ATTLIST lengthvariant priority (1|2|3|4|5|6|7|8|9) #IMPLIED>