summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@gnome.org>2013-10-28 11:06:00 -0400
committerShaun McCance <shaunm@gnome.org>2013-10-28 11:06:00 -0400
commite338a3e4463d6f8098ef76c45d44851fe62cb126 (patch)
treee487272e0a9cb0f04e13318d96e93ea9f230c418
parent9f85a74071db1fa5ca3a2dd83a3ab187884fb7f7 (diff)
downloaditstool-e338a3e4463d6f8098ef76c45d44851fe62cb126.tar.gz
Support localeFilterType="exclude"
-rwxr-xr-xitstool.in64
-rwxr-xr-xtests/ITS-2.0-Testsuite/run_tests.sh18
-rw-r--r--tests/LocaleFilter/Locale1Xml.fr_CA.po4
-rw-r--r--tests/LocaleFilter/Locale1Xml.fr_CH.po4
-rw-r--r--tests/LocaleFilter/Locale1Xml.fr_FR.po4
-rw-r--r--tests/LocaleFilter/Locale1Xml.pot4
-rw-r--r--tests/LocaleFilter/Locale2Xml.fr_CA.po4
-rw-r--r--tests/LocaleFilter/Locale2Xml.fr_CH.po4
-rw-r--r--tests/LocaleFilter/Locale2Xml.fr_FR.po4
-rw-r--r--tests/LocaleFilter/Locale2Xml.pot4
-rw-r--r--tests/LocaleFilter/Locale3Xml.fr_CA.po4
-rw-r--r--tests/LocaleFilter/Locale3Xml.fr_CH.po4
-rw-r--r--tests/LocaleFilter/Locale3Xml.fr_FR.po4
-rw-r--r--tests/LocaleFilter/Locale3Xml.pot4
-rw-r--r--tests/LocaleFilter/Locale4Xml.fr_CA.po4
-rw-r--r--tests/LocaleFilter/Locale4Xml.fr_CH.po4
-rw-r--r--tests/LocaleFilter/Locale4Xml.fr_FR.po4
-rw-r--r--tests/LocaleFilter/Locale4Xml.pot4
-rw-r--r--tests/LocaleFilter/Locale5Xml.fr_CA.po4
-rw-r--r--tests/LocaleFilter/Locale5Xml.fr_CH.po4
-rw-r--r--tests/LocaleFilter/Locale5Xml.fr_FR.po4
-rw-r--r--tests/LocaleFilter/Locale5Xml.pot4
-rw-r--r--tests/LocaleFilter/Locale6Xml.fr_CA.po22
-rw-r--r--tests/LocaleFilter/Locale6Xml.fr_CA.xml13
-rw-r--r--tests/LocaleFilter/Locale6Xml.fr_CH.po23
-rw-r--r--tests/LocaleFilter/Locale6Xml.fr_CH.xml13
-rw-r--r--tests/LocaleFilter/Locale6Xml.fr_FR.po22
-rw-r--r--tests/LocaleFilter/Locale6Xml.fr_FR.xml13
-rw-r--r--tests/LocaleFilter/Locale6Xml.joined.xml22
-rw-r--r--tests/LocaleFilter/Locale6Xml.pot23
-rw-r--r--tests/LocaleFilter/Locale6Xml.xml20
-rw-r--r--tests/run_tests.py16
32 files changed, 279 insertions, 70 deletions
diff --git a/itstool.in b/itstool.in
index bbf2e85..b239a60 100755
--- a/itstool.in
+++ b/itstool.in
@@ -320,7 +320,7 @@ class Message (object):
for idvalue in self._id_values:
ret += '#. (itstool) id: ' + idvalue + '\n'
if self._locale_filter is not None:
- ret += '#. (itstool) locale filter: ' + self._locale_filter + '\n'
+ ret += '#. (itstool) ' + self._locale_filter[1] + ' locale: ' + self._locale_filter[0] + '\n'
comments = []
commentsdict = {}
for comment in self._comments:
@@ -547,8 +547,16 @@ class Document (object):
self._its_preserve_space_nodes[node] = rule.nsProp('space', None)
elif xml_is_ns_name(rule, NS_ITS, 'localeFilterRule'):
if rule.nsProp('selector', None) is not None:
+ if rule.hasNsProp('localeFilterList', None):
+ lst = rule.nsProp('localeFilterList', None)
+ else:
+ lst = '*'
+ if rule.hasNsProp('localeFilterType', None):
+ typ = rule.nsProp('localeFilterType', None)
+ else:
+ typ = 'include'
for node in self._try_xpath_eval(xpath, rule.nsProp('selector', None)):
- self._its_locale_filters[node] = rule.nsProp('localeFilterList', None)
+ self._its_locale_filters[node] = (lst, typ)
elif xml_is_ns_name(rule, NS_ITST, 'dropRule'):
if rule.nsProp('selector', None) is not None:
for node in self._try_xpath_eval(xpath, rule.nsProp('selector', None)):
@@ -855,7 +863,8 @@ class Document (object):
prevnode = node.prev
for lang in sorted(translations.keys(), reverse=True):
locale = self.get_its_locale_filter(node)
- if not match_locale_list(locale, lang):
+ lmatch = match_locale_list(locale[0], lang)
+ if (locale[1] == 'include' and not lmatch) or (locale[1] == 'exclude' and lmatch):
continue
newnode = self.get_translated(node, translations[lang], strict=strict, lang=lang)
if newnode != node:
@@ -878,11 +887,16 @@ class Document (object):
node = self._doc.getRootElement()
if node is None or node.type != 'element':
return
+ drop = False
locale = self.get_its_locale_filter(node)
- if locale != '*':
- if not match_locale_list(locale, language):
- locale = ''
- if self.get_itst_drop(node) == 'yes' or locale == '':
+ if locale[1] == 'include':
+ if locale[0] != '*':
+ if not match_locale_list(locale[0], language):
+ drop = True
+ elif locale[1] == 'exclude':
+ if match_locale_list(locale[0], language):
+ drop = True
+ if self.get_itst_drop(node) == 'yes' or drop:
prev = node.prev
node.unlinkNode()
node.freeNode()
@@ -1023,7 +1037,8 @@ class Document (object):
return
if self._itst_drop_nodes.get(node, 'no') == 'yes':
return
- if self.get_its_locale_filter(node) == '':
+ locfil = self.get_its_locale_filter(node)
+ if locfil == ('', 'include') or locfil == ('*', 'exclude'):
return
if path is None:
path = ''
@@ -1053,7 +1068,7 @@ class Document (object):
msg.add_id_value(basename + '#' + idvalue)
if self.get_preserve_space(node):
msg.set_preserve_space()
- if self.get_its_locale_filter(node) != '*':
+ if self.get_its_locale_filter(node) != ('*', 'include'):
msg.set_locale_filter(self.get_its_locale_filter(node))
msg.add_source('%s:%i' % (self._doc.name, node.lineNo()))
msg.add_marker('%s/%s' % (node.parent.name, node.name))
@@ -1185,15 +1200,32 @@ class Document (object):
return 'no'
def get_its_locale_filter(self, node):
- if node.hasNsProp('localeFilterList', NS_ITS):
- return node.nsProp('localeFilterList', NS_ITS)
- if xml_is_ns_name(node, NS_ITS, 'span') and node.hasNsProp('localeFilterList', None):
- return node.nsProp('localeFilterList', None)
+ if node.hasNsProp('localeFilterList', NS_ITS) or node.hasNsProp('localeFilterType', NS_ITS):
+ if node.hasNsProp('localeFilterList', NS_ITS):
+ lst = node.nsProp('localeFilterList', NS_ITS)
+ else:
+ lst = '*'
+ if node.hasNsProp('localeFilterType', NS_ITS):
+ typ = node.nsProp('localeFilterType', NS_ITS)
+ else:
+ typ = 'include'
+ return (lst, typ)
+ if (xml_is_ns_name(node, NS_ITS, 'span') and
+ (node.hasNsProp('localeFilterList', None) or node.hasNsProp('localeFilterType', None))):
+ if node.hasNsProp('localeFilterList', None):
+ lst = node.nsProp('localeFilterList', None)
+ else:
+ lst = '*'
+ if node.hasNsProp('localeFilterType', None):
+ typ = node.nsProp('localeFilterType', None)
+ else:
+ typ = 'include'
+ return (lst, typ)
if self._its_locale_filters.has_key(node):
return self._its_locale_filters[node]
if node.parent.type == 'element':
return self.get_its_locale_filter(node.parent)
- return '*'
+ return ('*', 'include')
def get_itst_drop(self, node):
if node.hasNsProp('drop', NS_ITST) and node.nsProp('drop', NS_ITST) == 'yes':
@@ -1238,8 +1270,8 @@ class Document (object):
elif category == 'withinText':
if node.type != 'attribute':
compval = 'withinText="%s"' % self.get_its_within_text(node)
- elif category == 'localeFilterList':
- compval = 'localeFilterList="%s"' % self.get_its_locale_filter(node)
+ elif category == 'localeFilter':
+ compval = 'localeFilterList="%s"\tlocaleFilterType="%s"' % self.get_its_locale_filter(node)
elif category == 'locNote':
val = self.get_its_loc_notes(node)
if len(val) > 0:
diff --git a/tests/ITS-2.0-Testsuite/run_tests.sh b/tests/ITS-2.0-Testsuite/run_tests.sh
index 7ee5d60..f8e33d9 100755
--- a/tests/ITS-2.0-Testsuite/run_tests.sh
+++ b/tests/ITS-2.0-Testsuite/run_tests.sh
@@ -4,21 +4,11 @@ testdata="
elementswithintext/withintext/withinText
externalresource/externalresource/externalResourceRef
idvalue/idvalue/idValue
-localefilter/locale/localeFilterList
+localefilter/locale/localeFilter
localizationnote/locnote/locNote
preservespace/preservespace/preserveSpace
translate/translate/translate
"
-exclude="
-locale1xml
-locale2xml
-locale3xml
-locale4xml
-locale5xml
-locale6xml
-locale7xml
-locale8xml
-"
for datum in $testdata; do
for format in xml; do
@@ -29,9 +19,9 @@ for datum in $testdata; do
for testfile in `ls ${testpre}*${format}.${format}`; do
testnum=`basename ${testfile:${#testpre}} ${format}.${format}`
skip=0
- for ex in $exclude; do
- if [ "$testbase$testnum$format" = "$ex" ]; then skip=1; break; fi;
- done
+ #for ex in $exclude; do
+ # if [ "$testbase$testnum$format" = "$ex" ]; then skip=1; break; fi;
+ #done
if [ "$skip" = "0" ]; then
expected="expected/$testdir/$format/$testbase$testnum${format}output.txt"
realout="realout/$testdir/$format/$testbase$testnum${format}output.txt"
diff --git a/tests/LocaleFilter/Locale1Xml.fr_CA.po b/tests/LocaleFilter/Locale1Xml.fr_CA.po
index 8dca531..c57c307 100644
--- a/tests/LocaleFilter/Locale1Xml.fr_CA.po
+++ b/tests/LocaleFilter/Locale1Xml.fr_CA.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale1Xml.xml:11
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale1Xml.xml:14
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale1Xml.fr_CH.po b/tests/LocaleFilter/Locale1Xml.fr_CH.po
index 8dca531..c57c307 100644
--- a/tests/LocaleFilter/Locale1Xml.fr_CH.po
+++ b/tests/LocaleFilter/Locale1Xml.fr_CH.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale1Xml.xml:11
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale1Xml.xml:14
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale1Xml.fr_FR.po b/tests/LocaleFilter/Locale1Xml.fr_FR.po
index 8dca531..c57c307 100644
--- a/tests/LocaleFilter/Locale1Xml.fr_FR.po
+++ b/tests/LocaleFilter/Locale1Xml.fr_FR.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale1Xml.xml:11
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale1Xml.xml:14
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale1Xml.pot b/tests/LocaleFilter/Locale1Xml.pot
index 54d1075..073b96a 100644
--- a/tests/LocaleFilter/Locale1Xml.pot
+++ b/tests/LocaleFilter/Locale1Xml.pot
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale1Xml.xml:11
msgid "This legal notice is only for Canadian locales."
msgstr ""
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale1Xml.xml:14
msgid "This legal notice is only for Swiss locales."
msgstr ""
diff --git a/tests/LocaleFilter/Locale2Xml.fr_CA.po b/tests/LocaleFilter/Locale2Xml.fr_CA.po
index daa7d7a..3964bbc 100644
--- a/tests/LocaleFilter/Locale2Xml.fr_CA.po
+++ b/tests/LocaleFilter/Locale2Xml.fr_CA.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale2Xml.xml:5
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale2Xml.xml:8
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale2Xml.fr_CH.po b/tests/LocaleFilter/Locale2Xml.fr_CH.po
index daa7d7a..3964bbc 100644
--- a/tests/LocaleFilter/Locale2Xml.fr_CH.po
+++ b/tests/LocaleFilter/Locale2Xml.fr_CH.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale2Xml.xml:5
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale2Xml.xml:8
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale2Xml.fr_FR.po b/tests/LocaleFilter/Locale2Xml.fr_FR.po
index daa7d7a..3964bbc 100644
--- a/tests/LocaleFilter/Locale2Xml.fr_FR.po
+++ b/tests/LocaleFilter/Locale2Xml.fr_FR.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale2Xml.xml:5
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale2Xml.xml:8
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale2Xml.pot b/tests/LocaleFilter/Locale2Xml.pot
index 9e75a52..1ae50f7 100644
--- a/tests/LocaleFilter/Locale2Xml.pot
+++ b/tests/LocaleFilter/Locale2Xml.pot
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale2Xml.xml:5
msgid "This legal notice is only for Canadian locales."
msgstr ""
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale2Xml.xml:8
msgid "This legal notice is only for Swiss locales."
msgstr ""
diff --git a/tests/LocaleFilter/Locale3Xml.fr_CA.po b/tests/LocaleFilter/Locale3Xml.fr_CA.po
index 848c1ef..1bfa5af 100644
--- a/tests/LocaleFilter/Locale3Xml.fr_CA.po
+++ b/tests/LocaleFilter/Locale3Xml.fr_CA.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale3Xml.xml:7
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale3Xml.xml:10
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale3Xml.fr_CH.po b/tests/LocaleFilter/Locale3Xml.fr_CH.po
index 848c1ef..1bfa5af 100644
--- a/tests/LocaleFilter/Locale3Xml.fr_CH.po
+++ b/tests/LocaleFilter/Locale3Xml.fr_CH.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale3Xml.xml:7
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale3Xml.xml:10
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale3Xml.fr_FR.po b/tests/LocaleFilter/Locale3Xml.fr_FR.po
index 848c1ef..1bfa5af 100644
--- a/tests/LocaleFilter/Locale3Xml.fr_FR.po
+++ b/tests/LocaleFilter/Locale3Xml.fr_FR.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale3Xml.xml:7
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale3Xml.xml:10
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale3Xml.pot b/tests/LocaleFilter/Locale3Xml.pot
index 49ac256..3e9fcb4 100644
--- a/tests/LocaleFilter/Locale3Xml.pot
+++ b/tests/LocaleFilter/Locale3Xml.pot
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale3Xml.xml:7
msgid "This legal notice is only for Canadian locales."
msgstr ""
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale3Xml.xml:10
msgid "This legal notice is only for Swiss locales."
msgstr ""
diff --git a/tests/LocaleFilter/Locale4Xml.fr_CA.po b/tests/LocaleFilter/Locale4Xml.fr_CA.po
index b029fd1..849295b 100644
--- a/tests/LocaleFilter/Locale4Xml.fr_CA.po
+++ b/tests/LocaleFilter/Locale4Xml.fr_CA.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale4Xml.xml:10
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale4Xml.xml:13
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale4Xml.fr_CH.po b/tests/LocaleFilter/Locale4Xml.fr_CH.po
index b029fd1..849295b 100644
--- a/tests/LocaleFilter/Locale4Xml.fr_CH.po
+++ b/tests/LocaleFilter/Locale4Xml.fr_CH.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale4Xml.xml:10
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale4Xml.xml:13
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale4Xml.fr_FR.po b/tests/LocaleFilter/Locale4Xml.fr_FR.po
index b029fd1..849295b 100644
--- a/tests/LocaleFilter/Locale4Xml.fr_FR.po
+++ b/tests/LocaleFilter/Locale4Xml.fr_FR.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale4Xml.xml:10
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale4Xml.xml:13
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale4Xml.pot b/tests/LocaleFilter/Locale4Xml.pot
index e4b44db..73d1f42 100644
--- a/tests/LocaleFilter/Locale4Xml.pot
+++ b/tests/LocaleFilter/Locale4Xml.pot
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale4Xml.xml:10
msgid "This legal notice is only for Canadian locales."
msgstr ""
#. (itstool) path: legalnotice/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale4Xml.xml:13
msgid "This legal notice is only for Swiss locales."
msgstr ""
diff --git a/tests/LocaleFilter/Locale5Xml.fr_CA.po b/tests/LocaleFilter/Locale5Xml.fr_CA.po
index 6db0094..563c147 100644
--- a/tests/LocaleFilter/Locale5Xml.fr_CA.po
+++ b/tests/LocaleFilter/Locale5Xml.fr_CA.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: span/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale5Xml.xml:4
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: span/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale5Xml.xml:7
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale5Xml.fr_CH.po b/tests/LocaleFilter/Locale5Xml.fr_CH.po
index 6db0094..563c147 100644
--- a/tests/LocaleFilter/Locale5Xml.fr_CH.po
+++ b/tests/LocaleFilter/Locale5Xml.fr_CH.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: span/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale5Xml.xml:4
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: span/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale5Xml.xml:7
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale5Xml.fr_FR.po b/tests/LocaleFilter/Locale5Xml.fr_FR.po
index 6db0094..563c147 100644
--- a/tests/LocaleFilter/Locale5Xml.fr_FR.po
+++ b/tests/LocaleFilter/Locale5Xml.fr_FR.po
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: span/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale5Xml.xml:4
msgid "This legal notice is only for Canadian locales."
msgstr "Cet avis juridique est seulement pour les locales canadiennes."
#. (itstool) path: span/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale5Xml.xml:7
msgid "This legal notice is only for Swiss locales."
msgstr "Cet avis juridique est seulement pour les locales suisses."
diff --git a/tests/LocaleFilter/Locale5Xml.pot b/tests/LocaleFilter/Locale5Xml.pot
index 3aa1c20..6f8b66f 100644
--- a/tests/LocaleFilter/Locale5Xml.pot
+++ b/tests/LocaleFilter/Locale5Xml.pot
@@ -10,13 +10,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. (itstool) path: span/para
-#. (itstool) locale filter: en-CA, fr-CA
+#. (itstool) include locale: en-CA, fr-CA
#: tests/LocaleFilter/Locale5Xml.xml:4
msgid "This legal notice is only for Canadian locales."
msgstr ""
#. (itstool) path: span/para
-#. (itstool) locale filter: *-CH
+#. (itstool) include locale: *-CH
#: tests/LocaleFilter/Locale5Xml.xml:7
msgid "This legal notice is only for Swiss locales."
msgstr ""
diff --git a/tests/LocaleFilter/Locale6Xml.fr_CA.po b/tests/LocaleFilter/Locale6Xml.fr_CA.po
new file mode 100644
index 0000000..fab5864
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.fr_CA.po
@@ -0,0 +1,22 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2012-09-11 10:58-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. (itstool) path: legalnotice/para
+#. (itstool) include locale: *-CA
+#: tests/LocaleFilter/Locale6Xml.xml:11
+msgid "This legal notice is only for Canadian locales."
+msgstr "Cet avis juridique est seulement pour les locales canadiennes."
+
+#. (itstool) path: legalnotice/para
+#. (itstool) exclude locale: *-CA
+#: tests/LocaleFilter/Locale6Xml.xml:14
+msgid "This legal notice is only for non-Canadian locales."
+msgstr "Cet avis juridique est seulement pour les locales non-canadiens."
diff --git a/tests/LocaleFilter/Locale6Xml.fr_CA.xml b/tests/LocaleFilter/Locale6Xml.fr_CA.xml
new file mode 100644
index 0000000..ddb82b3
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.fr_CA.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<book xmlns:its="http://www.w3.org/2005/11/its" its:version="2.0">
+ <info>
+ <its:rules version="2.0">
+ <its:localeFilterRule selector="//legalnotice[@role='Canada']" localeFilterList="*-CA"/>
+ <its:localeFilterRule selector="//legalnotice[@role='nonCanada']" localeFilterList="*-CA" localeFilterType="exclude"/>
+ <its:localeFilterRule selector="//remark" localeFilterList="*" localeFilterType="exclude"/>
+ </its:rules>
+ <legalnotice role="Canada">
+ <para>Cet avis juridique est seulement pour les locales canadiennes.</para>
+ </legalnotice>
+ </info>
+</book>
diff --git a/tests/LocaleFilter/Locale6Xml.fr_CH.po b/tests/LocaleFilter/Locale6Xml.fr_CH.po
new file mode 100644
index 0000000..de2e16f
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.fr_CH.po
@@ -0,0 +1,23 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2012-09-11 10:58-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. (itstool) path: legalnotice/para
+#. (itstool) include locale: *-CA
+#: tests/LocaleFilter/Locale6Xml.xml:11
+msgid "This legal notice is only for Canadian locales."
+msgstr "Cet avis juridique est seulement pour les locales canadiennes."
+
+#. (itstool) path: legalnotice/para
+#. (itstool) exclude locale: *-CA
+#: tests/LocaleFilter/Locale6Xml.xml:14
+msgid "This legal notice is only for non-Canadian locales."
+msgstr "Cet avis juridique est seulement pour les locales non-canadiens."
+
diff --git a/tests/LocaleFilter/Locale6Xml.fr_CH.xml b/tests/LocaleFilter/Locale6Xml.fr_CH.xml
new file mode 100644
index 0000000..6b7b16b
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.fr_CH.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<book xmlns:its="http://www.w3.org/2005/11/its" its:version="2.0">
+ <info>
+ <its:rules version="2.0">
+ <its:localeFilterRule selector="//legalnotice[@role='Canada']" localeFilterList="*-CA"/>
+ <its:localeFilterRule selector="//legalnotice[@role='nonCanada']" localeFilterList="*-CA" localeFilterType="exclude"/>
+ <its:localeFilterRule selector="//remark" localeFilterList="*" localeFilterType="exclude"/>
+ </its:rules>
+ <legalnotice role="nonCanada">
+ <para>Cet avis juridique est seulement pour les locales non-canadiens.</para>
+ </legalnotice>
+ </info>
+</book>
diff --git a/tests/LocaleFilter/Locale6Xml.fr_FR.po b/tests/LocaleFilter/Locale6Xml.fr_FR.po
new file mode 100644
index 0000000..fab5864
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.fr_FR.po
@@ -0,0 +1,22 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2012-09-11 10:58-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. (itstool) path: legalnotice/para
+#. (itstool) include locale: *-CA
+#: tests/LocaleFilter/Locale6Xml.xml:11
+msgid "This legal notice is only for Canadian locales."
+msgstr "Cet avis juridique est seulement pour les locales canadiennes."
+
+#. (itstool) path: legalnotice/para
+#. (itstool) exclude locale: *-CA
+#: tests/LocaleFilter/Locale6Xml.xml:14
+msgid "This legal notice is only for non-Canadian locales."
+msgstr "Cet avis juridique est seulement pour les locales non-canadiens."
diff --git a/tests/LocaleFilter/Locale6Xml.fr_FR.xml b/tests/LocaleFilter/Locale6Xml.fr_FR.xml
new file mode 100644
index 0000000..6b7b16b
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.fr_FR.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<book xmlns:its="http://www.w3.org/2005/11/its" its:version="2.0">
+ <info>
+ <its:rules version="2.0">
+ <its:localeFilterRule selector="//legalnotice[@role='Canada']" localeFilterList="*-CA"/>
+ <its:localeFilterRule selector="//legalnotice[@role='nonCanada']" localeFilterList="*-CA" localeFilterType="exclude"/>
+ <its:localeFilterRule selector="//remark" localeFilterList="*" localeFilterType="exclude"/>
+ </its:rules>
+ <legalnotice role="nonCanada">
+ <para>Cet avis juridique est seulement pour les locales non-canadiens.</para>
+ </legalnotice>
+ </info>
+</book>
diff --git a/tests/LocaleFilter/Locale6Xml.joined.xml b/tests/LocaleFilter/Locale6Xml.joined.xml
new file mode 100644
index 0000000..5e575ba
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.joined.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<book xmlns:its="http://www.w3.org/2005/11/its" its:version="2.0">
+ <info>
+ <its:rules version="2.0">
+ <its:localeFilterRule selector="//legalnotice[@role='Canada']" localeFilterList="*-CA"/>
+ <its:localeFilterRule selector="//legalnotice[@role='nonCanada']" localeFilterList="*-CA" localeFilterType="exclude"/>
+ <its:localeFilterRule selector="//remark" localeFilterList="*" localeFilterType="exclude"/>
+ </its:rules>
+ <legalnotice role="Canada">
+ <para>This legal notice is only for Canadian locales.</para>
+ <para xml:lang="fr-CA">Cet avis juridique est seulement pour les locales canadiennes.</para>
+ </legalnotice>
+ <legalnotice role="nonCanada">
+ <para>This legal notice is only for non-Canadian locales.</para>
+ <para xml:lang="fr-CH">Cet avis juridique est seulement pour les locales non-canadiens.</para>
+ <para xml:lang="fr-FR">Cet avis juridique est seulement pour les locales non-canadiens.</para>
+ </legalnotice>
+ <remark>
+ This remark appears in no translations.
+ </remark>
+ </info>
+</book>
diff --git a/tests/LocaleFilter/Locale6Xml.pot b/tests/LocaleFilter/Locale6Xml.pot
new file mode 100644
index 0000000..4796e95
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.pot
@@ -0,0 +1,23 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2012-09-11 10:58-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. (itstool) path: legalnotice/para
+#. (itstool) include locale: *-CA
+#: tests/LocaleFilter/Locale6Xml.xml:11
+msgid "This legal notice is only for Canadian locales."
+msgstr ""
+
+#. (itstool) path: legalnotice/para
+#. (itstool) exclude locale: *-CA
+#: tests/LocaleFilter/Locale6Xml.xml:14
+msgid "This legal notice is only for non-Canadian locales."
+msgstr ""
+
diff --git a/tests/LocaleFilter/Locale6Xml.xml b/tests/LocaleFilter/Locale6Xml.xml
new file mode 100644
index 0000000..5b19444
--- /dev/null
+++ b/tests/LocaleFilter/Locale6Xml.xml
@@ -0,0 +1,20 @@
+<book
+ xmlns:its="http://www.w3.org/2005/11/its"
+ its:version="2.0">
+ <info>
+ <its:rules version="2.0">
+ <its:localeFilterRule selector="//legalnotice[@role='Canada']" localeFilterList="*-CA"/>
+ <its:localeFilterRule selector="//legalnotice[@role='nonCanada']" localeFilterList="*-CA" localeFilterType="exclude"/>
+ <its:localeFilterRule selector="//remark" localeFilterList="*" localeFilterType="exclude"/>
+ </its:rules>
+ <legalnotice role="Canada">
+ <para>This legal notice is only for Canadian locales.</para>
+ </legalnotice>
+ <legalnotice role="nonCanada">
+ <para>This legal notice is only for non-Canadian locales.</para>
+ </legalnotice>
+ <remark>
+ This remark appears in no translations.
+ </remark>
+ </info>
+</book>
diff --git a/tests/run_tests.py b/tests/run_tests.py
index 0b07a8a..59738e8 100644
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -243,6 +243,18 @@ class ItstoolTests(unittest.TestCase):
'LocaleFilter/Locale5Xml.fr_CH.xml',
'fr-CH')])
+ def test_Locale6(self):
+ self._test_translation_process('LocaleFilter/Locale6Xml.xml',
+ outputs=[('LocaleFilter/Locale6Xml.fr_FR.po',
+ 'LocaleFilter/Locale6Xml.fr_FR.xml',
+ 'fr-FR'),
+ ('LocaleFilter/Locale6Xml.fr_CA.po',
+ 'LocaleFilter/Locale6Xml.fr_CA.xml',
+ 'fr-CA'),
+ ('LocaleFilter/Locale6Xml.fr_CH.po',
+ 'LocaleFilter/Locale6Xml.fr_CH.xml',
+ 'fr-CH')])
+
def test_Locale1_join(self):
self._test_translation_join('LocaleFilter/Locale1Xml.xml',
('fr_FR', 'fr_CA', 'fr_CH'))
@@ -263,6 +275,10 @@ class ItstoolTests(unittest.TestCase):
self._test_translation_join('LocaleFilter/Locale5Xml.xml',
('fr_FR', 'fr_CA', 'fr_CH'))
+ def test_Locale6_join(self):
+ self._test_translation_join('LocaleFilter/Locale6Xml.xml',
+ ('fr_FR', 'fr_CA', 'fr_CH'))
+
def test_elementwithintextlocalitsSpanXml(self):
self._test_translation_process('elementwithintextlocalitsSpanXml.xml')