Commit 48db149
authored
Add complete Korean (한국어) translation (#225)
* docs: Add Korean translation setup and language switcher
- Add book/i18n/ko/ directory structure for Korean translation
- Create language switcher dropdown (JS + CSS) for navigation
- Update pixi.toml with bilingual build tasks:
- build-book: builds both English and Korean
- build-book-en/ko: individual language builds
- book-en/ko: individual serve commands
- Configure Korean book.toml with proper paths and preprocessors
- Use symlinks for shared assets (theme, favicon, _includes)
- Update include paths in Korean markdown files for correct resolution
* docs(i18n): Add Korean translations for puzzles 01-08
- Translate puzzle 01-08 markdown files to Korean
- Translate howto.md and reward.md
- Fix media paths to use absolute URLs for shared assets
* feat(i18n): Add translation status checker and improve UI
- Add i18n_status_preprocessor.py to detect outdated translations
by comparing source commit hashes embedded in translation files
- Add source commit metadata to all Korean translation files (97 files)
- Display warning banner when translation is outdated
- Update language switcher to use Material Symbols icon
- Add placeholder in index.hbs to reduce icon flickering
- Add warning banner CSS styles for light and dark themes
* docs(i18n): Add Korean translations for puzzles 09-10
- Translate all puzzle 09 files (essentials, first/second/third case)
- Translate all puzzle 10 files (memcheck, racecheck)
- Fix relative include paths for i18n directory depth
(../../../ → ../../../../../) to match puzzles 01-08 pattern
* docs(i18n): Add Korean translations for puzzles 11-12
- Translate puzzle 11 (Pooling) and puzzle 12 (Dot Product)
- Add Korean glossary (GLOSSARY_KO.md)
- Fix include paths for puzzle 11 translation files
- Update .gitignore to exclude .claude/ and .agent/ dirs
* docs(i18n): Add Korean translations for puzzles 13-16
- Translate puzzle 13 (1D convolution: simple, block boundary)
- Translate puzzle 14 (1D convolution: simple, complete)
- Translate puzzle 15 (2D convolution)
- Translate puzzle 16 (matrix multiplication: naïve, shared
memory, tiled, roofline)
- Refine puzzles 11-12 terminology and fix image paths
- Add glossary terms (mixed precision, stride, arithmetic
intensity, compute-bound, memory-bound, etc.)
* fix(i18n): Compare against main branch for translation freshness
- Preprocessor now uses `git log main` instead of current branch
to detect English source changes, fixing false negatives when
the translation branch hasn't merged latest main
- Sync Korean roofline.md with upstream percentage formatting fix
* docs(i18n): Add Korean translations for puzzles 17-19 and bonuses
- Translate puzzle 17, 18, 19 and bonus challenges (part4)
- Add glossary terms: softmax, in-place, thread divergence
- Refine wording for natural Korean expressions
* docs(i18n): Add Korean translations for puzzles 20-22
- Puzzle 20: 1D Convolution Op (PyTorch custom ops)
- Puzzle 21: Embedding Op (coalesced vs non-coalesced)
- Puzzle 22: Kernel Fusion and custom backward pass
- Add glossary terms: autograd, embedding, dense vector
* docs(i18n): Add Korean translations for puzzle 23
- Translate all 6 puzzle 23 documents: puzzle_23.md,
elementwise.md, tile.md, vectorize.md,
gpu-thread-vs-simd.md, benchmarking.md
- Add SM (Streaming Multiprocessor) to GLOSSARY_KO.md
* docs(i18n): Add Korean translations for puzzles 24-26
- Translate Part VII (Warp-level programming): puzzles 24-26
covering SIMT execution, warp.sum(), shuffle_down, broadcast,
shuffle_xor, and prefix_sum
- Add glossary terms: lockstep, stream compaction (원문 유지),
predicate→프레디케이트, topology→토폴로지 (용어 목록)
* docs(i18n): Add Korean translations for puzzle 27
- Translate all 4 files: puzzle_27.md, block_sum.md,
block_prefix_sum.md, block_broadcast.md
- Add PTX to GLOSSARY_KO.md as a preserved English term
* docs(i18n): Add Korean translations for puzzles 28-29
- Puzzle 28: 비동기 메모리 연산과 복사 중첩
- Puzzle 29: GPU 동기화 기본 요소
- 다단계 파이프라인 조정 (barrier.md)
- Double-Buffered Stencil 연산 (memory_barrier.md)
- Add glossary terms: DRAM, SRAM, halo, mbarrier,
thread specialization
* docs(i18n): Add Korean translations for puzzle 32
- Translate puzzle 32 (Bank Conflicts) main page,
shared memory bank theory, and conflict-free patterns
- Add glossary terms: bank conflict → 뱅크 충돌,
conflict-free (pattern) → 충돌 없는 (패턴)
- Apply updated terminology consistently across all
previously translated files (puzzles 13, 16, 24, 27,
30, 31, introduction, howto, SUMMARY)
* docs(i18n): Add Korean translations for Part XI
- Translate puzzle 33 (tensor core operations) and bonus challenge
- Translate puzzle 34 (GPU cluster programming SM90+):
- Main introduction page
- Multi-block coordination basics
- Cluster-wide collective operations
- Advanced cluster algorithms
- Add GEMM, MMA, swizzle, fragment terms to glossary
* docs(i18n): Refine Korean translations across all puzzles
Glossary:
- Move "deadlock" and "guard" from untranslated to translated
section (교착 상태, 가드)
- Apply new terms across all translated files with correct
particles (조사)
Terminology consistency:
- occupancy → 점유율 (puzzle 24, 29, 31)
- 임곗값 → 임계값 (puzzle 25)
- 리덕션 → reduction (puzzle 10)
- 원자적 → atomic (puzzle 26)
- 확산(broadcast) → broadcast (puzzle 02)
Section title improvements:
- "작성할 코드" → "완성할 코드" across all puzzles
- "이 책의 사용법" → "퍼즐 사용 가이드" (howto.md)
- Update introduction.md to match new howto title
UI text translations:
- "View full file:" → "전체 파일 보기:" (puzzle 10, 31-34)
Bug fixes:
- Fix broken links to puzzle_04 (add specific .md filename)
- Fix Part IV → Part V typo (puzzle 22)
- Fix "병합합" → "병합된" typo (puzzle 28)
- Fix "반복법와" → "반복법과" typo (puzzle 29)
- Fix "몇 배" → "수십 배" for accuracy (puzzle 30)
- Fix 뱅크 충돌 particle mismatch (puzzle 32)
- Fix numbered list continuity (puzzle 31)
- Fix untranslated comment in code block (puzzle 32)
- Fix "멈춰버릴때 때" → "멈춰버릴 때" (puzzle 09)
* docs(i18n): Sync Korean translations with main branch
Incorporate upstream changes from main into Korean translations:
- Update documentation URLs from stdlib to std paths (477e5a0)
- Add broadcasting definition to puzzle_05 (430a6f1)
- Add hyperlink to first case in puzzle_09/second_case (0b65eaf)
- Fix stray brackets and empty link syntax (477e5a0)
- Update i18n-source-commit hashes across 33 files
- Remove unused book-en and book-ko tasks from pixi.toml
* chore: Reorganize book serve tasks
- Add mdbook serve for per-language dev with auto-rebuild
(book for English, book-ko for Korean)
- Rename static file server to book-static for combined preview
- Simplify clean task (mdbook clean already removes html/ko)
* chore: Add multi-language mdbook serve with live reload
- Add build_book.sh with CI/serve dual mode (--serve flag)
to auto-discover languages from book/i18n/*/book.toml
- Add serve_book.sh to orchestrate mdbook serve (English),
mdbook watch (translations), and symlink restoration loop
- Add livereload-poll.js for translation pages using
Last-Modified header polling (localhost only)
- Simplify pixi.toml: 3 build-book tasks → 1 script,
remove book-ko/book-static tasks
- Update .gitignore with book/html-* pattern for all
translation build outputs
* docs(i18n): Replace guard with 가드 per glossary
guard is a translated term (가드) in GLOSSARY_KO.md, not a
keep-in-English term. Fix 14 instances across 9 puzzle files
and update SUMMARY.md title for Puzzle 3.
* chore: Remove unnecessary bash -c wrapper in clean task
pixi cmd already runs through a shell, so the bash -c
wrapper around the clean command was redundant.
* docs(i18n): Unify glossary and apply Korean terms
- Merge "원문 유지 용어" section into single "용어 목록"
- Convert all English terms to Korean across translated files
- Add/update/remove glossary entries based on web research
* docs(i18n): Apply glossary terms to Part I puzzles
- Unify English terms to Korean per GLOSSARY_KO.md
- Align puzzle titles with SUMMARY.md Korean titles
- Use SUMMARY.md titles for cross-document link text
* docs(i18n): Apply glossary terms to Part II puzzles
* docs(i18n): Refine Part III and fix MathJax font
- Translate and refine puzzle_16 matmul variants
(naïve, roofline, shared_memory, tiled)
- Fix MathJax CJK font fallback in non-English locales
by forcing lang="en" on rendered elements and switching
config to TeX-AMS_HTML (book/theme/index.hbs)
- Fix inline LaTeX spacing before Korean characters
* docs(i18n): Apply glossary terms to Part IV and fix MathJax bounding box
- Apply glossary terms across Part IV puzzles (17-19, bonuses)
and propagate to shared files (SUMMARY, introduction, howto)
- Fix MathJax HTML-CSS bounding box miscalculation in non-English
locales by setting lang="en" on <html> before MathJax startup
in index.hbs, then restoring after rendering completes
* docs(i18n): Apply glossary terms to Part V puzzles
- Refine Puzzle 20, 21, 22 translations with unified
glossary terms and natural Korean expressions
- Update GLOSSARY_KO.md with new term entries
- Update SUMMARY.md to reflect revised titles
* docs(i18n): Apply glossary terms to Part VI puzzles
- Apply glossary terms across all puzzle_23 sub-pages
- Distinguish concept vs API naming: use Korean for
concepts and English for Mojo API references
- Match h1 page titles with SUMMARY.md sidebar titles
while preserving original subtitle structure
- Refine awkward translations for natural Korean
* docs(i18n): Apply glossary terms to Part VII puzzles
- Apply glossary terms to puzzles 24-26 (warp-level programming)
- Fix LaTeX escape sequences in English source files
(\_ → \_ and [ → \lbrack for correct MathJax rendering)
* fix(i18n): Skip outdated warning for co-committed files
When English source and translation files are modified in the same
commit, the translation cannot reference the commit hash in advance.
Compare the translation file's latest commit with the English source's
latest commit to detect co-committed changes and suppress false
outdated warnings.
* docs(i18n): Apply glossary terms to Part VIII, IX puzzles
- Part VIII: puzzle_27 (block_sum, block_prefix_sum, block_broadcast)
- Part IX: puzzle_28, puzzle_29 (barrier, memory_barrier)
* docs(i18n): Apply glossary terms to Part X, XI puzzles
- Part X: Puzzle 30 (profiling), 31 (occupancy), 32 (bank conflicts)
- Part XI: Puzzle 33 (tensor cores), 34 (clusters), bonus challenge
- Fix single writer pattern term in glossary
* fix(i18n): Add CJK search fallback for Korean site
mdBook's elasticlunr strips non-ASCII characters via \W regex in both
the Rust-side indexer and JS-side query pipeline, resulting in zero
Korean tokens in the inverted index. The documentStore preserves
original text, so this patch adds a fallback:
- Monkey-patch elasticlunr.Index.prototype.search to detect CJK
characters in queries and fall back to direct substring search
against the documentStore
- Non-CJK queries continue using the original elasticlunr search
- Cache lowercased field text per document to avoid repeated
toLowerCase() calls in inner loops
- Respect field boosts and AND/OR boolean modes from search config1 parent 6ce4d81 commit 48db149
File tree
119 files changed
+26581
-20
lines changed- book
- i18n/ko
- src
- bonuses
- puzzle_01
- puzzle_02
- puzzle_03
- puzzle_04
- puzzle_05
- puzzle_06
- puzzle_07
- puzzle_08
- puzzle_09
- puzzle_10
- puzzle_11
- puzzle_12
- puzzle_13
- puzzle_14
- puzzle_15
- puzzle_16
- puzzle_17
- puzzle_18
- puzzle_19
- puzzle_20
- puzzle_21
- puzzle_22
- puzzle_23
- puzzle_24
- puzzle_25
- puzzle_26
- puzzle_27
- puzzle_28
- puzzle_29
- puzzle_30
- puzzle_31
- puzzle_32
- puzzle_33
- puzzle_34
- src
- puzzle_25
- puzzle_26
- puzzle_34
- theme
- css
- js
- scripts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
119 files changed
+26581
-20
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
| |||
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
26 | 30 | | |
27 | 31 | | |
28 | 32 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
| 22 | + | |
21 | 23 | | |
22 | 24 | | |
23 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
0 commit comments