Index: cms/converters.py |
=================================================================== |
--- a/cms/converters.py |
+++ b/cms/converters.py |
@@ -106,16 +106,18 @@ class AttributeParser(HTMLParser.HTMLPar |
def handle_entityref(self, name): |
self._append_text(self.unescape("&%s;" % name)) |
def handle_charref(self, name): |
self._append_text(self.unescape("&#%s;" % name)) |
class Converter: |
whitelist = {"a", "em", "strong", "code", "span"} |
+ missing_translations = 0 |
+ total_translations = 0 |
def __init__(self, params, key="pagedata"): |
self._params = params |
self._key = key |
self._attribute_parser = AttributeParser(self.whitelist) |
# Read in any parameters specified at the beginning of the file |
lines = params[key].splitlines(True) |
@@ -131,20 +133,25 @@ class Converter: |
s, flags=re.S) |
def re_escape(s): |
return re.escape(escape(s)) |
# Extract tag attributes from default string |
default, saved_attributes, fixed_strings = self._attribute_parser.parse(default, self._params["page"]) |
# Get translation |
- if self._params["locale"] != self._params["defaultlocale"] and name in localedata: |
+ locale = self._params["locale"] |
+ if locale == self._params["defaultlocale"]: |
+ result = default |
+ elif name in localedata: |
result = localedata[name].strip() |
else: |
result = default |
+ self.missing_translations += 1 |
+ self.total_translations += 1 |
# Insert fixed strings |
for i, fixed_string in enumerate(fixed_strings, 1): |
result = result.replace("{%d}" % i, fixed_string) |
# Insert attributes |
result = escape(result) |
def stringify_attribute((name, value)): |
@@ -215,17 +222,20 @@ class Converter: |
def resolve_includes(self, text): |
def resolve_include(match): |
global converters |
name = match.group(1) |
for format, converter_class in converters.iteritems(): |
if self._params["source"].has_include(name, format): |
self._params["includedata"] = self._params["source"].read_include(name, format) |
converter = converter_class(self._params, key="includedata") |
- return converter() |
+ result = converter() |
+ self.missing_translations += converter.missing_translations |
+ self.total_translations += converter.total_translations |
+ return result |
raise Exception("Failed to resolve include %s on page %s" % (name, self._params["page"])) |
return re.sub( |
r'%s\?\s*include\s+([^\s<>"]+)\s*\?%s' % ( |
self.include_start_regex, |
self.include_end_regex |
), |
resolve_include, |