Commit Graph
9 Commits
Author SHA1 Message Date
nimulaandClaude Opus 5 df8c79538e i18n(zh-tw): translate the keys the application actually renders
The zh-tw catalogue was the weakest of the ten supported locales at 380 of
1450 keys (26%), well behind zh (75%) and ja (57%). Users who select
繁體中文 saw English for most of the interface.

This does not attempt full parity. It closes the gap for the 190 keys that
`$msg()` calls in `src/` actually resolve through the catalogue (zh-tw had
no entry for any of them), plus the 7 `K.*` keyword fragments that
`expandKeywords()` substitutes into `%{...}` references at build time
(zh-tw had none of these either, so any zh-tw message referencing `%{Peer}`
etc. would have shown the raw token on screen — the same defect currently
affecting `he`).

- 186 of the 190 code-referenced keys are translated. The remaining 4 are
  left as-is because their English value is not translatable prose:
  `moduleMigration.docUri` and `obsidianLiveSyncSettingTab.linkTroubleshooting`
  are a URL and a doc path, `obsidianLiveSyncSettingTab.logServerConfigurationCheck`'s
  English value is the key name itself, and `moduleLiveSyncMain.logPluginVersion`
  is a version-number template.
- Two pre-existing entries are corrected for internal consistency: `Bucket
  Name` (儲存桶→儲存庫) and `Peer-to-Peer Synchronisation` (點對點同步→
  Peer-to-Peer 同步), the latter matching the other three occurrences of
  "Peer-to-Peer" already left untranslated in this same file.
- Wording follows docs/terms.md and the existing zh-tw register: `Setup
  URI`, `Vault`, `chunk(s)`, `Hatch`, and `Peer-to-Peer` stay untranslated
  as proper nouns, matching how the rest of the file already treats them.
- `${...}` placeholders and `%{...}` keyword references are kept
  byte-identical to the English source; verified programmatically against
  all 573 zh-tw entries, not just the new ones.
- Regenerated `messagesJson/zh-tw.json` and `combinedMessages.prod.ts`
  through the documented `i18n:bake` pipeline; no other language's entries
  changed.

Coverage: 380/1450 (26.2%) -> 573/1450 (39.5%).

Verified with tsc-check, tsc-check:apps, lint, lint:community,
lint:community:tools, svelte-check, check:compatibility, and test:unit
(604 tests, 86 files) — all pass.

Not in scope, left for follow-up: the ~137 Commonlib-owned setting
labels/descriptions never reach any translator because `getConfig()` call
sites in SettingDialogue omit the `translate` argument; German is staged
in the catalogue but never imported by `combinedMessages.dev.ts`; Hebrew
keyword references are never expanded by `expandKeywords()`. None of these
are specific to zh-tw and none are touched here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:18:35 +08:00
Namwon KimandClaude Opus 5 697ebe8272 Complete Korean translations to full coverage
Fill in the 318 remaining untranslated message keys for Korean, bringing
`ko` from 1132/1450 to 1450/1450 against the English base locale.

The gap was concentrated in recently added areas: P2P synchronisation UI,
the setup wizard confirmation dialogues, S3/MinIO/R2 and JWT authentication
settings, and the diagnostics/maintenance panels. These keys are looked up
by their English source text, so an absent translation silently fell back
to English.

Terminology follows the existing Korean resource: Vault as 보관함, chunk as
청크, passphrase as 패스프레이즈, replication as 복제, rebuild as 재구축.
Proper nouns (CouchDB, LiveSync, Setup URI, JWT, TURN) are left as-is.

Sentence fragments that are concatenated in the setup wizard were adapted
to Korean word order — Korean places the predicate last, so the emphasised
trailing fragment carries the verb (e.g. "the single, authoritative master
copy" renders as a complete predicate).

Only ko.yaml was hand-edited; ko.json and combinedMessages.prod.ts are
regenerated by `npm run i18n:bake`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R5avHoUL5zBwBfakGHyeFz
2026-08-05 12:37:15 +09:00
vorotamoroz fbfb77440d Merge branch 'main' into pr/zeedif/1015 2026-07-31 07:14:14 +01:00
vorotamoroz 21dd24682b Merge branch 'main' into pr/zeedif/1059 2026-07-31 06:00:59 +01:00
ZeedifandClaude Opus 5 0518fab62a i18n(es): complete the Spanish catalogue coverage
Fills every untranslated key in the Spanish catalogue: coverage goes from
643/1132 to 1131/1132 against `en.yaml`.

- Translate the 488 keys that had no Spanish entry, covering the Config
  Doctor, tweak-mismatch resolution, the P2P notes and panes, the Setup
  Wizard, the maintenance and patch panels, Garbage Collection V3 and the
  migration dialogues.
- Register follows the existing catalogue: informal address, `es-ES`
  vocabulary, British-style source wording preserved where it is a proper
  noun (Setup URI, Vault, chunk).
- Placeholders (`${...}`), keyword references (`%{...}`) and Markdown
  callout syntax are kept byte-identical to the English source.
- Regenerate `messagesJson/es.json` and `combinedMessages.prod.ts` with the
  documented `i18n:bake` pipeline.

`obsidianLiveSyncSettingTab.logServerConfigurationCheck` is deliberately left
untranslated: its English value is the key itself, so it looks like a
placeholder rather than a message.

Regenerating the catalogue also normalises three pre-existing entries each in
`ko.json` and `zh.json`, where the committed JSON kept a trailing space before
a newline that YAML cannot represent.

Verified with tsc-check and test:unit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 19:09:17 -06:00
ZeedifandClaude Opus 5 b6746be73e refactor(i18n): route remaining Obsidian UI text through the message catalogue
Continues the source-key migration inside the application boundary introduced
in 1.0.0, where LiveSync owns its catalogue and consumes Commonlib as a
published package.

- Replace hardcoded user-visible strings in the Obsidian UI (Setup Wizard
  dialogues, P2P panes, Customisation Sync panes, Global History, the JSON
  conflict pane and the remote-configuration menu) with `$msg` calls, keeping
  the English source string as the key.
- Wire up strings whose translations already existed in the catalogue but were
  still rendered as literals, for example the whole Intro dialogue.
- Add the new entries to `src/common/messagesYAML/en.yaml` and `es.yaml`, then
  regenerate `messagesJson/` and `combinedMessages.prod.ts` through the
  documented `i18n:bake` pipeline.
- No Commonlib gitlink or catalogue is involved; every change is
  LiveSync-owned.

Regenerating the catalogue also normalises three pre-existing entries each in
`ko.json` and `zh.json`, where the committed JSON kept a trailing space before
a newline that YAML cannot represent.

Verified with tsc-check, tsc-check:apps, svelte-check and lint.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 18:59:19 -06:00
Namwon KimandClaude Fable 5 17fe6c1518 Complete and correct the Korean translations
Korean coverage was 796 of 1132 keys (70%), so a large part of the UI fell
back to English. Alongside the missing entries, the existing translations
carried a few defects that were visible to users.

Fixes:

- Three messages had lost the `$` from their placeholders, leaving a literal
  `{origin}`, `{org}` and `{from}->{to}` on screen, because `$msg()` only
  substitutes `${...}`.
- `dialog.yourLanguageAvailable` referenced `%{Display language}`, but the key
  is `Display Language`, so the raw token was shown. Corrected to match ja.
- Sixteen onboarding messages ended with the Japanese full stop `。`.
- Four messages hard-coded a particle after a variable (`${measuredSize}가`),
  which is ungrammatical for values ending in a consonant. They now use the
  paired form `이(가)`, `을(를)`, `(으)로`.

Terminology is now consistent with the Obsidian Korean UI and with the
definitions in docs/terms.md:

- `vault` is 보관함, `device` is 기기, `status bar` is 상태 표시줄.
- `chunk` is 청크 everywhere; the Eden settings had rendered it as 변경 기록
  ("change record"), which is not what a chunk is.
- `Compaction` is 압축 정리, separating it from `Data Compression` (데이터 압축),
  which had shared the same word.
- HTTP `Origin` is 출처; it had been 원점, the geometric origin.
- Six English strings that had mapped to two different Korean strings each are
  now unified.

The remaining 336 keys are translated, including the setup wizard outro, the
insecure-chunk and v0.25.6 recovery dialogues, and the database adapter
migration messages.

This ports vrtmrz/livesync-commonlib#79 to this repository, following the
v1.0.0 boundary change that moved application translations here. On top of
the original work, the 17 keys newly introduced in v1.0.0 (the P2P setup
wizard Invitation, OutroNewP2PUser and RebuildEverythingP2P dialogues, and
the moduleCheckRemoteSize notices) are translated as well.

Verified with _tools/checkI18nCoverage.ts (ko: 1132/1132, 0 missing),
tsc --noEmit, and a dev build. Generated resources are committed as produced
by `npm run i18n:bake`; besides the `ko` entries it also trims a stale
trailing space from five es/zh entries in combinedMessages.prod.ts that had
been left behind by the migration.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EtFsro96LHztmoYmRjtfAy
2026-07-30 09:15:41 +09:00
vorotamoroz c8050322e4 Clarify remote setup and verify manual CouchDB onboarding 2026-07-23 16:46:50 +00:00
vorotamoroz 1ef8c88139 Complete Commonlib rc.6 integration and setup workflows 2026-07-21 15:00:28 +00:00