summaryrefslogtreecommitdiffstats
path: root/tools/linguist/shared/ts.dtd
diff options
context:
space:
mode:
Diffstat (limited to 'tools/linguist/shared/ts.dtd')
-rw-r--r--tools/linguist/shared/ts.dtd93
1 files changed, 78 insertions, 15 deletions
diff --git a/tools/linguist/shared/ts.dtd b/tools/linguist/shared/ts.dtd
index d979f0b..ab77f64 100644
--- a/tools/linguist/shared/ts.dtd
+++ b/tools/linguist/shared/ts.dtd
@@ -4,6 +4,8 @@
!
! 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.
!
-->
<!--
@@ -12,39 +14,100 @@
-->
<!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>
-<!ELEMENT TS (defaultcodec?, context+) >
+<!--
+ ! 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?, extracomment?, message+) >
+<!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; >
-<!ELEMENT translatorcomment %evilstring; >
+<!-- The real comment (added by developer/designer) -->
<!ELEMENT extracomment %evilstring; >
-<!ELEMENT message (location*, source, oldsource?, comment?, oldcomment?, extracomment?, translatorcomment?, translation, userdata?) >
+<!-- 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
- encoding CDATA #IMPLIED
+ 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 #REQUIRED
- line CDATA #REQUIRED>
+ filename CDATA #IMPLIED
+ line CDATA #IMPLIED>
<!ELEMENT source %evilstring;>
-<!--
- ! The following should really say one evilstring macro or several numerusform elements,
- ! but the DTD can't express this.
+<!-- 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.
-->
-<!ELEMENT translation (#PCDATA|byte|numerusform)* >
<!ATTLIST translation
type (unfinished|obsolete) #IMPLIED
- encoding CDATA #IMPLIED>
+ variants (yes|no) "no">
+<!-- Deprecated. Use extra-* -->
<!ELEMENT userdata (#PCDATA)* >
-<!ELEMENT numerusform %evilstring; >
-
-
+<!--
+ ! 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>
+