[pull] main from jason5ng32:main - #122
Merged
Merged
Conversation
…-first matching One registry (common/locale-registry.js) now owns the locale list; the lazy-load maps, picker options, <html lang>, zh->zh-CN mappings and test locale lists all derive from it, so adding a language becomes one JSON pack plus one registry line. Browser-language detection matches exact tags before base languages, clearing the path for regional packs like zh-TW. Pure refactor: behavior for the four shipped locales is unchanged except the picker now renders in registry order. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tatus dashboard A locale can now ship partially translated: registry status drives a Beta badge in the picker, missing keys walk variant -> base -> en (one chain definition feeds vue-i18n, the privacy/checklist datasets and the changelog), and matchLocale gained family matching so pt-PT finds a pt-BR pack. Changelog history is only required of full locales, removing the biggest barrier for new-language PRs. tests/locale-packs.test.js is the hard gate a pack must pass; scripts/i18n-status.js (un-gitignored for contributors) reports coverage without ever failing. Only visible behavior change: ?hl= resolves regional tags (?hl=zh-CN -> zh) instead of dropping to English. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
index.html can't import the registry, so its boot quips, JSON-LD and inline language pick have always been synced by hand. A new spec now holds them to it: full locales must cover the boot copy (beta ones are exempt), JSON-LD inLanguage mirrors the full locales' htmlLang — fixing the imprecise "zh" — and a sentinel evaluates the inline matcher against matchLocale so the two can't drift apart silently. The inline pick itself gains the same exact/base/family steps, closing the split where ?hl=zh-CN booted in one language and mounted in another. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ning A beta pack is now en's full skeleton with untranslated values left as "", so translation review is always a `"" -> text` diff and English left in place can't masquerade as translated. pnpm i18n-new scaffolds a pack and its registry line (--privacy / --checklist for the optional files, which ship finished or not at all); pnpm i18n-sync realigns packs when en changes. The gate flips accordingly (exact key parity everywhere, "" legal only in beta main packs) and a Vite plugin prunes empty values at build time, so shipped chunks carry only translated strings and "" behaves exactly like an absent key at runtime. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ution path TRANSLATING.md walks a contributor from pnpm i18n-new to a mergeable partial pack: the skeleton convention, the registry line, what the gate enforces, the fallback chain users see, and the beta-to-full promotion bar. CONTRIBUTING flips its "adding a locale is heavier than it looks" warning into an invitation, AGENTS.md restates the i18n rule in full/beta terms, and the README points translators at the guide. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pure reorder — key sets and values verified identical before and after. The packs drifted under years of hand-maintenance; aligning them once keeps every future pnpm i18n-sync diff free of position noise. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e data common/langs.js is gone. Its list conflated two unrelated things — the UI's locales and the languages upstream data comes in. The MaxMind set (verified against the shipped City database) now lives in maxmind-service.js, where lookupMaxMind family-normalizes any raw tag itself, so de/es/ja/pt-BR finally serve their real localized names and zh-TW-class variants resolve into their family instead of English. The dns-leak proxy forwards ?lang untouched — its upstream owns resolution — retiring the odd zh-CN default for langless calls. Net effect: no ?lang allow-list anywhere, and a new UI locale is a front-end-only change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Improve i18n Arc
…ight channels SECURITY.md used to ask for vulnerability reports in public issues while requesting no public disclosure in the same breath; it now points at GitHub's private advisory form, states the latest-release-only support policy and scopes out non-code findings. The Code of Conduct's enforcement contact — a literal blank since the file landed — now uses the same private form. New SUPPORT.md and an issue-chooser config send questions to Discussions Q&A and docs before they become issues, and CONTRIBUTING drops its stale "questions also go to Issues" line. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The contributor docs read as if the project and the hosted site were one thing; a "(demo: …)" tag makes clear IPCheck.ing is one deployment of a toolbox anyone can self-host. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This branch had an error being deployed
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
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )