Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: cms/converters.py

Issue 29324503: Issue 2936 - Support syntax for duplicate translatable strings (Closed)
Patch Set: Store comment for previously seen strings Created Aug. 24, 2015, 3:11 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cms/converters.py
diff --git a/cms/converters.py b/cms/converters.py
index afa4ee4f31ef51cf1d39ffa7453154a5b51a2f9e..1db3925a97922ee5d1c496dfb7cbb8396274789d 100644
--- a/cms/converters.py
+++ b/cms/converters.py
@@ -117,6 +117,7 @@ class Converter:
self._params = params
self._key = key
self._attribute_parser = AttributeParser(self.whitelist)
+ self._seen_defaults = {}
# Read in any parameters specified at the beginning of the file
lines = params[key].splitlines(True)
@@ -133,6 +134,16 @@ class Converter:
def re_escape(s):
return re.escape(escape(s))
+ # Handle duplicated strings
+ if default:
+ self._seen_defaults[(page, name)] = (default, comment)
+ else:
+ try:
+ default, comment = self._seen_defaults[(page, name)]
+ except KeyError:
+ raise Exception("Text not yet defined for string %s on page %s" %
+ (name, page))
+
# Extract tag attributes from default string
default, saved_attributes, fixed_strings = self._attribute_parser.parse(default, self._params["page"])
@@ -189,19 +200,20 @@ class Converter:
def insert_localized_strings(self, text, escapes, to_html=lambda s: s):
def lookup_string(match):
name, comment, default = match.groups()
- default = to_html(default).strip()
-
+ if default:
+ default = to_html(default).strip()
return self.localize_string(self._params["page"], name, default,
comment, self._params["localedata"], escapes)
return re.sub(
r"{{\s*"
r"([\w\-]+)" # String ID
- r"(?:\[(.*?)\])?" # Optional comment
- r"\s+"
- r"((?:(?!{{).|" # Translatable text
- r"{{(?:(?!}}).)*}}" # Nested translation
- r")*?)"
+ r"(?:(?:\[(.*?)\])?" # Optional comment
+ r"\s+"
+ r"((?:(?!{{).|" # Translatable text
+ r"{{(?:(?!}}).)*}}" # Nested translation
+ r")*?)"
+ r")?"
r"}}",
lookup_string,
text,
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld