quarto-dev / quarto-dev/quarto-cli

Per-language `_language-*.yml` files have drifted from `_language.yml`

Open
#14,822 1 comment 0 reactions 1 assignee View on GitHub

@cderv is already working on this.

Since Aug 28, 2026.

bug localization
Dominant language
JavaScript
Stars
6k
Forks
458
Avg merge
1d 9h
Merged PRs (30d)
41

Description

Keys added to src/resources/language/_language.yml are not propagated to the per-language translation files, and nothing in the test suite or CI catches it. Auditing the 30 base language files against _language.yml at b69ed2dde16d1b502dcdddace4eebae5038550e3:

  • tools-share and tools-download are missing from 25 of the 30. They were added in January 2024 for the book tools menu, so all those languages have been showing English "Download" and "Share" there since.
  • ko is also missing title-block-modified, added September 2022.
  • sr-Latn is also missing code-links-title, launch-binder-title, launch-dev-container-title, listing-page-field-wordcount and listing-page-words, all added in 2023.
  • lt still carries search, which was renamed to search-label in May 2023. The Lithuanian search label falls back to English.
  • sv still carries callout-danger-title, which was renamed to callout-caution-title in February 2023. The Swedish caution callout title falls back to English.

Only bg, es, eu, is and sl are complete.

The region variants de-CH, fr-CA, pt-BR and zh-TW are not affected. They are read as overlays on top of their base language, so being partial is the point:

https://github.com/quarto-dev/quarto-cli/blob/b69ed2dde16d1b502dcdddace4eebae5038550e3/src/core/language.ts#L77-L82

A check would stop this recurring

We could add a test that reads _language.yml and every _language-*.yml and fails when a base language file misses a key, or when any file carries a key that no longer exists in _language.yml. The region variants would be exempt from the missing-key half but not from the unknown-key half, which is what would have caught lt and sv.

Without something like that the drift restarts the next time a key is added. This is separate from #14772, which is about custom keys supplied by users.

Worth saying that a check only surfaces the gaps. Filling them is translation work for people who speak the language, not something to bulk fill with machine output.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.