Findings · 2026-09-30 · By VSNARY | Emmanuel Orta · 0 views
CrawlCheck in German, French, Spanish and Portuguese
The conversion pages and every scan report are now served under /de/, /fr/, /es/ and /pt/: what is translated, what is deliberately English, how it works with one site, and how coverage is measured.
crawlcheck.io serves its home, pricing, how-it-works, tools and notice pages and every scan report in German, French, Spanish and Portuguese under /de/, /fr/, /es/ and /pt/. One set of templates is rendered in English and passed through a per-language dictionary keyed on text runs with numbers abstracted; SVG titles and finding rule lines have their own passes. Blog, guides, JSON and machine files stay English; finding codes and crawler names are never translated; there is no IP or browser-language redirect. Coverage is measured by a public route, /api/i18n/gaps, currently zero.
crawlcheck.io now serves its conversion pages and every scan report in German, French, Spanish and Portuguese, at /de/, /fr/, /es/ and /pt/. This note is what is translated, what deliberately is not, how the translation is produced without a second copy of the site, and how the coverage is measured so that the claim can be checked rather than believed.
What is translated #
The home page, pricing, how it works, the free tools page and the notice about the two unrelated sites with similar names, in all four languages, since 25 September. Since 26 September, every scan report: a report at /r/<id> is also available at /de/r/<id> and the other three prefixes, with translated section headings, finding titles, meanings and fix text, the rule and verify lines on every finding card, and the titles inside the SVG figures. A scan started from a translated page lands on the translated report. The switcher is in the footer of every translated page and of the English original.
What is deliberately English #
The blog and the guides, including this note. The machine-readable surfaces: a request for /de/r/<id>.json is redirected to the English JSON, because the JSON is read by software and a second vocabulary would make every consumer's parser handle five. Finding codes and crawler names are never translated anywhere; ROBOTS_IS_HTML and GPTBot are identifiers, not words. And there is no redirect by IP address or browser language: a German visitor typing the English URL gets the English page, with hreflang links telling the engine which four alternates exist.
| Surface | DE / FR / ES / PT | Why |
|---|---|---|
| home, pricing, how it works, tools, notice | translated | conversion pages |
scan report /r/<id> | translated, incl. SVG titles and rule lines | the product |
| report JSON, API, machine files | English, redirected | read by software |
| blog and guides | English | written once, cited by URL |
| finding codes, crawler names | never translated | identifiers |
| language choice | explicit URL prefix only | no IP or Accept-Language redirect |
How it works without a second site #
There is one set of page templates and one Worker. A translated page is the English page, rendered, then passed through a dictionary keyed on runs of text between block-level tags, with numbers abstracted to a placeholder so that 3 findings and 12 findings share one entry. Inline tags inside a run travel with it. Attributes that carry text, such as aria-label and title, are translated through the same dictionary. Content that is generated from data at request time, a chart label or a crawler table, falls back to a segment dictionary that matches the pieces around the data. What the dictionary cannot key, the SVG <title> elements and the rule and verify lines that embed a finding code, is translated by shape-specific passes added on 29 September. The dictionary for the report alone is about 10,800 entries per language, built from 52 real reports and reviewed independently before it shipped; the review found between six and one hundred and twenty-four corrections per batch, which is the reason a review exists.
How coverage is measured #
A route, /api/i18n/gaps, renders each translated page, finds every run of text that came through untranslated, and counts them per language. The number is zero on all five page types in all four languages, and the route is public so that the claim is checkable at any time rather than only on the day it was written. When SVG text was first made translatable the count jumped to 268, not because anything regressed but because 268 strings had become visible to the check; the jump is recorded here because a coverage number that only goes down is a number nobody is measuring.
What the head of each page declares #
Every translated page sets <html lang> to its language, a canonical to itself, and hreflang links to the English original, the other three languages and an x-default pointing at English. Internal links on a translated page point at the translated version of the target where one exists and at the English page where it does not. The sitemap lists the translated URLs. A request for a translated version of a page that has no translation is redirected to the English page rather than served half-translated.
What was hard #
Three things. Truncated chart labels: an English label cut to sixteen characters with an ellipsis has to be translated as a label and then cut again, or the translation overflows the figure; every SVG label is checked inside its viewbox at two widths before a build ships. Grade words in titles: grade C abstracts to a pattern that grade A did not match until title variants were added per letter. And reviewer disagreement: the independent review of each dictionary batch found errors in the machine draft at a rate that made the review non-optional, and the corrections were applied to the dictionary rather than to the pages, so that every page carrying the same run got the same fix.
What is next #
The scan report's grade phrasing in page titles and meta descriptions was the last place an English word survived on a translated report, and the title variants for each grade letter are built. The remaining decision is whether the guides follow; the case against is that a guide is cited by URL and a translated copy splits the citations. The case for is on the traffic, which is measured and will decide it. The full list of what changed on the site that week is in the 29 September release notes; how a report is read, in any language, is in the report guide.
Live, as you read this: the corpus now holds 7,808 domains across 2,476 scans. The figures in this piece were measured on the date above; this line is not.
Every figure above came out of this scanner.
Point it at your own domain and see the same measurements, free.
The main product
Found this on your own site? We fix it for $749.
Scan free to see where you stand. The fix is one site, every finding implemented and re-measured, with a sealed before and after.
Questions this post answers
Which pages are available in German, French, Spanish and Portuguese?
The home page, pricing, how it works, the free tools page, the not-affiliated notice and every scan report, under the /de/, /fr/, /es/ and /pt/ prefixes. The blog and guides stay in English.
Does the site redirect me based on my location or browser language?
No. Language is chosen only by the URL prefix, and a footer switcher links the alternates. hreflang links in the page head tell search engines which versions exist.
Why is the report JSON not translated?
It is read by software. A request for a translated JSON path is redirected to the English JSON so that every consumer parses one vocabulary. Finding codes and crawler names are identifiers and are never translated anywhere.
How is the translation produced?
One set of templates is rendered in English and passed through a per-language dictionary keyed on runs of text, with numbers abstracted. Data-driven blocks use a segment dictionary, and SVG titles and rule lines have their own passes. There is no second copy of the site.
How can I check the translation coverage?
The /api/i18n/gaps route renders each translated page and counts untranslated runs per language. It is public and currently reports zero on all translated page types.
Will the guides be translated?
Not decided. A guide is cited by URL and a translated copy would split citations; the traffic to the translated pages is being measured and will decide it.
Related findings
Comments
Comments are read before they appear. Nothing is published automatically, and no account is needed.
Writing about this? Facts, live figures and marks — every number on that page is dated and traceable to a scan.