Skip to content

Add Spanish (Spain) - #697

Merged
henmedia merged 1 commit into
henmedia:mainfrom
litio2001:castellano
Oct 21, 2026
Merged

henmedia merged 1 commit into
henmedia:mainfrom
litio2001:castellano

Conversation

@litio2001

Copy link
Copy Markdown
Contributor

Summary

  • Spanish, as written in Spain, informal ("tú") like the German "du": the whole interface in messages.es.ts (all 2,858 sentences of 1.98.0) and the 17 chapters of the guide in docs/guide/es/, under the English file names as Russian, Czech and Hungarian do.
  • Registered in languages.ts as "Español", between Deutsch and Français, with the numbers and quotation marks of es-ES («…») and the labels of a Spanish keyboard (Mayús, Supr, Retroceso, Inicio, Fin, Re Pág, Av Pág, Intro). The chapters write the keys the same way ([[Mayús]], [[Intro]]), as the German ones write [[Strg]]. The guide is built into guia-es/, which is in .gitignore. Any Spanish browser (es-ES, es-MX, es-419) gets it rather than English.
  • Fetched when chosen: one line in LOADERS, so nobody else downloads it.
  • Question marks: GUIDE_CHAPTERS and GUIDE_SECTIONS carry es, so every question mark lands on its Spanish heading.
  • Not marked complete on purpose, like Hungarian: sentences you add later show in English until the Spanish ones follow in a small pull request, so a release never waits for them.
  • Wording: Tinkercad's Spanish terms where it has one (sólido / orificio, plano de trabajo, agrupar), and the words of a Spanish workshop elsewhere (rosca, paso, muelle, chaflán, escariado, avellanado).

Testing

  • npm run typecheck
  • npm test on 1.98.0: 336 files, all 2,770 tests pass.
  • npm run guide builds all pages. npm run i18n:status shows es at 2858/2858 sentences, 17/17 chapters, no problems.
  • The guide checks of tests/unit/guide.test.ts (headings behind every question mark, MCP tool names, chapters) pass with es added to its language list. I left it out of the committed list so it adds no upkeep.
  • Manually tested in the editor: start page, editor and view cube labels. The 3D plate label shows ñ and accents. I also checked the guide pages.

Notes

  • Tests touched: three tests in i18n.test.ts and one in noBrowserTranslation.test.ts used Spanish as the example of a language layerling does not speak. They use Swedish now, and the last one also checks that a Spanish browser gets es-ES. guideAllLanguages.test.ts lists es among the guide languages.
  • Fonts: Multilanguage and Rounded lack ñ, the accented vowels, ¿ and ¡. Like the German letters, they borrow them from Sans, which has all of them.
  • How it was made: translated with Claude from the English, checked against the German. TRANSLATING.md asks for two readers:

🤖 Generated with Claude Code

The whole interface (messages.es.ts, all 2,858 sentences of 1.98.0) and
the 17 chapters of the guide (docs/guide/es/, under the English file
names), in the Spanish of Spain and informal ("tú"), like the German "du".

- languages.ts: "Español" between Deutsch and Français, with the numbers
  and quotation marks of es-ES and the labels of a Spanish keyboard
  (Mayús, Supr, Retroceso, Inicio, Fin, Re Pág, Av Pág, Intro), which the
  chapters use too, as the German ones write [[Strg]]. The guide folder is
  guia-es. Any Spanish browser (es-ES, es-MX, es-419) gets it, rather than
  English. Not marked complete on purpose, like Hungarian: sentences added
  later show in English until the Spanish ones follow.
- i18n.ts: fetched when chosen, a chunk of its own.
- guideLinks.ts: the ids of the Spanish headings, so the question marks
  land on the right heading.
- The wording takes Tinkercad's Spanish where it has a term (sólido,
  orificio, plano de trabajo) and the words of a Spanish workshop elsewhere
  (rosca, muelle, chaflán, escariado, avellanado).
- Tests: four tests used Spanish as the example of a language layerling
  does not speak; they use Swedish now, and the page-language test checks
  that a Spanish browser gets es-ES. The list of guide languages has es.

Translated with Claude from the English, checked against the German.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 21, 2026 16:48

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The bulk of the change is a large volume of human-language translation (including ~2,858 catalogue strings not shown in the diff) whose quality and accuracy require native-speaker human judgment, which the PR itself requests.

No open issues 🎉

What changed in this PR

This PR adds a complete Spanish (Spain) localization to layerling, a browser-based 3D CAD app. It registers es ("Español", informal "tú") as a served language, adds the full interface catalogue (messages.es.ts, ~2,858 strings) and all 17 guide chapters under docs/guide/es/, and wires up detection, loading, guide anchors, and build output. The language is intentionally marked complete: false (like Hungarian), so untranslated strings fall back to English rather than blocking releases.

Changes:

  • Registers es in LANGUAGE_INFO/LANGUAGES (name, es-ES locale/quotes, Spanish keyboard labels, guide strings) and adds a LOADERS entry so the catalogue is fetched only when chosen; es-ES/es-MX/es-419 browsers all resolve to es.
  • Adds the Spanish guide (17 chapters + GUIDE_CHAPTERS/GUIDE_SECTIONS anchors) built into the gitignored guia-es/.
  • Updates three test files to swap Spanish→Swedish as the "unsupported language" example and assert the new Spanish behavior; guideAllLanguages.test.ts now expects twelve guide languages.
File Description
apps/​web/​src/​lib/​languages.ts (context) Adds the es LANGUAGE_INFO block; fields consistent with other English-README languages.
apps/​web/​src/​lib/​i18n.ts (context) Adds the es dynamic-import LOADERS entry; target MESSAGES_ES exists.
apps/​web/​src/​lib/​guideLinks.ts (context) es added to all 17 chapter anchors and 65 section anchors; all resolve.
docs/​guide/​es/​*.md (17 files) Spanish guide; section counts, shots, cross-refs, UI tokens, and MCP tool names all match English.
tests/​unit/​i18n.test.ts Adds es detection assertions; moves "unsupported" example to Swedish.
tests/​unit/​noBrowserTranslation.test.ts Asserts Spanish browsers get es-ES; uses Swedish as unsupported.
tests/​unit/​guideAllLanguages.test.ts Updates expected guide-language list to include es (twelve).

Review effort: Balanced

@henmedia

Copy link
Copy Markdown
Owner

@litio2001 Thank you, this is a big piece of work. I will go through it and test it here. One thing is still open: the PR description says who has read the translation, but that part is empty. Could you tell me if a native speaker has read the Spanish text, or if you read it yourself? If it was only machine translated, that is fine too, I would just mark it that way and ask the community to proof-read.

@litio2001 litio2001 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@litio2001 Thank you, this is a big piece of work. I will go through it and test it here. One thing is still open: the PR description says who has read the translation, but that part is empty. Could you tell me if a native speaker has read the Spanish text, or if you read it yourself? If it was only machine translated, that is fine too, I would just mark it that way and ask the community to proof-read.

@henmedia Thanks! Honestly: the translation was made with Claude, from the English and checked against the German, so it started as a machine translation. Spanish is my mother tongue and I am from Spain. I am now reading all of the text, and it is a lot, so I am going through it step by step.

So far, more than 95 % of what I have read is correct. The other 5 % is not wrong Spanish. The text is just a bit longer than the space it has, so some buttons and labels wrap to two lines or overflow. One example is "Guardar como predeterminado" on the Make default button in the workspace settings. I will shorten those.

Nobody else has read it yet, so for now there is one reader. A community proof-read is very welcome. Readers from Latin America would help too, because es is also served to es-MX and es-419 browsers.

When I finish, I will push the fixes to this PR and fill in the "who has read it" line. If you prefer to merge earlier, I can send them as a small follow-up PR instead.

@henmedia

Copy link
Copy Markdown
Owner

@litio2001 thank you for being open about it, that is exactly what I wanted to know. I have merged it here, so it goes out with the next release. It stays marked as not complete, so missing sentences show in English. Please send the shortened labels and the other fixes as a small pull request once it is out, so the release does not wait for them. And thanks for reading it all yourself.

@henmedia
henmedia merged commit a4afab5 into henmedia:main Oct 21, 2026
henmedia added a commit that referenced this pull request Oct 21, 2026
…unded box radii to 0.01 mm (#705), tags on side faces (#696), thin imported parts (#700), hinge opening angle (#699), simple mode, SVG in UTF-16 (#317), Spanish (#697)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@henmedia

Copy link
Copy Markdown
Owner

@litio2001 Spanish is out in layerling 1.99.0: https://github.com/henmedia/layerling/releases/tag/v1.99.0. Thank you again, and I look forward to the pull request with the shortened labels.

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.

3 participants