Obsidian resolves [[coffee]] to the shortest matching path. In a bilingual vault that can be
the copy in the other language — a German page then links to en/notes/coffee although
de/notes/coffee exists.
In the vault that hardly shows. On the built site it throws the reader out of their language.
options:
rewriteCrossLanguageLinks: true
order: 65With that, such a link is rewritten at build time: to the version in the language of the linking page, if it exists. If it does not, the link stays as it was — a jump into the other language beats a jump into nothing.
Here
ordermattersThe rewriting recognises a link by the
data-slugthatcrawl-links(order 60) gave it while resolving it. It therefore has to happen aftercrawl-links— henceorder: 65, the higher number running later. With the plugin earlier there is nodata-slugto find, the rewriting comes to nothing and nobody notices: the links stay quietly wrong.
Folder and suffix conventions only
As with the redirects, this rests on computing the other language’s slug from one. Pages whose language sits only in the frontmatter are exempt.
Localized dates
options:
localizeDates: trueWithout this option every date follows the site-wide locale — on a German site the English pages
say 10. Sept. 2026.
With it, the script formats every <time datetime> element in the browser in the language of the
page, in the same format Quartz uses elsewhere.
Why this too happens only in the browser
The formatting needs the reader’s time zone and regional settings. At build time there is neither — what would appear is the date in the build machine’s time zone.