| Index: cms/converters.py | 
| =================================================================== | 
| --- a/cms/converters.py | 
| +++ b/cms/converters.py | 
| @@ -304,19 +304,19 @@ | 
| # Links to an external resource | 
| return target | 
| return relpath(target, base_url.rsplit('/', 1)[0]) | 
| def process_link(match): | 
| pre, attr, url, post = match.groups() | 
| url = jinja2.Markup(url).unescape() | 
| - locale, new_url = ( | 
| - self._params['source'] | 
| - .resolve_link(url, self._params['locale'])) | 
| + locale, new_url = self._params['source'].resolve_link( | 
| + url, self._params['locale'], self._params['page'], | 
| + ) | 
| if new_url is not None: | 
| url = new_url | 
| if attr == 'href': | 
| post += ' hreflang="{}"'\ | 
| .format(jinja2.Markup.escape(locale)) | 
| if self._params['relative']: | 
| @@ -511,17 +511,18 @@ | 
| if locale is None: | 
| locale = self._params['locale'] | 
| return utils.get_page_params(self._params['source'], locale, page) | 
| def linkify(self, page, locale=None, **attrs): | 
| if locale is None: | 
| locale = self._params['locale'] | 
| - locale, url = self._params['source'].resolve_link(page, locale) | 
| + locale, url = self._params['source'].resolve_link(page, locale, | 
| + self._params['page']) | 
| return jinja2.Markup('<a{}>'.format(''.join( | 
| ' {}="{}"'.format(name, jinja2.escape(value)) for name, value in [ | 
| ('href', url), | 
| ('hreflang', locale), | 
| ] + attrs.items() | 
| ))) | 
| def get_pages_metadata(self, filters=None): | 
| @@ -558,17 +559,17 @@ | 
| """Return canonical URL for the page (without locale code)""" | 
| try: | 
| base_url = self._params['site_url'] | 
| except KeyError: | 
| raise Exception('You must configure `siteurl` to use' | 
| '`get_canonical_url()`') | 
| locale, page_url = self._params['source'].resolve_link( | 
| - page, self._params['locale'], | 
| + page, self._params['locale'], self._params['page'], | 
| ) | 
| # Remove the locale component that `resolve_link` adds at the | 
| # beginning. | 
| page_url = page_url[len(locale) + 1:] | 
| return urlparse.urljoin(base_url, page_url) | 
| def toclist(self, content): | 
| toc_re = r'<h(\d)\s[^<>]*\bid="([^<>"]+)"[^<>]*>(.*?)</h\1>' | 
| @@ -592,17 +593,18 @@ | 
| def page_has_locale(self, page, locale): | 
| return self._params['source'].has_locale(locale, page) | 
| def get_page_url(self, page, locale=None, redirect=False): | 
| if not locale: | 
| locale = self._params['locale'] | 
| if self.page_has_locale(page, locale) or redirect: | 
| - return self._params['source'].resolve_link(page, locale)[1] | 
| + return self._params['source'].resolve_link(page, locale, | 
| + self._params['page'])[1] | 
| raise Exception('{} does not exist in {}'.format(page, locale)) | 
| converters = { | 
| 'html': RawConverter, | 
| 'md': MarkdownConverter, | 
| 'tmpl': TemplateConverter, | 
| } |