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: Remove misleading variable Created Aug. 23, 2015, 3:28 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..47c040c9a5878bbd3cc15f22653081efa1cc1a51 100644
--- a/cms/converters.py
+++ b/cms/converters.py
@@ -133,12 +133,24 @@ class Converter:
def re_escape(s):
return re.escape(escape(s))
+ locale = self._params["locale"]
+ is_default_locale = locale == self._params["defaultlocale"]
+
+ # Handle duplicated strings
+ if not default:
+ try:
+ default = self._params["localedata"][name]
Wladimir Palant 2015/08/24 11:07:17 This logic is wrong, the default value should neve
kzar 2015/08/24 14:29:45 Acknowledged.
+ except KeyError:
+ raise Exception("Text not yet defined for string %s on page %s" %
+ (name, self._params["page"]))
+ elif is_default_locale:
+ self._params["localedata"][name] = default
Wladimir Palant 2015/08/24 11:07:17 1) This should be using localedata parameter inste
kzar 2015/08/24 14:29:46 Done.
+
# Extract tag attributes from default string
default, saved_attributes, fixed_strings = self._attribute_parser.parse(default, self._params["page"])
# Get translation
- locale = self._params["locale"]
- if locale == self._params["defaultlocale"]:
+ if is_default_locale:
result = default
elif name in localedata:
result = localedata[name].strip()
@@ -147,11 +159,12 @@ class Converter:
self.missing_translations += 1
self.total_translations += 1
- # Perform callback with the string if required, e.g. for the translations script
- callback = self._params["localized_string_callback"]
- if callback:
- callback(page, locale, name, result, comment, fixed_strings)
-
+ if default:
Wladimir Palant 2015/08/24 11:07:17 Why add this check? The string is still there, reg
kzar 2015/08/24 14:29:45 Well as a consumer of this callback I would be sur
Wladimir Palant 2015/08/24 15:00:21 That's something one has to count on anyway.
+ # Perform callback with the string if required,
+ # e.g. for the translations script
+ callback = self._params["localized_string_callback"]
+ if callback:
+ callback(page, locale, name, result, comment, fixed_strings)
# Insert fixed strings
for i, fixed_string in enumerate(fixed_strings, 1):
@@ -189,19 +202,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