Skip to content

site: twenty new languages, a language menu, and guides on corrupt files and on CI - #159

Merged
donislawdev merged 8 commits into
mainfrom
site/languages-and-guides
Oct 1, 2026
Merged

donislawdev merged 8 commits into
mainfrom
site/languages-and-guides

Conversation

@donislawdev

Copy link
Copy Markdown
Owner

Summary

The website goes from two languages to twenty-two, and gets two guides that answer questions nothing on the site answered. The window and the command line are not part of this.

New languages: Simplified and Traditional Chinese, Japanese, German, French, Spanish, Brazilian Portuguese, Italian, Indonesian, Russian, Turkish, Czech, Vietnamese, Hindi, Korean, Arabic, Romanian, Dutch, Ukrainian and Thai. Every page exists in every language, so the sitemap went from 26 to 330 addresses (15 pages in 22 languages).

What changes

Languages and search signals

  • Every page carries lang, <meta http-equiv="content-language">, og:locale and og:locale:alternate, and the full set of hreflang alternates with x-default, all in the <head>. The sitemap is unchanged, with no xhtml:link.
  • Latin-script languages get addresses in the language (/de/dokumentation/). The others keep the English words under the language prefix (/ja/docs/).
  • A language is described by a BCP 47 code, an Open Graph locale, a native name, a lower case dir and an optional rtl. The render refuses a set of languages with a malformed or repeated value, instead of publishing a tag a search engine would quietly drop.
  • A language menu in the header, a <details> element with no script, listing each language by the name it calls itself.
  • Arabic is the first right to left language. The layout uses logical properties, dir="rtl" is set on the root, and commands and code stay left to right. Fonts are named per script, and letter spacing is off for Arabic, Hindi and Thai.

Two guides

  • How to make a corrupt file for testing: why a hand-corrupted file makes a poor test, what a damaged file is here, the table of damages, what the manifest says about one, a recipe mixing healthy and broken files, and a test that reads the manifest.
  • How to generate test files in a CI pipeline: why a fixture should not live in the repository, a recipe, a GitHub Actions workflow and a GitLab job, the exit codes a pipeline meets, and the PowerShell catch.
  • Both sit under the use cases page (a page may now name its parent in site.json, which keeps it out of the header and gives it the breadcrumb the preset pages already had) and are linked from the use cases and the documentation.
  • The table of damages is made from the program: the registry reaches the site as Facts.Damages, every language needs a sentence for every damage, and a guard checks both directions.

A fix on the way

The FAQ said a deliberately broken file was not possible yet. tfg damage has been in the tool since 0.3.0. The answer is rewritten in all twenty-two languages.

Guards

  • The non-ASCII boundary now covers every language directory, and the list of languages in the header is the one thing a translation may put on an English page.
  • New: every page names its own language and carries the full set of alternates, the page an alternate points at points back, and no two pages of a language share a title or a description. They live in sitelanguages_test.go, which keeps site_test.go under the size band the test shape guard watches.
  • New: every language describes every damage the program has, and the English sentence is the one tfg damage prints.
  • The example words for the upload limit are required per language, since each language says accept and reject in its own words.
  • The French pages write the non-breaking space before a colon and inside guillemets as &nbsp;, because a tracked file may not carry an invisible character. The plain text strings in site.json use an ordinary space.
  • checkLanguages was split so the branching ceiling stays where it was.

How it was checked

  • CGO_ENABLED=0 go test -tags "$(cat .github/build-tags)" ./... passes except three tests: TestADirectoryWeCannotWriteInIsAPermissionProblem (the sandbox runs as root) and the two TestEveryFormatSurvivesItsReferenceTool tests (LibreOffice rejects the Office files there). They fail the same way on an untouched main in the same environment.
  • Everything the pages say about the tool was run: the damage commands, the recipe that mixes healthy and broken files, the Python test against the real manifest, and the CI install step against the v0.4.0 archive (checksum, extraction, tfg verify). The two YAML samples parse. The GitLab job and the PowerShell snippet were not run on a real runner.
  • Looked at in Chromium at desktop and phone width: German, Vietnamese, Japanese, Arabic, Hindi, Thai and the two new pages, with no horizontal scroll. The remaining languages were covered by the guards and the lint of the translation catalogues, not by eye.

Notes for the reviewer

  • The translations were produced with an AI assistant and have not been read by native speakers. The structure is identical to the English in every language and the tag, template and link shapes are checked mechanically, but the wording needs a native read before it is relied on, most of all in Thai, Hindi, Arabic and Vietnamese.
  • Titles and descriptions are translations rather than wording chosen for what people search for in each market. That is the part most worth a native SEO pass.
  • Google's own documentation was not reachable from the environment this was written in, so the points about hreflang and structured data rest on secondary sources. FAQ and HowTo rich results are reported as no longer shown, so the new pages carry no such markup. The existing FAQ markup is harmless and left as is.
  • The window translations are done elsewhere. TestThePresetsSayInTheWindowWhatTheySayOnTheSite compares a preset's wording on the site with the window's, word for word, whenever the language tags match. A window translation into one of these languages has to use the same sentences as the site, or that guard turns red.
  • The sitemap still has no lastmod. The generator has no honest date to put there.

🤖 Generated with Claude Code

https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t


Generated by Claude Code

claude added 8 commits October 1, 2026 08:38
…or more languages

The site had two languages and the header held one pill per other language,
which does not survive twenty. The switcher is now a details element with a
list of links, no script, and the links stay in the page for a crawler.

A language carries a locale beside its tag. og:locale was written from the
tag, so it said "pl" where Open Graph defines "pl_PL"; the tag is still what
lang, hreflang and the content directory use, and the locale is what a shared
link says. A language can say it reads right to left, which puts dir="rtl" on
its pages, and the stylesheet moves to logical properties so the same rules
serve both directions. Code stays left to right and isolated inside an RTL
page. Tracking is switched off for Arabic, Hindi and Thai, where space between
letters breaks the word. Each non-Latin script gets a stack of system faces
first - no font is loaded, the promise on the page is unchanged.

Every page also carries a content-language meta, which Bing reads in place of
hreflang. The sitemap is as it was, and so is the decision of 2026-08-27 to
keep the alternates in the head only.

The render now refuses languages that would put a wrong value on a page: a
tag that is not BCP 47, a locale without a region, a prefix or a page address
that cannot be part of one, two languages or two pages sharing one, and more
or fewer than one language at the root.

Guards: the boundary that kept characters above ASCII on the Polish pages is
read from the language files, so it follows every translation. A new guard
holds every page to its own lang, dir and og:locale, to the full set of
hreflang alternates with x-default, to alternates that point back, and to a
title and description of its own. The first-page limit example is asked of
every translation and a language with no entry for its words fails.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t
…abels

German is the first of nineteen languages added to the site. Its text was
written as a catalogue of the English strings and built into the same files
the other languages have, so the structure, the links and every code sample
are the English ones and cannot drift.

The header keeps the language menu at the end of the row and lets the links
wrap inside their own space, instead of pushing the menu to a second line
when the labels of a language are long. On a narrow screen it scrolls away
rather than taking a third of the phone.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t
Four more translations, written as catalogues of the English strings and built
into the same files every language has. Each carries its own slugs in ASCII
(/fr/prereglages/, /es/documentacion/, /pt-br/casos-de-uso/, /it/preset/),
its own title and description for every page, and the English code samples and
links unchanged. French gets the spacing its typography asks for before a
colon, a question mark and an exclamation mark, added at build time and kept
out of code.

The boundary that keeps characters above ASCII off the English pages now lets
the list of languages in the header through, and only that. A reader on an
English page has to be shown the way to Español and Türkçe in the names those
languages use, and a guard that forbade it would have made the menu say
"Spanish". The list is cut out of a page before it is read, so a language name
anywhere else in English text is still a leak.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t
Six more translations in the Latin scripts, each with page addresses in its own
language written in plain ASCII (/nl/documentatie/, /ro/presetari/,
/cs/predvolby/, /tr/dokumantasyon/, /vi/tai-lieu/ and so on), its own title and
description for every page, and the English code samples and links unchanged.

Romanian is written with the comma-below letters and Turkish keeps its dotted
and dotless i. Every title and description was held to the length the English
and Polish pages already keep, so a search engine does not cut them.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t
Six translations in non-Latin scripts. Their pages sit under the English
addresses with the language as a prefix (/ru/docs/, /zh-hans/formats/,
/ja/faq/), so no address is percent-encoded and every link in the sitemap reads
the same in a terminal, a log and a message.

Simplified Chinese is served under zh-hans with the tag zh-Hans and Open Graph
locale zh_CN, Traditional Chinese under zh-hant with zh-Hant and zh_TW, and the
two are written separately in the vocabulary each audience uses rather than
converted from one another. Titles and descriptions were measured by width,
counting a wide character as two, against the lengths the English and Polish
pages keep.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t
The last three languages of the list. Arabic is the first right to left
page set: dir=rtl on the root element, the layout mirrored by logical
properties, and every command and code block kept left to right.

The two guards this change added to site_test.go moved into
sitelanguages_test.go, which keeps site_test.go under the crowding band
the test-shape guard watches.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t
…n the changelog

The French pages carried the non-breaking space before a colon and inside
guillemets as the character itself, which the guard against invisible
characters refuses in a tracked file. In the page fragments it is now the
entity, and the plain-text strings of site.json use an ordinary space.

checkLanguages nested three deep and tipped the branching ceiling by one,
so the claim on a unique value moved into its own method.

Japanese pages break lines between phrases and keep small kana off the
start of a line. The changelog says the website is available in twenty-two
languages.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t
…AQ answer that was out of date

Two pages that answer questions people search for and that nothing on the
site answered.

How to make a corrupt file for testing: why a file corrupted by hand is a poor
test, what a damaged file is here, the table of damages, what the manifest
says about one, a recipe that mixes healthy and broken files, and a test that
reads the manifest. The table is made from the program. The registry now
reaches the site as Facts.Damages, every language has a sentence for every
damage, and a guard asks for both directions, so a second damage cannot be
added without the page and its translations following.

How to generate test files in a CI pipeline: why a fixture should not live in
the repository, a recipe, a GitHub Actions workflow and a GitLab job whose
install step was run against the v0.4.0 archive, the exit codes a pipeline
meets, and the PowerShell catch.

Both sit under the use cases page. A page may now name its parent in
site.json, which keeps it out of the header and gives it the breadcrumb that
the preset pages already had. The two are linked from the use cases and the
documentation.

The FAQ said a deliberately broken file was not possible yet. tfg damage has
been in the tool since 0.3.0. The answer is rewritten in all twenty-two
languages.

Inline code inside a note may now break, because a whole command in a
sentence is wider than a phone and pushed the page sideways.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5uostnHRaiLNGqbJfa1t
@coderabbitai

coderabbitai Bot commented Oct 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 241 files, which is 141 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 0c83d43b-0abf-4bc0-8440-fd55090274a1

📥 Commits

Reviewing files that changed from the base of the PR and between 3174e9d and 2c6c25b.

⛔ Files ignored due to path filters (333)
  • web/public/404.html is excluded by !**/web/public/**
  • web/public/ar/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/ar/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/ar/docs/index.html is excluded by !**/web/public/**
  • web/public/ar/faq/index.html is excluded by !**/web/public/**
  • web/public/ar/formats/index.html is excluded by !**/web/public/**
  • web/public/ar/index.html is excluded by !**/web/public/**
  • web/public/ar/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/ar/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/ar/presets/index.html is excluded by !**/web/public/**
  • web/public/ar/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/ar/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/ar/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/ar/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/ar/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/ar/use-cases/index.html is excluded by !**/web/public/**
  • web/public/assets/site.css is excluded by !**/web/public/**
  • web/public/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/cs/dokumentace/index.html is excluded by !**/web/public/**
  • web/public/cs/faq/index.html is excluded by !**/web/public/**
  • web/public/cs/formaty/index.html is excluded by !**/web/public/**
  • web/public/cs/index.html is excluded by !**/web/public/**
  • web/public/cs/poskozene-testovaci-soubory/index.html is excluded by !**/web/public/**
  • web/public/cs/predvolby/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/cs/predvolby/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/cs/predvolby/index.html is excluded by !**/web/public/**
  • web/public/cs/predvolby/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/cs/predvolby/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/cs/predvolby/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/cs/predvolby/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/cs/pripady-pouziti/index.html is excluded by !**/web/public/**
  • web/public/cs/testovaci-soubory-v-ci/index.html is excluded by !**/web/public/**
  • web/public/cs/vytvoreni-souboru-presne-velikosti/index.html is excluded by !**/web/public/**
  • web/public/de/anwendungsfaelle/index.html is excluded by !**/web/public/**
  • web/public/de/beschaedigte-testdateien/index.html is excluded by !**/web/public/**
  • web/public/de/datei-bestimmter-groesse-erstellen/index.html is excluded by !**/web/public/**
  • web/public/de/dokumentation/index.html is excluded by !**/web/public/**
  • web/public/de/faq/index.html is excluded by !**/web/public/**
  • web/public/de/formate/index.html is excluded by !**/web/public/**
  • web/public/de/index.html is excluded by !**/web/public/**
  • web/public/de/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/de/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/de/presets/index.html is excluded by !**/web/public/**
  • web/public/de/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/de/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/de/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/de/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/de/testdateien-in-ci/index.html is excluded by !**/web/public/**
  • web/public/docs/index.html is excluded by !**/web/public/**
  • web/public/es/archivos-de-prueba-corruptos/index.html is excluded by !**/web/public/**
  • web/public/es/archivos-de-prueba-en-ci/index.html is excluded by !**/web/public/**
  • web/public/es/casos-de-uso/index.html is excluded by !**/web/public/**
  • web/public/es/crear-archivo-de-tamano-exacto/index.html is excluded by !**/web/public/**
  • web/public/es/documentacion/index.html is excluded by !**/web/public/**
  • web/public/es/formatos/index.html is excluded by !**/web/public/**
  • web/public/es/index.html is excluded by !**/web/public/**
  • web/public/es/preguntas-frecuentes/index.html is excluded by !**/web/public/**
  • web/public/es/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/es/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/es/presets/index.html is excluded by !**/web/public/**
  • web/public/es/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/es/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/es/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/es/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/faq/index.html is excluded by !**/web/public/**
  • web/public/formats/index.html is excluded by !**/web/public/**
  • web/public/fr/cas-d-usage/index.html is excluded by !**/web/public/**
  • web/public/fr/creer-fichier-taille-exacte/index.html is excluded by !**/web/public/**
  • web/public/fr/documentation/index.html is excluded by !**/web/public/**
  • web/public/fr/faq/index.html is excluded by !**/web/public/**
  • web/public/fr/fichiers-de-test-corrompus/index.html is excluded by !**/web/public/**
  • web/public/fr/fichiers-de-test-en-ci/index.html is excluded by !**/web/public/**
  • web/public/fr/formats/index.html is excluded by !**/web/public/**
  • web/public/fr/index.html is excluded by !**/web/public/**
  • web/public/fr/prereglages/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/fr/prereglages/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/fr/prereglages/index.html is excluded by !**/web/public/**
  • web/public/fr/prereglages/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/fr/prereglages/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/fr/prereglages/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/fr/prereglages/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/hi/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/hi/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/hi/docs/index.html is excluded by !**/web/public/**
  • web/public/hi/faq/index.html is excluded by !**/web/public/**
  • web/public/hi/formats/index.html is excluded by !**/web/public/**
  • web/public/hi/index.html is excluded by !**/web/public/**
  • web/public/hi/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/hi/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/hi/presets/index.html is excluded by !**/web/public/**
  • web/public/hi/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/hi/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/hi/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/hi/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/hi/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/hi/use-cases/index.html is excluded by !**/web/public/**
  • web/public/id/dokumentasi/index.html is excluded by !**/web/public/**
  • web/public/id/faq/index.html is excluded by !**/web/public/**
  • web/public/id/file-uji-di-ci/index.html is excluded by !**/web/public/**
  • web/public/id/file-uji-rusak/index.html is excluded by !**/web/public/**
  • web/public/id/format/index.html is excluded by !**/web/public/**
  • web/public/id/index.html is excluded by !**/web/public/**
  • web/public/id/kasus-penggunaan/index.html is excluded by !**/web/public/**
  • web/public/id/membuat-file-ukuran-tepat/index.html is excluded by !**/web/public/**
  • web/public/id/preset/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/id/preset/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/id/preset/index.html is excluded by !**/web/public/**
  • web/public/id/preset/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/id/preset/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/id/preset/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/id/preset/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/index.html is excluded by !**/web/public/**
  • web/public/it/casi-d-uso/index.html is excluded by !**/web/public/**
  • web/public/it/creare-file-di-dimensione-esatta/index.html is excluded by !**/web/public/**
  • web/public/it/documentazione/index.html is excluded by !**/web/public/**
  • web/public/it/domande-frequenti/index.html is excluded by !**/web/public/**
  • web/public/it/file-di-test-corrotti/index.html is excluded by !**/web/public/**
  • web/public/it/file-di-test-in-ci/index.html is excluded by !**/web/public/**
  • web/public/it/formati/index.html is excluded by !**/web/public/**
  • web/public/it/index.html is excluded by !**/web/public/**
  • web/public/it/preset/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/it/preset/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/it/preset/index.html is excluded by !**/web/public/**
  • web/public/it/preset/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/it/preset/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/it/preset/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/it/preset/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/ja/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/ja/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/ja/docs/index.html is excluded by !**/web/public/**
  • web/public/ja/faq/index.html is excluded by !**/web/public/**
  • web/public/ja/formats/index.html is excluded by !**/web/public/**
  • web/public/ja/index.html is excluded by !**/web/public/**
  • web/public/ja/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/ja/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/ja/presets/index.html is excluded by !**/web/public/**
  • web/public/ja/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/ja/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/ja/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/ja/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/ja/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/ja/use-cases/index.html is excluded by !**/web/public/**
  • web/public/ko/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/ko/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/ko/docs/index.html is excluded by !**/web/public/**
  • web/public/ko/faq/index.html is excluded by !**/web/public/**
  • web/public/ko/formats/index.html is excluded by !**/web/public/**
  • web/public/ko/index.html is excluded by !**/web/public/**
  • web/public/ko/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/ko/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/ko/presets/index.html is excluded by !**/web/public/**
  • web/public/ko/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/ko/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/ko/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/ko/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/ko/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/ko/use-cases/index.html is excluded by !**/web/public/**
  • web/public/nl/beschadigde-testbestanden/index.html is excluded by !**/web/public/**
  • web/public/nl/bestand-met-exacte-grootte-maken/index.html is excluded by !**/web/public/**
  • web/public/nl/documentatie/index.html is excluded by !**/web/public/**
  • web/public/nl/formaten/index.html is excluded by !**/web/public/**
  • web/public/nl/index.html is excluded by !**/web/public/**
  • web/public/nl/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/nl/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/nl/presets/index.html is excluded by !**/web/public/**
  • web/public/nl/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/nl/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/nl/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/nl/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/nl/testbestanden-in-ci/index.html is excluded by !**/web/public/**
  • web/public/nl/toepassingen/index.html is excluded by !**/web/public/**
  • web/public/nl/veelgestelde-vragen/index.html is excluded by !**/web/public/**
  • web/public/pl/dokumentacja/index.html is excluded by !**/web/public/**
  • web/public/pl/faq/index.html is excluded by !**/web/public/**
  • web/public/pl/formaty/index.html is excluded by !**/web/public/**
  • web/public/pl/index.html is excluded by !**/web/public/**
  • web/public/pl/plik-o-zadanym-rozmiarze/index.html is excluded by !**/web/public/**
  • web/public/pl/pliki-testowe-w-ci/index.html is excluded by !**/web/public/**
  • web/public/pl/presety/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/pl/presety/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/pl/presety/index.html is excluded by !**/web/public/**
  • web/public/pl/presety/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/pl/presety/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/pl/presety/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/pl/presety/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/pl/uszkodzone-pliki-testowe/index.html is excluded by !**/web/public/**
  • web/public/pl/zastosowania/index.html is excluded by !**/web/public/**
  • web/public/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/presets/index.html is excluded by !**/web/public/**
  • web/public/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/pt-br/arquivos-de-teste-corrompidos/index.html is excluded by !**/web/public/**
  • web/public/pt-br/arquivos-de-teste-no-ci/index.html is excluded by !**/web/public/**
  • web/public/pt-br/casos-de-uso/index.html is excluded by !**/web/public/**
  • web/public/pt-br/criar-arquivo-de-tamanho-exato/index.html is excluded by !**/web/public/**
  • web/public/pt-br/documentacao/index.html is excluded by !**/web/public/**
  • web/public/pt-br/formatos/index.html is excluded by !**/web/public/**
  • web/public/pt-br/index.html is excluded by !**/web/public/**
  • web/public/pt-br/perguntas-frequentes/index.html is excluded by !**/web/public/**
  • web/public/pt-br/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/pt-br/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/pt-br/presets/index.html is excluded by !**/web/public/**
  • web/public/pt-br/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/pt-br/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/pt-br/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/pt-br/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/ro/cazuri-de-utilizare/index.html is excluded by !**/web/public/**
  • web/public/ro/creare-fisier-de-dimensiune-exacta/index.html is excluded by !**/web/public/**
  • web/public/ro/documentatie/index.html is excluded by !**/web/public/**
  • web/public/ro/fisiere-de-test-corupte/index.html is excluded by !**/web/public/**
  • web/public/ro/fisiere-de-test-in-ci/index.html is excluded by !**/web/public/**
  • web/public/ro/formate/index.html is excluded by !**/web/public/**
  • web/public/ro/index.html is excluded by !**/web/public/**
  • web/public/ro/intrebari-frecvente/index.html is excluded by !**/web/public/**
  • web/public/ro/presetari/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/ro/presetari/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/ro/presetari/index.html is excluded by !**/web/public/**
  • web/public/ro/presetari/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/ro/presetari/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/ro/presetari/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/ro/presetari/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/ru/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/ru/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/ru/docs/index.html is excluded by !**/web/public/**
  • web/public/ru/faq/index.html is excluded by !**/web/public/**
  • web/public/ru/formats/index.html is excluded by !**/web/public/**
  • web/public/ru/index.html is excluded by !**/web/public/**
  • web/public/ru/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/ru/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/ru/presets/index.html is excluded by !**/web/public/**
  • web/public/ru/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/ru/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/ru/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/ru/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/ru/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/ru/use-cases/index.html is excluded by !**/web/public/**
  • web/public/sitemap.xml is excluded by !**/web/public/**
  • web/public/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/th/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/th/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/th/docs/index.html is excluded by !**/web/public/**
  • web/public/th/faq/index.html is excluded by !**/web/public/**
  • web/public/th/formats/index.html is excluded by !**/web/public/**
  • web/public/th/index.html is excluded by !**/web/public/**
  • web/public/th/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/th/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/th/presets/index.html is excluded by !**/web/public/**
  • web/public/th/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/th/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/th/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/th/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/th/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/th/use-cases/index.html is excluded by !**/web/public/**
  • web/public/tr/bicimler/index.html is excluded by !**/web/public/**
  • web/public/tr/bozuk-test-dosyalari/index.html is excluded by !**/web/public/**
  • web/public/tr/ci-icinde-test-dosyalari/index.html is excluded by !**/web/public/**
  • web/public/tr/dokumantasyon/index.html is excluded by !**/web/public/**
  • web/public/tr/hazir-ayarlar/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/tr/hazir-ayarlar/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/tr/hazir-ayarlar/index.html is excluded by !**/web/public/**
  • web/public/tr/hazir-ayarlar/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/tr/hazir-ayarlar/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/tr/hazir-ayarlar/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/tr/hazir-ayarlar/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/tr/index.html is excluded by !**/web/public/**
  • web/public/tr/kullanim-senaryolari/index.html is excluded by !**/web/public/**
  • web/public/tr/sss/index.html is excluded by !**/web/public/**
  • web/public/tr/tam-boyutta-dosya-olusturma/index.html is excluded by !**/web/public/**
  • web/public/uk/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/uk/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/uk/docs/index.html is excluded by !**/web/public/**
  • web/public/uk/faq/index.html is excluded by !**/web/public/**
  • web/public/uk/formats/index.html is excluded by !**/web/public/**
  • web/public/uk/index.html is excluded by !**/web/public/**
  • web/public/uk/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/uk/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/uk/presets/index.html is excluded by !**/web/public/**
  • web/public/uk/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/uk/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/uk/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/uk/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/uk/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/uk/use-cases/index.html is excluded by !**/web/public/**
  • web/public/use-cases/index.html is excluded by !**/web/public/**
  • web/public/vi/dinh-dang/index.html is excluded by !**/web/public/**
  • web/public/vi/faq/index.html is excluded by !**/web/public/**
  • web/public/vi/index.html is excluded by !**/web/public/**
  • web/public/vi/preset/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/vi/preset/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/vi/preset/index.html is excluded by !**/web/public/**
  • web/public/vi/preset/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/vi/preset/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/vi/preset/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/vi/preset/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/vi/tai-lieu/index.html is excluded by !**/web/public/**
  • web/public/vi/tao-tep-kich-thuoc-chinh-xac/index.html is excluded by !**/web/public/**
  • web/public/vi/tep-kiem-thu-bi-hong/index.html is excluded by !**/web/public/**
  • web/public/vi/tep-kiem-thu-trong-ci/index.html is excluded by !**/web/public/**
  • web/public/vi/truong-hop-su-dung/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/docs/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/faq/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/formats/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/presets/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/zh-hans/use-cases/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/corrupt-test-files/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/create-file-exact-size/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/docs/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/faq/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/formats/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/presets/empty-and-minimal/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/presets/filename-handling/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/presets/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/presets/size-boundaries/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/presets/tabular-import/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/presets/text-encoding/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/presets/upload-validation/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/test-files-in-ci/index.html is excluded by !**/web/public/**
  • web/public/zh-hant/use-cases/index.html is excluded by !**/web/public/**
📒 Files selected for processing (241)
  • CHANGELOG.md
  • internal/guard/edgeexample_test.go
  • internal/guard/site_test.go
  • internal/guard/sitelanguages_test.go
  • internal/site/languages.go
  • internal/site/render.go
  • internal/site/site.go
  • internal/site/view.go
  • web/assets/site.css
  • web/content/ar/ci.html
  • web/content/ar/damage.html
  • web/content/ar/docs.html
  • web/content/ar/exact-size.html
  • web/content/ar/faq.html
  • web/content/ar/formats.html
  • web/content/ar/index.html
  • web/content/ar/preset.html
  • web/content/ar/presets.html
  • web/content/ar/site.json
  • web/content/ar/use-cases.html
  • web/content/cs/ci.html
  • web/content/cs/damage.html
  • web/content/cs/docs.html
  • web/content/cs/exact-size.html
  • web/content/cs/faq.html
  • web/content/cs/formats.html
  • web/content/cs/index.html
  • web/content/cs/preset.html
  • web/content/cs/presets.html
  • web/content/cs/site.json
  • web/content/cs/use-cases.html
  • web/content/de/ci.html
  • web/content/de/damage.html
  • web/content/de/docs.html
  • web/content/de/exact-size.html
  • web/content/de/faq.html
  • web/content/de/formats.html
  • web/content/de/index.html
  • web/content/de/preset.html
  • web/content/de/presets.html
  • web/content/de/site.json
  • web/content/de/use-cases.html
  • web/content/en/ci.html
  • web/content/en/damage.html
  • web/content/en/docs.html
  • web/content/en/site.json
  • web/content/en/use-cases.html
  • web/content/es/ci.html
  • web/content/es/damage.html
  • web/content/es/docs.html
  • web/content/es/exact-size.html
  • web/content/es/faq.html
  • web/content/es/formats.html
  • web/content/es/index.html
  • web/content/es/preset.html
  • web/content/es/presets.html
  • web/content/es/site.json
  • web/content/es/use-cases.html
  • web/content/fr/ci.html
  • web/content/fr/damage.html
  • web/content/fr/docs.html
  • web/content/fr/exact-size.html
  • web/content/fr/faq.html
  • web/content/fr/formats.html
  • web/content/fr/index.html
  • web/content/fr/preset.html
  • web/content/fr/presets.html
  • web/content/fr/site.json
  • web/content/fr/use-cases.html
  • web/content/hi/ci.html
  • web/content/hi/damage.html
  • web/content/hi/docs.html
  • web/content/hi/exact-size.html
  • web/content/hi/faq.html
  • web/content/hi/formats.html
  • web/content/hi/index.html
  • web/content/hi/preset.html
  • web/content/hi/presets.html
  • web/content/hi/site.json
  • web/content/hi/use-cases.html
  • web/content/id/ci.html
  • web/content/id/damage.html
  • web/content/id/docs.html
  • web/content/id/exact-size.html
  • web/content/id/faq.html
  • web/content/id/formats.html
  • web/content/id/index.html
  • web/content/id/preset.html
  • web/content/id/presets.html
  • web/content/id/site.json
  • web/content/id/use-cases.html
  • web/content/it/ci.html
  • web/content/it/damage.html
  • web/content/it/docs.html
  • web/content/it/exact-size.html
  • web/content/it/faq.html
  • web/content/it/formats.html
  • web/content/it/index.html
  • web/content/it/preset.html
  • web/content/it/presets.html
  • web/content/it/site.json
  • web/content/it/use-cases.html
  • web/content/ja/ci.html
  • web/content/ja/damage.html
  • web/content/ja/docs.html
  • web/content/ja/exact-size.html
  • web/content/ja/faq.html
  • web/content/ja/formats.html
  • web/content/ja/index.html
  • web/content/ja/preset.html
  • web/content/ja/presets.html
  • web/content/ja/site.json
  • web/content/ja/use-cases.html
  • web/content/ko/ci.html
  • web/content/ko/damage.html
  • web/content/ko/docs.html
  • web/content/ko/exact-size.html
  • web/content/ko/faq.html
  • web/content/ko/formats.html
  • web/content/ko/index.html
  • web/content/ko/preset.html
  • web/content/ko/presets.html
  • web/content/ko/site.json
  • web/content/ko/use-cases.html
  • web/content/nl/ci.html
  • web/content/nl/damage.html
  • web/content/nl/docs.html
  • web/content/nl/exact-size.html
  • web/content/nl/faq.html
  • web/content/nl/formats.html
  • web/content/nl/index.html
  • web/content/nl/preset.html
  • web/content/nl/presets.html
  • web/content/nl/site.json
  • web/content/nl/use-cases.html
  • web/content/pl/ci.html
  • web/content/pl/damage.html
  • web/content/pl/docs.html
  • web/content/pl/site.json
  • web/content/pl/use-cases.html
  • web/content/pt-BR/ci.html
  • web/content/pt-BR/damage.html
  • web/content/pt-BR/docs.html
  • web/content/pt-BR/exact-size.html
  • web/content/pt-BR/faq.html
  • web/content/pt-BR/formats.html
  • web/content/pt-BR/index.html
  • web/content/pt-BR/preset.html
  • web/content/pt-BR/presets.html
  • web/content/pt-BR/site.json
  • web/content/pt-BR/use-cases.html
  • web/content/ro/ci.html
  • web/content/ro/damage.html
  • web/content/ro/docs.html
  • web/content/ro/exact-size.html
  • web/content/ro/faq.html
  • web/content/ro/formats.html
  • web/content/ro/index.html
  • web/content/ro/preset.html
  • web/content/ro/presets.html
  • web/content/ro/site.json
  • web/content/ro/use-cases.html
  • web/content/ru/ci.html
  • web/content/ru/damage.html
  • web/content/ru/docs.html
  • web/content/ru/exact-size.html
  • web/content/ru/faq.html
  • web/content/ru/formats.html
  • web/content/ru/index.html
  • web/content/ru/preset.html
  • web/content/ru/presets.html
  • web/content/ru/site.json
  • web/content/ru/use-cases.html
  • web/content/th/ci.html
  • web/content/th/damage.html
  • web/content/th/docs.html
  • web/content/th/exact-size.html
  • web/content/th/faq.html
  • web/content/th/formats.html
  • web/content/th/index.html
  • web/content/th/preset.html
  • web/content/th/presets.html
  • web/content/th/site.json
  • web/content/th/use-cases.html
  • web/content/tr/ci.html
  • web/content/tr/damage.html
  • web/content/tr/docs.html
  • web/content/tr/exact-size.html
  • web/content/tr/faq.html
  • web/content/tr/formats.html
  • web/content/tr/index.html
  • web/content/tr/preset.html
  • web/content/tr/presets.html
  • web/content/tr/site.json
  • web/content/tr/use-cases.html
  • web/content/uk/ci.html
  • web/content/uk/damage.html
  • web/content/uk/docs.html
  • web/content/uk/exact-size.html
  • web/content/uk/faq.html
  • web/content/uk/formats.html
  • web/content/uk/index.html
  • web/content/uk/preset.html
  • web/content/uk/presets.html
  • web/content/uk/site.json
  • web/content/uk/use-cases.html
  • web/content/vi/ci.html
  • web/content/vi/damage.html
  • web/content/vi/docs.html
  • web/content/vi/exact-size.html
  • web/content/vi/faq.html
  • web/content/vi/formats.html
  • web/content/vi/index.html
  • web/content/vi/preset.html
  • web/content/vi/presets.html
  • web/content/vi/site.json
  • web/content/vi/use-cases.html
  • web/content/zh-Hans/ci.html
  • web/content/zh-Hans/damage.html
  • web/content/zh-Hans/docs.html
  • web/content/zh-Hans/exact-size.html
  • web/content/zh-Hans/faq.html
  • web/content/zh-Hans/formats.html
  • web/content/zh-Hans/index.html
  • web/content/zh-Hans/preset.html
  • web/content/zh-Hans/presets.html
  • web/content/zh-Hans/site.json
  • web/content/zh-Hans/use-cases.html
  • web/content/zh-Hant/ci.html
  • web/content/zh-Hant/damage.html
  • web/content/zh-Hant/docs.html
  • web/content/zh-Hant/exact-size.html
  • web/content/zh-Hant/faq.html
  • web/content/zh-Hant/formats.html
  • web/content/zh-Hant/index.html
  • web/content/zh-Hant/preset.html
  • web/content/zh-Hant/presets.html
  • web/content/zh-Hant/site.json
  • web/content/zh-Hant/use-cases.html
  • web/templates/layout.html
  • web/templates/partials.html

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@donislawdev
donislawdev merged commit f2acc41 into main Oct 1, 2026
22 checks passed
@donislawdev
donislawdev deleted the site/languages-and-guides branch October 1, 2026 11:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants