i18n

package
v1.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 3, 2026 License: AGPL-3.0 Imports: 3 Imported by: 0

Documentation

Overview

Package i18n provides internationalization for Lore CLI. All user-facing strings are centralized here. AI prompt directives and content signals remain in English (not part of this package).

Architecture note: catalogs are Go code (catalog_en.go, catalog_fr.go). This is appropriate for 2-4 languages. If the project reaches 5+ languages, consider migrating to resource files (JSON/TOML) with code generation, to avoid requiring Go expertise from translators.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Init

func Init(lang string)

Init sets the active language catalog. If lang is not supported, falls back silently to EN. The warning for unsupported languages (a warning for unsupported languages requires streams access).

func IsSupported

func IsSupported(lang string) bool

IsSupported checks if a language has a catalog available.

func Snapshot added in v1.1.0

func Snapshot() func()

Snapshot captures the current catalog and returns a function that restores it when called. Intended for test helpers that temporarily switch the language and want to restore whatever was active before — including non-default values set by a sibling test.

Paranoid-review fix (2026-04-11 LOW test hygiene): the previous suggestions_i18n test helper unconditionally restored to EN, silently clobbering any test that legitimately ran under FR.

Types

type AngelaMessages

type AngelaMessages struct {
	// persona.go — DraftCheck messages (user-facing suggestions)
	PersonaWhyTooListy        string
	PersonaLongParagraphs     string
	PersonaMissingVerify      string
	PersonaNoTradeoffs        string
	PersonaUxNoImpact         string
	PersonaBusinessNoValue    string
	PersonaAPINoExample       string // api-designer: endpoints listed without a request example
	PersonaAPIMissingErrors   string // api-designer: endpoints without HTTP error responses
	PersonaAPIMissingRequired string // api-designer: DTO fields without a required/optional column

	// draft.go — completeness checks
	DraftMissingWhat    string
	DraftMissingWhy     string
	DraftMissingAltWarn string
	DraftMissingAltInfo string
	DraftMissingImpact  string
	DraftBodyTooShort   string
	DraftBodyExceedsMax string
	DraftAddScope       string
	DraftAddTags        string
	DraftAddRelated     string
	DraftWhyTooBrief    string

	// coherence.go
	CoherencePossibleDup      string // args: filename, tags
	CoherenceRelatedFound     string // args: filename, tags
	CoherenceSameScopeOverlap string // args: scope, filename
	CoherenceSameScopeRelated string // args: scope, filename, type
	CoherenceMentionedBody    string // arg: filename

	// diff.go
	DiffChangeHeader    string // args: current, total
	DiffApplyPrompt     string
	DiffApplyBothPrompt string
	DiffInputEnded      string // arg: remaining
	DiffHunkLocation    string // args: startLine, lineCount
	DiffAutoAccept      string // args: desc, label
	DiffAutoReject      string // args: desc
	DiffAutoNeedsReview string // args: current, total
	DiffAutoSummary     string // args: accepted, rejected, asked
	DiffWarnNetLoss     string // args: deleted, net
	DiffWarnSection     string // arg: names
	DiffWarnSections    string // args: count, names
	DiffWarnCodeBlocks  string // arg: count
	DiffWarnTableRows   string // arg: count

	// --for mode
	UIForPrompt    string // arg: audience
	UIForNewFile   string
	UIForOverwrite string

	// review.go
	ReviewParseError string
	ReviewMinDocs    string // arg: count

	// style.go
	StyleUnknownRule string // arg: key

	// polish — hallucination check
	PolishHallucinationWarn   string // no args
	PolishHallucinationReject string // no args
	PolishHallucinationHint   string // no args

	// review — differential summary
	ReviewDiffSummary  string // args: new, persisting, regressed, resolved
	ReviewDiffResolved string // no args

	// Runtime UI — polish/review progress messages
	UIMode              string // arg: audience
	UITokenEstimate     string // args: inputTokens, maxOutput, timeout
	UIPersonas          string // arg: personaList
	UIQuality           string // arg: score
	UIMultiPass         string // arg: sectionCount
	UITokenStats        string // args: input, output, model
	UISpeedFast         string // arg: speed
	UISpeedSlow         string // arg: speed
	UISpeedNormal       string // arg: speed
	UICost              string // arg: cost
	UICostCheap         string
	UICostExpensive     string
	UITruncated         string // args: used, limit
	UITruncatedHint     string
	UITimeoutErr        string // args: timeout, elapsed
	UITimeoutHint1      string
	UITimeoutHint2      string
	UIRewrittenFor      string // args: audience, filename
	UIOriginalUnchanged string
	UIChangesQuality    string // args: count, scoreBefore, scoreAfter, delta
	UIInputExceedsMax   string // args: inputTokens, maxOutput
	UIInputExceedsHint  string // arg: suggested max_tokens
	UIEstimatedCost     string // arg: cost
	UIContextWarning    string // args: model, needed, limit
	UIContextClose      string // args: pct, model, needed, limit
	UITimeoutWarning    string // args: timeout, model, speed, seconds, tokens
	UILowOutput         string
	UILocalModelTip     string
	UIReviewPreflight   string // args: docCount, inputTokens, maxOutput, timeout

	// Preview report (lore angela review --preview)
	UIReviewPreviewHeader           string // "Review preview" + separator rule
	UIReviewPreviewCorpus           string // args: count (int), size (string like "245 KB")
	UIReviewPreviewModel            string // arg: model name
	UIReviewPreviewPersonasBaseline string // "baseline (no personas)"
	UIReviewPreviewPersonasList     string // args: count (int), pluralSuffix (string "s" or ""), comma-separated names
	UIReviewPreviewAudienceNone     string // "(none)"
	UIReviewPreviewAudience         string // arg: audience
	UIReviewPreviewTokens           string // args: input tokens (string formatted), max output tokens (string formatted)
	UIReviewPreviewContextWindow    string // arg: pct (float)
	UIReviewPreviewCost             string // arg: USD amount (string formatted)
	UIReviewPreviewCostUnknown      string // "unknown (model pricing not registered)"
	UIReviewPreviewExpectedTime     string // arg: seconds (int)
	UIReviewPreviewWarningsHeader   string // just "Warnings:" heading, no args
	UIReviewPreviewAbort            string // arg: abort reason

	// Persona opt-in prompt & UX
	UIPersonaConfiguredHeader        string // args: count (int), pluralSuffix (string), comma-separated names
	UIPersonaCostDeltaBaselineLabel  string // arg: rendered line (string)
	UIPersonaCostDeltaAugmentedLabel string // args: count (int), pluralSuffix, rendered line
	UIPersonaAddContext              string // explanation line, no args
	UIPersonaPromptQuestion          string // "   Use them for this review? [y/N] "
	UIPersonaNonTTYInfo              string // args: icon (string), comma-separated names
	UIPersonaCostBaselineZero        string // "~$0 (zero-token baseline)"
	UIPersonaCostDeltaUndefined      string // arg: USD amount — used when baseline cost is 0
	UIPersonaCostDeltaPct            string // arg: percent (int) — like "(+18%)"
	UIPersonaCostSameRoughly         string // "(~same cost)"
	UIPersonaCostUnknown             string // "(cost unknown — model pricing not registered)"
	UIPersonaInputTokens             string // arg: formatted token count — "~%s input tokens"
	UIPersonaCostInline              string // arg: USD — " · ~$%s"

	// Review report header + per-finding + TUI
	UIReviewAngleHeader         string // args: count (int), pluralSuffix
	UIReviewAnglePersonaRow     string // args: icon, displayName, expertise
	UIReviewFlaggedBy           string // arg: comma-separated "icon name" pairs
	UIReviewAgreementConcur     string // args: concurrentCount (int), poolSize (int)
	UIReviewAgreementLineFormat string // arg: agreement tag — "(%d/%d)"

	// Story 8-21 — duplicate-section arbitration prompts (TTY).
	// Used by internal/angela/polish_arbitrate.go.
	ArbitrateGroupHeader      string // args: groupIdx (int), total (int), heading (%q), occCount (int)
	ArbitrateInvalidChoice    string // no args
	ArbitratePrompt           string // no args — "  → "
	ArbitratePreviewLine      string // args: idx (int), line (int), words (int)
	ArbitratePreviewTruncated string // args: shown (int), total (int)
	ArbitrateOptKeepBoth      string // no args
	ArbitrateOptKeepAll       string // arg: count (int)
	ArbitrateOptsLine         string // arg: bothOrAll label (already localized)
	ArbitrateOccurrenceBanner string // args: i (int), total (int), line (int)
	ArbitrateEmptyPreview     string // no args — "(empty section)"
}

AngelaMessages holds user-facing strings for the Angela AI reviewer. NOTE: PromptDirective, Principles, and ContentSignals remain in English.

type CmdMessages

type CmdMessages struct {
	// root.go
	RootShort         string
	RootConfigErrHint string // arg: error
	StoreUnavailWarn  string // arg: error

	// init.go
	InitShort              string
	InitNotGitRepo         string
	InitNotGitRepoHint     string
	InitAlreadyInitialized string
	InitCreatedLore        string
	InitCreatedLorerc      string
	InitCreatedLorercLocal string
	InitModifiedGitignore  string
	InitWarningPrefix      string
	InitHooksPathWarn      string // arg: path
	InitInstalledHook      string
	InitNotInPathWarn      string
	InitInstallHint        string
	InitAddToPathHint      string
	InitBashPathHint       string
	InitZshPathHint        string
	InitFishPathHint       string
	InitPowerShellHint     string
	InitTagline            string
	InitDemoPrompt         string
	InitDemoWarning        string

	// new.go
	NewUse            string
	NewShort          string
	NewCommitNotFound string // arg: hash
	NewCommitFlagDesc string

	// list.go
	ListShort        string
	ListLong         string
	ListParseWarning string // arg: error
	ListNoDocsOfType string // arg: type
	ListNoDocsYet    string
	ListTagSingular  string
	ListTagPlural    string

	// show.go
	ShowUse            string
	ShowShort          string
	ShowLong           string
	ShowTypeExclusive  string
	ShowUsageHint      string
	ShowTryHint        string
	ShowNoMatchKeyword string // arg: keyword
	ShowTryAll         string
	ShowNoDocsFound    string
	ShowSelectPrompt   string

	// delete.go
	DeleteUse           string
	DeleteShort         string
	DeleteInvalidName   string // arg: filename
	DeleteNotFound      string // arg: filename
	DeleteRefWarning    string
	DeleteRefNotUpdated string
	DeleteForceRequired string
	DeleteConfirmPrompt string // arg: filename
	DeleteCancelled     string

	// note.go
	NoteShort string

	// pending.go
	PendingShort        string
	PendingLong         string
	PendingListShort    string
	PendingResolveShort string
	PendingSkipShort    string
	PendingFlagQuiet    string
	PendingFlagCommit   string
	PendingFlagType     string
	PendingFlagWhat     string
	PendingFlagWhy      string
	PendingFlagAlt      string
	PendingFlagImpact   string
	PendingNoPending    string
	PendingResolveHint  string
	PendingSkipHint     string
	PendingNoPendingRes string
	PendingInvalidSel   string // args: input, max
	PendingSelectPrompt string // arg: max
	PendingInvalidSelIn string // args: input, max
	PendingSkipError    string // arg: error
	PendingListHeader   string

	// status.go
	StatusShort             string
	StatusLong              string
	StatusHeader            string // arg: branch/path
	StatusHookNotInstalled  string
	StatusHookNotInstHint   string
	StatusHookInstalled     string
	StatusHookLabel         string
	StatusDocsDocumented    string // arg: count
	StatusDocsPending       string // arg: count
	StatusDocsLabel         string
	StatusExpressLine       string // args: pct, express, total, altPct
	StatusExpressUnreadable string // arg: count
	StatusExpressLabel      string
	StatusAngelaMode        string // arg: mode
	StatusAngelaNoApiKey    string
	StatusAngelaProvider    string // arg: provider
	StatusAngelaDocsReview  string // arg: count
	StatusAngelaAllClean    string
	StatusAngelaLabel       string
	StatusReviewNoIssues    string
	StatusReviewFindings    string // args: count, age
	StatusReviewLabel       string
	StatusHealthAllGood     string
	StatusHealthIssues      string // arg: count
	StatusHealthLabel       string
	StatusTagline           string
	StatusReviewAgeJustNow  string
	StatusReviewAgeHours    string // arg: hours
	StatusReviewAgeDays     string // arg: days
	StatusFlagQuiet         string
	StatusFlagBadge         string
	StatusCollecting        string // spinner label

	// hook.go
	HookShort             string
	HookInstallShort      string
	HookInstallHooksPathW string // arg: path
	HookInstallCannotAuto string
	HookInstallManualHint string
	HookInstallVerb       string
	HookUninstallShort    string
	HookUninstallVerb     string
	HookPostCommitShort   string

	// demo.go
	DemoShort         string
	DemoConsentPrompt string
	DemoSimCommit     string // arg: message
	DemoTypePrompt    string // arg: value
	DemoTypeConfirm   string // arg: value
	DemoWhatPrompt    string // arg: value
	DemoWhatConfirm   string // arg: value
	DemoWhyPrompt     string // arg: value
	DemoIndexWarning  string // arg: error
	DemoSimShow       string
	DemoShowType      string // arg: type
	DemoShowWhat      string // arg: what
	DemoShowWhy       string // arg: why
	DemoShowDate      string // arg: date
	DemoShowCommit    string // arg: hash
	DemoShowStatus    string
	DemoTagline       string

	// release.go
	ReleaseShort            string
	ReleaseNotInitMsg       string
	ReleaseNotInitHint      string
	ReleaseNoTagsError      string
	ReleaseNoTagsHint       string
	ReleaseParseWarning     string // arg: error
	ReleaseNoChanges        string
	ReleaseNoChangesHint    string
	ReleaseChangelogHdrWarn string
	ReleaseIndexRegenWarn   string // arg: error
	ReleaseCollecting       string // spinner label
	ReleaseGenerating       string // spinner label

	// doctor.go
	DoctorShort          string
	DoctorConfigCheck    string
	DoctorConfigOK       string
	DoctorActiveValues   string
	DoctorValueNotSet    string
	DoctorDocsCheck      string
	DoctorNoneFound      string
	DoctorConfigOKInline string
	DoctorHealthAllGood  string
	DoctorIssuesFound    string // arg: count
	DoctorManualFix      string // args: issue, hint
	DoctorFixSummary     string // args: fixed, remaining
	DoctorStoreRebuilt   string // arg: docCount
	DoctorStoreSkipped   string // arg: count
	DoctorStoreCommits   string // arg: count
	DoctorScanning       string // spinner label
	DoctorScanned        string // args: docCount, checks
	DoctorFixing         string // spinner label
	DoctorRebuilding     string // spinner label

	// Story 8-22 — malformed-frontmatter suggestion block.
	DoctorSuggestedActions    string // no args
	DoctorMalformedRestore    string // no args — "Restore from a polish backup:"
	DoctorMalformedEditManual string // no args — "Edit the file manually to repair the YAML block."

	// Story 8-23 — prune output.
	DoctorPruneHeader     string // no args — "Pruning generated artifacts:"
	DoctorPruneRowOK      string // args: feature (str), removed (int), kept (int), human-bytes (str)
	DoctorPruneRowErr     string // args: feature (str), err (str)
	DoctorPruneTotal      string // arg: human-bytes (str)
	DoctorPruneDryRunFoot string // no args — "(dry-run: no files changed)"

	// config_cmd.go
	ConfigShort          string
	SetKeyShort          string
	SetKeyUnknownProv    string // args: provider, supported
	SetKeyPrompt         string // arg: provider
	SetKeyStored         string // arg: provider
	DeleteKeyShort       string
	DeleteKeyUnknownProv string // args: provider, supported
	DeleteKeyDeleted     string // arg: provider
	ListKeysShort        string
	ListKeysStored       string // arg: provider
	ListKeysNotSet       string // arg: provider

	// lore_check.go
	LoreCheckNotInit     string
	LoreCheckNotInitHint string

	// angela.go
	AngelaShort                  string
	AngelaDraftShort             string
	AngelaDraftNoFile            string
	AngelaDraftNotFound          string // arg: filename
	AngelaDraftCorpusWarn        string // arg: error
	AngelaDraftNoSuggestions     string
	AngelaDraftHeader            string // arg: filename
	AngelaDraftScoreLine         string // args: score, label
	AngelaDraftSuggCount         string // arg: count
	AngelaDraftAllNoDocs         string
	AngelaDraftAllHeader         string // arg: count
	AngelaDraftAllSugg           string // args: count, score
	AngelaDraftAllSuggWarn       string // args: count, warnings, score
	AngelaDraftAllSummary        string // args: needAttention, total, suggestions
	AngelaDraftAllVerboseHint    string // hint about --verbose flag when warnings exist
	AngelaDraftAllWarningsHeader string // shown before inline warning list
	AngelaDraftDiffSummary       string // args: new, persisting, resolved — differential mode summary line
	AngelaDraftResolvedHeader    string // header shown before the resolved-since-last-run list

	// angela_polish.go
	AngelaPolishShort       string
	AngelaPolishNotFound    string // arg: filename
	AngelaPolishNoProvider  string
	AngelaPolishNoChanges   string
	AngelaPolishNoneApplied string
	AngelaPolishIndexWarn   string // arg: error
	AngelaPolishVerb        string // arg: filename
	AngelaPolishProgress    string // arg: filename — shown before API call
	AngelaPolishDone        string // shown after API call completes
	AngelaPolishStep1       string // arg: filename — step 1/3 preparing
	AngelaPolishStep2       string // arg: filename — step 2/3 calling AI (spinner)
	AngelaPolishStep2Done   string // step 2/3 done
	AngelaPolishStep3       string // step 3/3 computing diff

	// Polish safety nets (backup + dry-run)
	AngelaPolishBackupCreated   string // arg: path
	AngelaPolishBackupPruneWarn string // arg: error
	AngelaPolishBackupDisabled  string
	AngelaPolishRestoreShort    string
	AngelaPolishRestoreNoBackup string // arg: filename
	AngelaPolishRestoreOK       string // args: filename, stamp
	AngelaPolishRestoreListHdr  string // arg: filename
	AngelaPolishRestoreListRow  string // args: stamp, pretty time
	AngelaPolishRestoreUnknown  string // arg: stamp

	// Story 8-21 — structural integrity messages (cmd-level, user-facing).
	AngelaPolishCorruptSource        string // no args — title of refusal
	AngelaPolishCorruptSourceHint    string // arg: filename — pointer to doctor/restore
	AngelaPolishLeakedFMStripped     string // args: bytes (int), line (int)
	AngelaPolishDryRunDuplicates     string // arg: group count
	AngelaPolishDuplicateHeadingRow  string // args: heading (%q), count (int)
	AngelaPolishArbitrateAbortMsg    string // arg: group count
	AngelaPolishArbitrateRefusedMsg  string // arg: group count
	AngelaPolishArbitrateRefusedHint string // no args — "Re-run in a TTY, or use --arbitrate-rule=…"

	// angela_review.go
	AngelaReviewShort      string
	AngelaReviewNoProvider string
	AngelaReviewCorpusNote string // arg: count
	AngelaReviewCacheWarn  string // arg: error
	AngelaReviewHdrPartial string // args: analyzed, total
	AngelaReviewHdrFull    string // arg: count
	AngelaReviewCoherent   string
	AngelaReviewFindingSum string // args: count, severity
	AngelaReviewMinDocs    string // args: minRequired, currentCount
	AngelaReviewParseErr   string
	AngelaReviewProgress   string // arg: count — shown before API call
	AngelaReviewDone       string // shown after API call completes
	AngelaReviewStep1      string // arg: count — step 1/2 preparing summaries
	AngelaReviewStep2      string // arg: count — step 2/2 calling AI (spinner)
	AngelaReviewStep2Done  string // step 2/2 done

	// Evidence-required findings rejection output
	AngelaReviewRejectedCount string // arg: count
	AngelaReviewRejectedLine  string // args: title, reason
	AngelaPolishModified      string

	// Error messages for angela review command
	AngelaReviewErrFormatRequiresPreview    string // static error, no args
	AngelaReviewErrMutuallyExclusive        string // arg: comma-separated flag names
	AngelaReviewErrUnknownPersonas          string // arg: comma-separated names
	AngelaReviewErrUnknownConfiguredPersona string // arg: comma-separated names
	AngelaReviewErrUseConfiguredNoManual    string // static error, no args
	AngelaReviewErrUnknownFormat            string // arg: format value

	// Badge hints (status, init, draft)
	BadgeHintStatus     string // shown at end of lore status dashboard
	BadgeHintInit       string // shown after lore init
	BadgeHintDraftClean string // shown when draft --all finds zero suggestions

	// Synthesizer cmd strings
	SynthDryRunFooter      string // --synthesizer-dry-run footer
	SynthApplyDone         string // args: count, filename
	SynthApplyStatusChange string // args: old, new
	SynthApplyNone         string // args: filename
	SynthDryRunHeader      string // args: filename, count
	SynthDryRunProposal    string // args: i, total, name, key
	ConsultHeader          string // args: file, icon, name, expertise
	ConsultNoSuggestion    string // arg: name
	ConsultListTitle       string
	ConsultListUsage       string
	StatusCoverage         string // arg: percent

	// decision.go
	DecisionShort           string
	DecisionDiffWarn        string // arg: error
	DecisionCommitLabel     string // arg: hash
	DecisionSubjectLabel    string // arg: subject
	DecisionScoreLabel      string // arg: score
	DecisionActionLabel     string // arg: action
	DecisionConfidenceLabel string // arg: confidence
	DecisionSignalsHeader   string
	DecisionPrefillHeader   string
	DecisionPrefillWhat     string // arg: what
	DecisionPrefillWhy      string // args: why, confidence
	DecisionStoreUnavail    string

	// completion.go
	CompletionShort string
	CompletionLong  string

	// root.go — language warnings
	UnsupportedLangWarn string // arg: lang

	// show.go — deprecation
	ShowAllDeprecated string

	// upgrade.go
	UpgradeShort         string
	UpgradeChecking      string
	UpgradeAlreadyLatest string // arg: version
	UpgradeNewVersion    string // args: current, latest
	UpgradeDownloading   string // arg: version
	UpgradeVerifying     string
	UpgradeChecksumFail  string
	UpgradeInstalling    string
	UpgradeSuccess       string // arg: version
	UpgradeHomebrew      string // arg: command
	UpgradeGoInstall     string // arg: command
	UpgradePermissionErr string // arg: path
	UpgradeNetworkErr    string
	UpgradeAPIErr        string // arg: error
	UpgradeNoRelease     string
	UpgradeSkipDevBuild  string
	UpgradeVersionFlag   string
	UpgradeVersionNotFnd string // arg: version

	// check_update.go
	CheckUpdateShort      string
	CheckUpdateUpToDate   string // arg: version
	CheckUpdateAvail      string // args: current, latest
	CheckUpdateHint       string
	CheckUpdatePreRelease string
	CheckUpdateChecking   string // spinner label

	// angela draft root (cmd/angela.go)
	AngelaDraftFlagAll            string
	AngelaDraftFlagVerbose        string
	AngelaDraftFlagFormat         string
	AngelaDraftFlagFailOn         string
	AngelaDraftFlagStrict         string
	AngelaDraftFlagSeverity       string
	AngelaDraftFlagDiffOnly       string
	AngelaDraftFlagResetState     string
	AngelaDraftFlagPersonasMode   string
	AngelaDraftFlagManualPersonas string
	AngelaDraftFlagPersona        string
	AngelaDraftFlagInteractive    string
	AngelaDraftFlagAutofix        string
	AngelaDraftFlagDryRun         string
	AngelaDraftFlagSynthesizers   string
	AngelaDraftFlagNoSynthesizers string

	// angela polish (cmd/angela_polish.go)
	AngelaPolishFlagDryRun         string
	AngelaPolishFlagYes            string
	AngelaPolishFlagFor            string
	AngelaPolishFlagAuto           string
	AngelaPolishFlagIncremental    string
	AngelaPolishFlagFull           string
	AngelaPolishFlagHalluStrict    string
	AngelaPolishFlagForce          string
	AngelaPolishFlagInteractive    string
	AngelaPolishFlagSynthesizers   string
	AngelaPolishFlagNoSynthesizers string
	AngelaPolishFlagSynthDryRun    string
	AngelaPolishFlagSynthesize     string
	AngelaPolishFlagSetStatus      string
	AngelaPolishFlagPersona        string
	AngelaPolishFlagArbitrateRule  string
	AngelaPolishFlagVerbose        string

	// angela polish restore (cmd/angela_polish_restore.go)
	AngelaPolishRestoreFlagTimestamp string
	AngelaPolishRestoreFlagList      string

	// angela review (cmd/angela_review.go)
	AngelaReviewFlagQuiet                 string
	AngelaReviewFlagVerbose               string
	AngelaReviewFlagFor                   string
	AngelaReviewFlagFilter                string
	AngelaReviewFlagAll                   string
	AngelaReviewFlagDiffOnly              string
	AngelaReviewFlagInteractive           string
	AngelaReviewFlagSynthesizers          string
	AngelaReviewFlagNoSynthesizers        string
	AngelaReviewFlagPersona               string
	AngelaReviewFlagNoPersonas            string
	AngelaReviewFlagUseConfiguredPersonas string
	AngelaReviewFlagPreview               string
	AngelaReviewFlagFormat                string

	// angela review ignore / log (cmd/angela_review_ignore.go + log.go)
	AngelaReviewIgnoreFlagReason string
	AngelaReviewLogFlagFormat    string

	// decision (cmd/decision.go)
	DecisionFlagExplain     string
	DecisionFlagCalibration string

	// delete (cmd/delete.go)
	DeleteFlagForce string

	// doctor (cmd/doctor.go)
	DoctorFlagFix          string
	DoctorFlagQuiet        string
	DoctorFlagConfig       string
	DoctorFlagRebuildStore string
	DoctorFlagPrune        string
	DoctorFlagDryRun       string

	// init (cmd/init.go)
	InitFlagNoDemo string

	// list (cmd/list.go)
	ListFlagType  string
	ListFlagQuiet string

	// release (cmd/release.go)
	ReleaseFlagFrom    string
	ReleaseFlagTo      string
	ReleaseFlagVersion string
	ReleaseFlagQuiet   string

	// show (cmd/show.go)
	ShowFlagType     string
	ShowFlagAfter    string
	ShowFlagAll      string
	ShowFlagQuiet    string
	ShowFlagFeature  string
	ShowFlagDecision string
	ShowFlagBugfix   string
	ShowFlagRefactor string
	ShowFlagNote     string
}

CmdMessages holds strings for CLI commands (cmd/ package). Each field documents its format args in a comment when applicable.

type DecisionMessages

type DecisionMessages struct {
	// calibration.go — report labels
	CalibrationTitle        string
	CalibrationTotalCommits string
	CalibrationAutoSkipped  string // args: count, pct
	CalibrationSuggestSkip  string
	CalibrationAskReduced   string
	CalibrationAskFull      string
	CalibrationQualityHdr   string
	CalibrationFalseNegRate string // arg: rate
	CalibrationFalsePosRate string // arg: rate
	CalibrationAskFullDoc   string // arg: rate
	CalibrationAutoSkipRate string // arg: rate
}

DecisionMessages holds strings for calibration report and signal reasons.

type EngagementMessages

type EngagementMessages struct {
	Milestone3  string
	Milestone8  string
	Milestone21 string
	Milestone55 string

	// Star prompt
	StarPrompt string // "Enjoying Lore? Star us → ..."
}

EngagementMessages holds milestone reinforcement messages. These are the Fibonacci milestone messages (3, 8, 21, 55).

type Lang

type Lang string

Lang represents a supported language.

const (
	EN Lang = "en"
	FR Lang = "fr"
)

func SupportedLanguages

func SupportedLanguages() []Lang

SupportedLanguages returns the list of languages with available catalogs. Phase A: EN only. Phase B adds FR.

type Messages

type Messages struct {
	Cmd        CmdMessages
	Workflow   WorkflowMessages
	UI         UIMessages
	Angela     AngelaMessages
	Engagement EngagementMessages
	Decision   DecisionMessages
	Shared     SharedMessages
	Notify     NotifyMessages
}

Messages is the root catalog containing all user-facing strings organized by functional domain. Each sub-struct is defined in its own file (messages_cmd.go, etc.) for maintainability.

func T

func T() *Messages

T returns the active Messages catalog. Never returns nil. Safe to call from any goroutine, including before Init().

type NotifyMessages

type NotifyMessages struct {
	// Dialog titles and labels
	DialogTitle     string // "Lore"
	DialogTitleWhat string // "Lore — What"
	DialogTitleWhy  string // "Lore — Why"

	// Dialog prompts
	PromptType string // "Type:"
	PromptWhat string // "What did you change?"
	PromptWhy  string // "Why did you make this change?"

	// Dialog buttons
	ButtonCancel string // "Cancel"
	ButtonNext   string // "Next"
	ButtonSave   string // "Save"
	ButtonSkip   string // "Skip"

	// Simple notification
	SimplePending string // "lore pending — %s"

	// Dialog error handling
	ErrorPrefix  string // "Lore error: "
	ErrorResolve string // "Failed to resolve pending"
	ButtonOK     string // "OK"

	// Pending resolve
	NoMatchingPending string // "No pending commit matching %q"
}

NotifyMessages holds strings for OS notification dialogs (internal/notify/).

type SharedMessages

type SharedMessages struct {
	// config/config.go
	ConfigInsecurePerms string // args: path, mode, path
	ConfigUnknownWarn   string // arg: warning

	// config/validate.go
	ConfigNotSet          string
	ValidateUnknownDidYou string // args: field, file, suggestion
	ValidateUnknownField  string // args: field, file

	// ai/provider.go
	AINoKeyAnthropic   string
	AINoKeyOpenAI      string
	AIUnknownProvider  string // args: provider, supported
	AIKeychainNotAvail string
	AIPlaintextKeyWarn string // arg: provider

	// storage/index.go
	IndexTitle           string
	IndexAutoGenNote     string
	IndexTableHeaderDoc  string
	IndexTableHeaderType string
	IndexTableHeaderDate string
	IndexTableHeaderStat string
	IndexTableHeaderTags string
	IndexDocSingular     string
	IndexDocPlural       string
	IndexTotalCount      string // args: count, unit

	// storage/release.go
	ReleaseSectionFeatures  string
	ReleaseSectionBugFixes  string
	ReleaseSectionRefactors string
	ReleaseSectionDecisions string
	ReleaseSectionNotes     string
	ReleaseTitle            string // arg: version
}

SharedMessages holds strings used across multiple packages.

type UIMessages

type UIMessages struct {
	// logo.go
	Tagline string // "your code knows what. lore knows why."

	// error.go
	ErrorPrefix string // "Error:"
	RunPrefix   string // "Run:"

	// verb.go
	VerbDeleted string // "Deleted"

	// list.go
	ListTruncated   string // "... and %d more. Refine your search." (arg: remaining count)
	ListPromptRange string // "Please enter a number between 1 and %d." (arg: max)
	ListNoInput     string // "no input"

	// prompt.go
	PromptWithDefault string // "? %s [%s]: " (args: question, default)
	PromptNoDefault   string // "? %s\n> " (arg: question)

	// readme_bridge.go
	ReadmeBridgeTitle   string // "About .lore/"
	ReadmeBridgeIntro   string // "This repository is documented with [Lore](...)."
	ReadmeBridgeDesc    string // "Lore captures the *why* behind code changes..."
	ReadmeBridgeLink    string // "Learn more: ..."
	ReadmeBridgeGenNote string // "This file was generated by `lore init`..."

	// interactive fallback
	InteractiveFallback string // "interactive mode not available in non-TTY, falling back to standard output"

	// badge.go
	BadgeCoverageDetail  string // "Coverage: %d%% (%d eligible: %d documented, %d skipped, %d gaps)"
	BadgeNoEligible      string // "no eligible commits"
	BadgeSkipRateWarning string // "⚠ Skip rate: %d%% (%d/%d eligible commits skipped)"
	BadgeSkipRateHint    string // "A high skip rate may indicate documentation avoidance."
	BadgeLabelDocumented string // "documented" / "documente"
}

UIMessages holds strings for terminal UI components (internal/ui/ package).

type WorkflowMessages

type WorkflowMessages struct {
	// reactive.go
	SuggestSkipPrompt     string // "Document this commit? [y/N] "
	SuggestSkipSkipped    string // "Skipped."
	AmendUpdatingExisting string // arg: filename
	AmendNoDocCreatingNew string // arg: ref

	// detection.go
	MergeCommitSkipMsg string
	AutoSkipMsg        string // args: score, subject

	// proactive.go
	AlreadyDocumented string
	CreateAnother     string // "Create another document? [y/N] "
	AmendChoicePrompt string // "[U]pdate existing / [C]reate new / [S]kip? "
	AmendQuestion0    string // "Amend detected. Document this change? [Y/n] "

	// common.go
	IndexWarning string // arg: error

	// questions.go
	QuestionWhyLabel          string
	QuestionAlternativesLabel string
	QuestionImpactLabel       string

	// resolve.go
	ResolveHeader         string
	ResolveCommitLabel    string // arg: hash
	ResolveMessageLabel   string // arg: message
	ResolveDateLabel      string // arg: date
	ResolveCheckCommitW   string // args: hash, error
	ResolveCommitGoneW    string // arg: hash
	ResolveDeletePendingW string // arg: error

	// pending.go
	PendingReadWarn  string // args: path, error
	PendingParseWarn string // args: path, error

	// pending.go relative time
	RelativeAgeJustNow string
	RelativeAgeMinutes string // arg: count
	RelativeAge1Hour   string
	RelativeAgeHours   string // arg: count
	RelativeAge1Day    string
	RelativeAgeDays    string // arg: count
	RelativeAge1Week   string
	RelativeAgeWeeks   string // arg: count
	RelativeAge1Month  string
	RelativeAgeMonths  string // arg: count

	// preflight.go
	PreflightFailed       string // arg: error
	PreflightPendingSaved string

	// line_renderer.go
	LineRendererConfirm     string // args: label, value
	LineRendererExpressSkip string // arg: count
}

WorkflowMessages holds strings for workflow orchestration (internal/workflow/).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL