| OLD | NEW |
| 1 # This file is part of the Adblock Plus web scripts, | 1 # This file is part of the Adblock Plus web scripts, |
| 2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH |
| 3 # | 3 # |
| 4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify |
| 5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as |
| 6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. |
| 7 # | 7 # |
| 8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, |
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 # Handle duplicated strings | 143 # Handle duplicated strings |
| 144 if default: | 144 if default: |
| 145 self._seen_defaults[(page, name)] = (default, comment) | 145 self._seen_defaults[(page, name)] = (default, comment) |
| 146 else: | 146 else: |
| 147 try: | 147 try: |
| 148 default, comment = self._seen_defaults[(page, name)] | 148 default, comment = self._seen_defaults[(page, name)] |
| 149 except KeyError: | 149 except KeyError: |
| 150 raise Exception('Text not yet defined for string {} on page' | 150 raise Exception('Text not yet defined for string {} on page' |
| 151 ' {}'.format(name, page)) | 151 ' {}'.format(name, page)) |
| 152 | 152 |
| 153 full_default = default |
| 153 # Extract tag attributes from default string | 154 # Extract tag attributes from default string |
| 154 default, saved_attributes, fixed_strings = ( | 155 default, saved_attributes, fixed_strings = ( |
| 155 self._attribute_parser.parse(default, self._params['page'])) | 156 self._attribute_parser.parse(default, self._params['page'])) |
| 156 | 157 |
| 157 # Get translation | 158 # Get translation |
| 158 locale = self._params['locale'] | 159 locale = self._params['locale'] |
| 159 if locale == self._params['defaultlocale']: | 160 if locale == self._params['defaultlocale']: |
| 160 result = default | 161 result = default |
| 161 elif name in localedata: | 162 elif name in localedata: |
| 162 result = localedata[name].strip() | 163 result = localedata[name].strip() |
| 164 # If the string is present in default locale, but not in the |
| 165 # current one, we will get the value from default locale here. |
| 166 # If it happens to contain attributes on any tags, those need |
| 167 # to be stripped, otherwise the attribute substitution below won't |
| 168 # work. Luckily, we already have the default translation string |
| 169 # with attributes stripped -- it's the value of `default`. |
| 170 if result == full_default.strip(): |
| 171 result = default |
| 163 else: | 172 else: |
| 164 result = default | 173 result = default |
| 165 self.missing_translations += 1 | 174 self.missing_translations += 1 |
| 166 self.total_translations += 1 | 175 self.total_translations += 1 |
| 167 | 176 |
| 168 # Perform callback with the string if required, e.g. for the | 177 # Perform callback with the string if required, e.g. for the |
| 169 # translations script | 178 # translations script |
| 170 callback = self._params['localized_string_callback'] | 179 callback = self._params['localized_string_callback'] |
| 171 if callback: | 180 if callback: |
| 172 callback(page, locale, name, result, comment, fixed_strings) | 181 callback(page, locale, name, result, comment, fixed_strings) |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 stack[-1]['subitems'].append(item) | 532 stack[-1]['subitems'].append(item) |
| 524 stack.append(item) | 533 stack.append(item) |
| 525 return structured | 534 return structured |
| 526 | 535 |
| 527 | 536 |
| 528 converters = { | 537 converters = { |
| 529 'html': RawConverter, | 538 'html': RawConverter, |
| 530 'md': MarkdownConverter, | 539 'md': MarkdownConverter, |
| 531 'tmpl': TemplateConverter, | 540 'tmpl': TemplateConverter, |
| 532 } | 541 } |
| OLD | NEW |