diff --git a/sphinx/environment.py b/sphinx/environment.py index 2e70569bc..f0f51fdd8 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -262,6 +262,8 @@ class Locale(Transform): 'translated message', node) for old, new in zip(old_foot_refs, new_foot_refs): new['ids'] = old['ids'] + for id in new['ids']: + self.document.ids[id] = new self.document.autofootnote_refs.remove(old) self.document.note_autofootnote_ref(new) diff --git a/tests/test_intl.py b/tests/test_intl.py index 9336beade..0cb43202e 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -114,9 +114,10 @@ def test_i18n_footnote_break_refid(app): # expect no error by build -@with_intl_app(buildername='text', cleanenv=True) +@with_intl_app(buildername='text', warning=warnfile) def test_i18n_footnote_regression(app): """regression test for fix #955""" + app.builddir.rmtree(True) app.builder.build(['footnote']) result = (app.outdir / 'footnote.txt').text(encoding='utf-8') expect = (u"\nI18N WITH FOOTNOTE" @@ -127,6 +128,10 @@ def test_i18n_footnote_regression(app): u"\n[100] THIS IS A NUMBERED FOOTNOTE.\n") assert result == expect + warnings = warnfile.getvalue().replace(os.sep, '/') + warning_expr = u'.*/footnote.txt:\\d*: SEVERE: Duplicate ID: ".*".\n' + assert not re.search(warning_expr, warnings) + @with_intl_app(buildername='html', cleanenv=True) def test_i18n_footnote_backlink(app):