TriliumNext Notes — Korean (한국어) Translation

Unofficial, community-made Korean translation for TriliumNext Notes. As of this writing, TriliumNext ships with no Korean language pack, and the list of selectable UI languages is hardcoded into the compiled server bundle rather than derived from the translations/ folder — so dropping these files in alone is not enough to make "한국어" show up in the language picker. See below for the full setup.

  • translation.json — client-side UI strings, 1,712 keys, 100% translated.
  • server.json — server-side strings, 283 keys, 100% translated.
  • patch_main_cjs.js — patches the compiled main.cjs server bundle to register ko as a selectable language (see comments in the script for why this is needed).

Tested against triliumnext/notes:latest (build date 2025-06-07, appVersion 0.95.0). Variable names inside main.cjs are minified and not stable across builds — if patch_main_cjs.js prints [skip] on a newer image, the markers it searches for have changed and need to be re-derived from that build.

Setup

  1. Copy the translation files into the running container (or better, bind-mount them so they survive docker compose down && up — see "Important" below):
    • translation.json → /usr/src/app/public/translations/ko/translation.json
    • server.json → /usr/src/app/assets/translations/ko/server.json
  2. Extract the container's unpatched main.cjs and run the patch script against it:
    docker create --name trilium-tmp triliumnext/notes:latest
    docker cp trilium-tmp:/usr/src/app/main.cjs ./main.cjs
    docker rm trilium-tmp
    node patch_main_cjs.js ./main.cjs
    node --check ./main.cjs   # always verify syntax before deploying
    
  3. Bind-mount the patched main.cjs over the original in docker-compose.yml:
    services:
      trilium:
        image: triliumnext/notes:latest
        volumes:
          - ./data:/home/node/trilium-data
          - ./main.cjs:/usr/src/app/main.cjs:ro
          - ./translation.json:/usr/src/app/public/translations/ko/translation.json:ro
          - ./server.json:/usr/src/app/assets/translations/ko/server.json:ro
    
  4. Start the container, then in the app go to Options → Localization and select "한국어".

Important: don't docker cp and stop there

Files copied into a container with docker cp live only in its writable layer — they disappear the moment the container is recreated (docker compose down && up, not just restart). Always bind-mount the three files above from the host, as shown in step 3, or the translation will silently vanish on the next redeploy while the language list (which lives inside the bind-mounted main.cjs) keeps working — producing a confusing partial-translation state that has nothing to do with locale or browser and everything to do with a missing file on the server.

Known gap: CKEditor's own toolbar

CKEditor5's own UI strings (toolbar button labels like "Paragraph", "Heading 2", "Bold") come from a separate translation system (window.CKEDITOR_TRANSLATIONS) that isn't touched by this project. As of the tested build, no language — not German, French, Spanish, Chinese, or any other already-"supported" language — ships a real CKEditor dictionary either; it falls back to English UI for everyone. This is a pre-existing gap in the upstream build, not something specific to Korean.

License

Same license as TriliumNext Notes itself. No warranty — this patches a compiled binary by string-matching minified variable names, which is inherently fragile across version upgrades.

S
Description
TriliumNext 0.95.0 한국어 Docker 배포판. Trilium 한글화와 한국어 도움말 및 기본 예제를 포함합니다. Dockerfile과 Compose 및 설치 스크립트를 공개하며 신규 설치와 업데이트 및 백업 복원을 검증했습니다.
https://gitea.itosm.co.kr/syskiller/triliumnext-korean-patch Readme
27 MiB
2026-09-13 18:58:17 +09:00
Languages
JavaScript 97.5%
HTML 2.5%