Skip to content

feat(i18n): multi-language proof-of-concept (ru, de, zh-cn, hi)#593

Draft
Timur Tukaev (tym83) wants to merge 6 commits into
mainfrom
poc/i18n-multilang
Draft

feat(i18n): multi-language proof-of-concept (ru, de, zh-cn, hi)#593
Timur Tukaev (tym83) wants to merge 6 commits into
mainfrom
poc/i18n-multilang

Conversation

@tym83

@tym83 Timur Tukaev (tym83) commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Proof-of-concept for website localization. Adds Russian, German, Simplified Chinese, and Hindi versions of a representative set of pages so reviewers can see all four writing systems on the real layout (typography, CJK/Devanagari rendering, the navbar language switcher) and evaluate quality.

Machine-translated and cross-checked with a second model; pending native-speaker review. This is a PoC to validate the approach end-to-end before committing to the full pipeline — a design proposal/discussion accompanies it.

Live preview

https://deploy-preview-593--cozystack.netlify.app — use the navbar language dropdown, or jump straight in:

Each language has: landing, Getting Started, Support, and the "Introducing Cozystack Wizard" blog post.

What

  • Hugo languages: config for ru / de / zh-cn (zh-Hans) / hi, plus per-language content mounts (base + production override). English stays at the root (defaultContentLanguageInSubdir: false) — no existing URLs change; other languages live under /de/, /ru/, /zh-cn/, /hi/.
  • Translated pages under content/<lang>/:
    • Landing (_index.html) — transcreated, with keyword-localized SEO front matter
    • Getting Started (docs/v1.4/getting-started/_index.md)
    • Support (support.md)
    • Blog: "Introducing Cozystack Wizard"
  • Shortcodes, code blocks, CLI commands, URLs, taxonomy terms, and brand names (Kubernetes, Talos, FluxCD, AWS, VMware) preserved; image bundles copied per language.

Why

Validate localization on the live layout before building the full automated pipeline: confirm the structure (content/<lang>/ siblings, mirroring kubernetes/website), the Docsy language dropdown, and translation/terminology quality across very different writing systems.

Notes & open items

  • PoC, not production: translations are machine-translated + automated checks, not yet native-reviewed. Terminology choices (e.g. RU dashboard rendering, DE/ZH conventions) follow the CNCF Cloud Native Glossary + kubernetes.io localization and are pending native ratification.
  • Only the latest docs version (v1.4) is in scope for translation; older versions stay English.
  • Getting Started links point to the English sub-pages for now (only _index is translated in this PoC) — honest behavior for a partially-translated section.
  • hreflang / <html lang> / self-canonical wiring and the automated translation pipeline come as follow-ups (covered in the design proposal).
  • Looking for native-speaker reviewers/owners per language (Kubernetes localization model).

Timur Tukaev (tym83) and others added 4 commits June 30, 2026 13:38
Add Hugo languages config and per-language content mounts (base + production
override) for German, Russian, Simplified Chinese, Hindi. English stays at
root (defaultContentLanguageInSubdir: false). Includes translated
getting-started/_index.md for all four as the first PoC page.

Verified: Hugo registers all languages and resolves all content mounts; the
four language getting-started pages appear in the site model with correct URLs.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Timur Tukaev <timur.tukaev@aenix.io>
…de/zh-cn/hi

Cross-vendor validation pass: accepted Codex's accuracy/structure/fluency fixes
(DE missing 'on your machine'; ZH/HI merged-line split; HI deployment-term
consistency; several fluency edits). Rejected Codex's removal of source_digest/
translation_status/l10n — those are intentional pipeline metadata. Terminology
decisions recorded in the glossaries.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Timur Tukaev <timur.tukaev@aenix.io>
…d SEO blocks

Transcreated _index.html (hero, taglines, benefits, features, community) for all
four languages. Shortcodes, icons, URLs, code, and brand names (AWS, VMware,
Kubernetes, FluxCD) preserved. Each carries an Ahrefs-derived seo: block
(keyword-localized title/description/keywords — English terms kept where the
data favors them) plus pipeline metadata. Terminology follows the seeded glossaries.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Timur Tukaev <timur.tukaev@aenix.io>
…n/hi

Completes the PoC-1 page set (landing + getting-started + support + blog) across
four writing systems. Code blocks, slugs, taxonomy terms, commands, and URLs
preserved; image bundles copied per language. Pipeline metadata + glossary terms applied.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Timur Tukaev <timur.tukaev@aenix.io>
@netlify

netlify Bot commented Jun 30, 2026

Copy link
Copy Markdown

Deploy Preview for cozystack ready!

Name Link
🔨 Latest commit e6bd3ea
🔍 Latest deploy log https://app.netlify.com/projects/cozystack/deploys/6a43be8ede7eca00082b67df
😎 Deploy Preview https://deploy-preview-593--cozystack.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 17419bbb-c3aa-4020-9484-c21bc1a758b9

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch poc/i18n-multilang

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.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces localization support for German, Russian, Simplified Chinese, and Hindi by adding translated homepages, blog posts, getting started guides, and support pages, alongside configuring Hugo mounts and language settings in hugo.yaml and config/production/hugo.yaml. The review feedback correctly identifies that the "Get Started" buttons on the localized homepages still point to the hardcoded English documentation path (/docs/get-started/) instead of their respective localized paths, which should be updated to ensure a consistent user experience.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread content/de/_index.html

<div class="hero-gitops">
{{% blocks/hero title="Cozystack: Kostenlose Cloud-Plattform auf Basis von Kubernetes" color="primary"
height="auto" link_title="Erste Schritte" link_url="/docs/get-started/" %}}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The link_url for the "Erste Schritte" (Get Started) button is hardcoded to the root English path /docs/get-started/. Since this is the German localized homepage, it should point to the German version of the documentation to ensure a consistent localized user experience.

  height="auto" link_title="Erste Schritte" link_url="/de/docs/get-started/" %}}

Comment thread content/hi/_index.html

<div class="hero-gitops">
{{% blocks/hero title="Cozystack: Kubernetes पर आधारित मुफ़्त क्लाउड प्लेटफ़ॉर्म" color="primary"
height="auto" link_title="शुरुआत करें" link_url="/docs/get-started/" %}}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The link_url for the "शुरुआत करें" (Get Started) button is hardcoded to the root English path /docs/get-started/. Since this is the Hindi localized homepage, it should point to the Hindi version of the documentation to ensure a consistent localized user experience.

  height="auto" link_title="शुरुआत करें" link_url="/hi/docs/get-started/" %}}

Comment thread content/ru/_index.html

<div class="hero-gitops">
{{% blocks/hero title="Cozystack: бесплатная облачная платформа на базе Kubernetes" color="primary"
height="auto" link_title="Начать" link_url="/docs/get-started/" %}}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The link_url for the "Начать" (Get Started) button is hardcoded to the root English path /docs/get-started/. Since this is the Russian localized homepage, it should point to the Russian version of the documentation to ensure a consistent localized user experience.

  height="auto" link_title="Начать" link_url="/ru/docs/get-started/" %}}

Comment thread content/zh-cn/_index.html

<div class="hero-gitops">
{{% blocks/hero title="Cozystack:基于 Kubernetes 的免费云平台" color="primary"
height="auto" link_title="开始使用" link_url="/docs/get-started/" %}}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The link_url for the "开始使用" (Get Started) button is hardcoded to the root English path /docs/get-started/. Since this is the Simplified Chinese localized homepage, it should point to the Simplified Chinese version of the documentation to ensure a consistent localized user experience.

  height="auto" link_title="开始使用" link_url="/zh-cn/docs/get-started/" %}}

Timur Tukaev (tym83) and others added 2 commits June 30, 2026 17:57
…l translation)

The translated getting-started/_index.md linked to sibling pages via
{{% ref %}}, but those siblings exist only in English (only _index is
translated in the PoC). Hugo resolves ref within the current language, so the
build failed with REF_NOT_FOUND. Point the links at the canonical English
pages instead — correct behavior for a partially-translated section and the
build passes. Verified with pinned Hugo 0.160.1 (HUGO_ENV=preview): all four
languages and all PoC pages render, navbar language switcher lists all five.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Timur Tukaev <timur.tukaev@aenix.io>
The landing section headings (Benefits, Features, Screenshots) and the CNCF
sandbox line were hardcoded English in the home shortcodes, so they stayed
English on translated pages even though the cards (from front matter) were
translated. Externalize them to i18n strings (T "home_*") with en/de/ru/zh-cn/hi
values. This is the correct Hugo-native way to localize layout strings, and it
demonstrates UI-string localization alongside content translation. English
output is unchanged; verified on pinned Hugo 0.160.1.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Timur Tukaev <timur.tukaev@aenix.io>
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.

1 participant