| Index: cms/converters.py | 
| =================================================================== | 
| --- a/cms/converters.py | 
| +++ b/cms/converters.py | 
| @@ -376,16 +376,17 @@ | 
| filters = { | 
| 'translate': self.translate, | 
| 'linkify': self.linkify, | 
| 'toclist': self.toclist, | 
| } | 
|  | 
| globals = { | 
| 'get_string': self.get_string, | 
| +            'has_string': self.has_string, | 
| 'get_page_content': self.get_page_content, | 
| } | 
|  | 
| for dirname, dictionary in [('filters', filters), | 
| ('globals', globals)]: | 
| for filename in self._params['source'].list_files(dirname): | 
| root, ext = os.path.splitext(filename) | 
| if ext.lower() != '.py': | 
| @@ -402,16 +403,19 @@ | 
| ' in {}'.format(name, path)) | 
|  | 
| self._env = jinja2.Environment( | 
| loader=SourceTemplateLoader(self._params['source']), | 
| autoescape=True) | 
| self._env.filters.update(filters) | 
| self._env.globals.update(globals) | 
|  | 
| +    def _get_locale_data(self, page): | 
| +        return self._params['source'].read_locale(self._params['locale'], page) | 
| + | 
| def get_html(self, source, filename): | 
| env = self._env | 
| code = env.compile(source, None, filename) | 
| template = jinja2.Template.from_code(env, code, env.globals) | 
|  | 
| try: | 
| module = template.make_module(self._params) | 
| except Exception: | 
| @@ -430,23 +434,29 @@ | 
| self._params['page'], name, default, comment, | 
| self._params['localedata'], html_escapes | 
| )) | 
|  | 
| def get_string(self, name, page=None): | 
| if page is None: | 
| page = self._params['page'] | 
|  | 
| -        localedata = self._params['source'].read_locale(self._params['locale'], | 
| -                                                        page) | 
| +        localedata = self._get_locale_data(page) | 
| default = localedata[name] | 
| return jinja2.Markup(self.localize_string( | 
| page, name, default, '', localedata, html_escapes | 
| )) | 
|  | 
| +    def has_string(self, name, page=None): | 
| +        if page is None: | 
| +            page = self._params['page'] | 
| + | 
| +        localedata = self._get_locale_data(page) | 
| +        return name in localedata | 
| + | 
| def get_page_content(self, page, locale=None): | 
| from cms.utils import get_page_params | 
|  | 
| if locale is None: | 
| locale = self._params['locale'] | 
| return get_page_params(self._params['source'], locale, page) | 
|  | 
| def linkify(self, page, locale=None, **attrs): | 
|  |