Généralement il n'y a qu'un unique ficher DTD (Document Type Definition) pour la localisation d'un fichier XUL spécifique. Mais il existe des cas où l'utilisation de plusieurs DTD peut être nécessaire, comme par exemple pour la localisation de widgets couramment utilisés dans les fichiers XUL, en plus de ceux spécifiques au fichier à localiser.
DTD unique
Pour rendre localisables les chaînes de votre fichier XUL, vous devez ajouter une déclaration DTD au début du fichier comme ceci :
<!DOCTYPE window SYSTEM "chrome://myextension/locale/mainwindow.dtd">
où window
est le nom local de l'élément (racine) du document.
Par exmple, si vous avez une entité appelée someButton.label
définie dans mainwindow.dtd
, vous pouvez y accéder comme ceci :
<button id="somebutton" label="&someButton.label">
DTD multiples
Si vous voulez utiliser plusieurs DTD pour votre fichier XUL, vous pouvez simplement lister tous les fichiers DTD dans votre déclaration DTD :
<!DOCTYPE window [ <!ENTITY % commonDTD SYSTEM "chrome://myextensions/locale/common.dtd"> %commonDTD; <!ENTITY % mainwindowDTD SYSTEM "chrome://myextension/locale/mainwindow.dtd"> %mainwindowDTD; ]>
Vous pouvez maintenant accéder aux entités déclarées dans les DTD comme indiqué ci-dessus. Supposons que vous avez une entité okButton.label
définie dans le fichier common.dtd
. Alors l'accès aux entités des deux DTD ressemblera à cela :
<button id="somebutton" label="&someButton.label"> ... <button id="okbutton" label="&okButton.label">
Notez qu'il n'existe rien de comparable aux espaces de noms avec plusieurs DTDs. Vous devez vous assurez qu'il n'y a pas de conflit entre les entités définies dans les différents DTD.