You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add Korean localization for workshop documentation - #15
Localizes all workshop lessons, READMEs, and LIVE_DEMO guides into Korean under localizations/ko-kr/, mirroring the source layout. Adds .localization-state.json to track per-file source and output SHA-256 baselines for incremental updates.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Introduce a ?locale= query parameter and a Docs selector, orthogonal to
the existing programming-language ?lang= parameter, so the Korean
translations under localizations/ are reachable from the site.
- Add docs/locale-registry.js as the single source of truth for locales
- Thread the locale through navigation, the homepage, and the lesson viewer
- Fall back to English when a translated lesson is missing
- Use per-locale LIVE_DEMO act headings in the Markdown preprocessor
- Publish localizations/ from the Pages workflow and cover the new URLs in
validate_deployment.py
- Fix Korean emphasis runs that CommonMark rendered literally because a
closing ** preceded by punctuation is not right-flanking
- Document the switcher in README.md and its Korean translation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Translate the docs homepage UI through the existing locale registry, including
metadata, accessibility labels, workshop cards, previews, and outcomes. Keep
programming-language selection independent from the human-language locale and
persist the locale query parameter on the homepage.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Move previous, next, hub, navigation-group, and per-step labels into the
locale registry so lesson header, sidebar, and footer navigation follow the
selected documentation locale.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Route the theme toggle labels, hub link, docs link, progress text, step
titles, and lesson status messages through the locale registry so the
Korean locale no longer falls back to English site chrome.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Pass the resolved locale directly to the shared theme toggle and version its
script URL so the homepage does not reuse a stale English-only asset.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The site's Latin webfonts carry no Hangul, so Korean text fell through to
whatever the OS picked. Add korean-typography.css, which overrides --font-sans
and --font-mono under html[lang=ko]: Nanum Gothic ahead of the platform Korean
fonts for prose, and D2Coding with GulimChe fallback for code and terminals.
The Latin webfont stays first in each stack so only Hangul falls through.
D2Coding is self-hosted (OFL 1.1) rather than loaded from the unofficial,
unpinned jsDelivr mirror. The TTFs come from naver/d2-coding-font and are
subset to Hangul plus CJK punctuation, which cuts each weight from ~1.5 MB to
~420 KB; a matching unicode-range keeps English pages from downloading them
at all.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The first pass put the Latin webfonts first, which limited D2Coding and Nanum
Gothic to glyphs the Latin fonts could not render. Korean families now lead both
stacks, with the Latin webfont as the immediate second choice and the platform
Korean fonts behind it.
Re-subset D2Coding from the naver/d2-coding-font VER1.4.0 release to cover Latin
alongside Hangul, plus the punctuation, arrows, and box-drawing characters the
lessons use, so leading with it no longer pushes Latin code into a Korean
fallback font. The narrow Hangul-only unicode-range is gone; English pages never
reference the family, so they still download nothing.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The preview blocks kept the English continuation indents, which left the arrows
hanging mid-label once the labels were translated. Hangul renders double-width
in the monospace stack, so pad each continuation line to the cell width of its
Korean prefix instead.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Detect changed Markdown sources and locale registry updates after pushes to main,
run the repository-local localization skill through Copilot CLI for existing
locales, validate its output paths and the site, then open a review pull request.
Use the built-in Actions token with Copilot request permission, pin the CLI and
actions, and restrict approved shell commands so the localization agent cannot
commit or push directly.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Pinning the CLI to a release would strand the workflow on an old build, and
GITHUB_TOKEN authentication requires a recent version. Install the current
release instead so the job keeps working as the CLI evolves.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
All 47 translated documents now have their English sources committed, so
record the current commit as each entry's source baseline instead of the
stale commit and the null placeholder on README.md. Content fingerprints
are unchanged.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Reflect the shortened English README language-support section in the Korean
translation and refresh its source and localized content fingerprints.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The README source and its Korean localization are now committed, so replace
the temporary null source baseline with the exact source commit.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Refresh the README localized_sha256 value to match the committed Korean
translation after line-ending normalization.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
L76 — nit, 4 votes: Placeholder, import, authentication, and cleanup instructions remain untranslated or mixed-language. L1 — nit, 2 votes: Title duplicates the language name.
localizations/ko-kr/start-intro/README.md
Adds Korean introductory starter overview.
L16 — moderate, 1 vote: Preflight and demo-guide links escape to English originals.
L75 — nit, 4 votes: Replacement-range, import, and cleanup instructions remain untranslated or mixed-language. L1 — nit, 2 votes: Title duplicates the language name.
L75 — nit, 4 votes: Import, placeholder, prompt, and permission instructions remain untranslated or mixed-language. L1 — nit, 2 votes: Title duplicates the language name.
L30 — moderate, 1 vote: Hub link returns readers to English rather than the Korean overview.
localizations/ko-kr/README.md
Adds Korean workshop overview.
L3 — moderate, 1 vote: Workshop URL uses github.github.com instead of github.github.io. L8 — moderate, 1 vote: Starter link escapes to English. L128 — moderate, 1 vote: Second starter link also escapes to English.
L224 — moderate, 1 vote: Explicit English selection is not persisted, so Start navigation can revert to saved Korean. L148 — nit, 1 vote: Runtime setup notes remain English when Korean is selected.
docs/fonts/LICENSE-D2Coding.txt
Includes the D2Coding font license.
—
.github/workflows/localization-sync.yml
Automates translation updates and review PRs.
L75 — critical, 2 votes: Recreating the shared branch from each push can discard pending translations from earlier pushes.
.github/workflows/deploy.yml
Publishes localized lessons and guides.
—
.github/skills/localizations/thumbnail.svg
Adds localization skill artwork.
—
.github/skills/localizations/SKILL.md
Defines translation and baseline procedures.
—
.github/skills/localizations/rules/zh-cn.md
Adds Simplified Chinese evaluation rules.
—
.github/skills/localizations/rules/pt-br.md
Adds Brazilian Portuguese evaluation rules.
—
.github/skills/localizations/rules/ko-kr.md
Adds Korean evaluation rules.
—
.github/skills/localizations/rules/ja-jp.md
Adds Japanese evaluation rules.
—
.github/skills/localizations/rules/es-es.md
Adds Spanish evaluation rules.
—
.github/skills/localizations/README.md
Documents skill installation and usage.
L20 — nit, 1 vote: Installation-guide relative link resolves to a nonexistent repository path.
The lesson viewer now resolves its UI strings through WorkshopLocales, but
the completion test harness still built its VM context from the pre-locale
globals, so every viewer run threw ReferenceError: WorkshopLocales is not
defined. Expose the locale registry and add the documentElement the viewer
sets lang on.
Also restore the line break that was lost where the invalid-language page is
constructed in the site tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Persist explicit locale selection across navigation
docs/homepage.js:225
With Korean saved in local storage, opening the homepage with ?locale=en displays English but leaves the stored locale as Korean. The start link omits the default locale, so the lesson then reads the saved preference and switches back to Korean. Persist the initially resolved locale, as the homepage already does for the initial programming language, so the explicit English choice survives navigation.
Direct Go commands to the canonical sample directory
“This directory” now refers to the localized README directory, which contains documentation but no Go project. Running go run . there fails. Explicitly direct readers to the canonical sample directory before these commands.
Direct Java commands to the canonical sample directory
The localized directory contains only documentation, not mvnw or the Java project, so running the following command in “this directory” fails. Add an explicit change to the canonical sample directory.
Direct Python setup to the canonical project directory
The localized README directory has neither requirements.txt nor main.py. Following this instruction creates a virtual environment there, then fails to install or run the sample. Specify the canonical Python project directory before creating the environment.
These copies require every locale to contain workshop lessons and all six LIVE_DEMO guides. A README-only locale leaves the lesson glob unmatched, and a missing guide makes its cp fail; either stops the entire Pages deployment. This conflicts with fetchLocalizedMarkdown explicitly supporting missing translations through English fallback. Copy only existing localized lessons and guides so partial locales remain deployable.
Persist resolved locale before constructing navigation links
docs/homepage.js:225
With Korean saved in local storage, opening the hub with ?locale=en displays English but leaves the saved locale unchanged. The Start link omits the default locale, so the lesson resolves the old ko-kr preference and switches back to Korean. Persist the resolved initial locale before constructing navigation links, as initialization already does for the programming language.
Use non-reserved names for modified D2Coding subsets
docs/korean-typography.css:23
The file describes these fonts as glyph subsets, which makes them modified versions under the included OFL license. LICENSE-D2Coding.txt reserves D2Coding and D2Coding-Bold, and clause 3 requires written permission to use those names for modified versions. Both declarations expose the subsets as D2Coding. Use a non-reserved family name for the subsets and any corresponding embedded font names, or document permission from the copyright holder; an unmodified upstream font is another option.
Run Go commands from the canonical sample directory
The localized directory contains only this README, not the Go project. Running go run . here fails, and the later build command also targets the wrong directory. Specify the canonical sample directory as the working directory.
Run Maven commands from the canonical Java sample directory
This localized directory contains only the README, with no mvnw or Maven project. Both documented ./mvnw commands fail when run “in this directory.” Tell readers to enter the canonical Java sample directory first.
Point setup commands to the canonical sample directory
“This directory” now refers to the localized directory, which contains only this README. Following these commands there creates a virtual environment but then fails because requirements.txt and main.py are in the canonical sample directory. Direct readers to that directory first.
Keep LIVE_DEMO links within each localized documentation tree
localizations/ko-kr/start-intro/README.md:14
These LIVE_DEMO links escape the Korean tree even though all six translated guides exist. The same issue occurs in each language's starter README, this README's lesson links at lines 26–27, and the museum starter README's preflight link. Readers following Korean setup instructions are sent back to English. Use <language>/LIVE_DEMO.md in this table, LIVE_DEMO.md in each language README, and ../workshop/<lesson>.md for the affected lesson links.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ko-kr) localization for 47 Markdown documents, including allLIVE_DEMO.mdfiles.Validation
node docs/tests/workshop-site.test.jspython scripts/validate_workshop.pyThe localization sync workflow has not been exercised end-to-end because it depends on the Copilot CLI and upstream documentation changes.