chore: migrate to dappco.re vanity import path
Module path: forge.lthn.ai/core/go-i18n -> dappco.re/go/core/i18n Dependency: forge.lthn.ai/core/go-log -> dappco.re/go/core/log go-inference remains on forge.lthn.ai (not yet migrated). dappco.re/go/core/log uses replace directive until published. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5bc988ecf9
commit
08c78757a5
22 changed files with 33 additions and 33 deletions
|
|
@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||||
|
|
||||||
## What This Is
|
## What This Is
|
||||||
|
|
||||||
Grammar-aware internationalisation engine for Go. Module: `forge.lthn.ai/core/go-i18n`
|
Grammar-aware internationalisation engine for Go. Module: `dappco.re/go/core/i18n`
|
||||||
|
|
||||||
This is a **grammar engine** — it provides primitives for composing and reversing grammatically correct text. It is NOT a translation file manager. Consumers bring their own translations.
|
This is a **grammar engine** — it provides primitives for composing and reversing grammatically correct text. It is NOT a translation file manager. Consumers bring their own translations.
|
||||||
|
|
||||||
|
|
@ -89,6 +89,6 @@ Non-English languages must provide comprehensive JSON tables since tiers 2 and 3
|
||||||
|
|
||||||
- UK English (colour, organisation, centre)
|
- UK English (colour, organisation, centre)
|
||||||
- `go test ./...` must pass before commit
|
- `go test ./...` must pass before commit
|
||||||
- Errors use `log.E(op, msg, err)` from `forge.lthn.ai/core/go-log`, not `fmt.Errorf`
|
- Errors use `log.E(op, msg, err)` from `dappco.re/go/core/log`, not `fmt.Errorf`
|
||||||
- Conventional commits: `type(scope): description`
|
- Conventional commits: `type(scope): description`
|
||||||
- Co-Author: `Co-Authored-By: Virgil <virgil@lethean.io>`
|
- Co-Author: `Co-Authored-By: Virgil <virgil@lethean.io>`
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[](https://pkg.go.dev/forge.lthn.ai/core/go-i18n)
|
[](https://pkg.go.dev/dappco.re/go/core/i18n)
|
||||||
[](LICENSE.md)
|
[](LICENSE.md)
|
||||||
[](go.mod)
|
[](go.mod)
|
||||||
|
|
||||||
|
|
@ -6,14 +6,14 @@
|
||||||
|
|
||||||
Grammar engine for Go. Provides forward composition primitives (PastTense, Gerund, Pluralize, Article, composite progress and label functions), a `T()` translation entry point with namespace key handlers, and a reversal engine that recovers base forms and grammatical roles from inflected text. The reversal package produces `GrammarImprint` feature vectors for semantic similarity scoring, builds reference domain distributions, performs anomaly detection, and includes a 1B model pre-sort pipeline for training data classification. Consumers bring their own translation keys; this library provides the grammatical machinery.
|
Grammar engine for Go. Provides forward composition primitives (PastTense, Gerund, Pluralize, Article, composite progress and label functions), a `T()` translation entry point with namespace key handlers, and a reversal engine that recovers base forms and grammatical roles from inflected text. The reversal package produces `GrammarImprint` feature vectors for semantic similarity scoring, builds reference domain distributions, performs anomaly detection, and includes a 1B model pre-sort pipeline for training data classification. Consumers bring their own translation keys; this library provides the grammatical machinery.
|
||||||
|
|
||||||
**Module**: `forge.lthn.ai/core/go-i18n`
|
**Module**: `dappco.re/go/core/i18n`
|
||||||
**Licence**: EUPL-1.2
|
**Licence**: EUPL-1.2
|
||||||
**Language**: Go 1.25
|
**Language**: Go 1.25
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import "forge.lthn.ai/core/go-i18n"
|
import "dappco.re/go/core/i18n"
|
||||||
|
|
||||||
// Grammar primitives
|
// Grammar primitives
|
||||||
fmt.Println(i18n.PastTense("delete")) // "deleted"
|
fmt.Println(i18n.PastTense("delete")) // "deleted"
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "dappco.re/go/core/log"
|
||||||
"forge.lthn.ai/core/go-inference"
|
"forge.lthn.ai/core/go-inference"
|
||||||
log "forge.lthn.ai/core/go-log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// CalibrationSample is a single text entry for model comparison.
|
// CalibrationSample is a single text entry for model comparison.
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "dappco.re/go/core/log"
|
||||||
"forge.lthn.ai/core/go-inference"
|
"forge.lthn.ai/core/go-inference"
|
||||||
log "forge.lthn.ai/core/go-log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ClassifyStats reports metrics from a ClassifyCorpus run.
|
// ClassifyStats reports metrics from a ClassifyCorpus run.
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
go-i18n is a grammar engine for Go. It is not a translation file manager. Consumers bring their own translation keys; the library provides grammatical primitives for composing and reversing grammatically correct text across multiple languages.
|
go-i18n is a grammar engine for Go. It is not a translation file manager. Consumers bring their own translation keys; the library provides grammatical primitives for composing and reversing grammatically correct text across multiple languages.
|
||||||
|
|
||||||
Module: `forge.lthn.ai/core/go-i18n`
|
Module: `dappco.re/go/core/i18n`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ description: Grammar-aware internationalisation for Go with forward composition
|
||||||
|
|
||||||
# go-i18n Grammar Engine
|
# go-i18n Grammar Engine
|
||||||
|
|
||||||
`forge.lthn.ai/core/go-i18n` is a **grammar engine** for Go. Unlike flat key-value translation systems, it composes grammatically correct output from verbs, nouns, and articles -- and can reverse the process, decomposing inflected text back into base forms with grammatical metadata.
|
`dappco.re/go/core/i18n` is a **grammar engine** for Go. Unlike flat key-value translation systems, it composes grammatically correct output from verbs, nouns, and articles -- and can reverse the process, decomposing inflected text back into base forms with grammatical metadata.
|
||||||
|
|
||||||
This is the foundation for the Poindexter classification pipeline and the LEM scoring system.
|
This is the foundation for the Poindexter classification pipeline and the LEM scoring system.
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@ This is the foundation for the Poindexter classification pipeline and the LEM sc
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import i18n "forge.lthn.ai/core/go-i18n"
|
import i18n "dappco.re/go/core/i18n"
|
||||||
|
|
||||||
// Initialise the default service (uses embedded en.json)
|
// Initialise the default service (uses embedded en.json)
|
||||||
svc, err := i18n.New()
|
svc, err := i18n.New()
|
||||||
|
|
@ -38,7 +38,7 @@ i18n.Article("SSH") // "an"
|
||||||
```
|
```
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import "forge.lthn.ai/core/go-i18n/reversal"
|
import "dappco.re/go/core/i18n/reversal"
|
||||||
|
|
||||||
// Reverse decomposition
|
// Reverse decomposition
|
||||||
tok := reversal.NewTokeniser()
|
tok := reversal.NewTokeniser()
|
||||||
|
|
|
||||||
6
go.mod
6
go.mod
|
|
@ -1,4 +1,4 @@
|
||||||
module forge.lthn.ai/core/go-i18n
|
module dappco.re/go/core/i18n
|
||||||
|
|
||||||
go 1.26.0
|
go 1.26.0
|
||||||
|
|
||||||
|
|
@ -6,8 +6,8 @@ require golang.org/x/text v0.35.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
dappco.re/go/core v0.4.7
|
dappco.re/go/core v0.4.7
|
||||||
|
dappco.re/go/core/log v0.0.4
|
||||||
forge.lthn.ai/core/go-inference v0.1.4
|
forge.lthn.ai/core/go-inference v0.1.4
|
||||||
forge.lthn.ai/core/go-log v0.0.4
|
|
||||||
)
|
)
|
||||||
|
|
||||||
require github.com/kr/text v0.2.0 // indirect
|
require github.com/kr/text v0.2.0 // indirect
|
||||||
|
|
@ -18,3 +18,5 @@ require (
|
||||||
github.com/stretchr/testify v1.11.1
|
github.com/stretchr/testify v1.11.1
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
|
replace dappco.re/go/core/log => ../go-log
|
||||||
|
|
|
||||||
6
go.sum
6
go.sum
|
|
@ -1,9 +1,7 @@
|
||||||
forge.lthn.ai/core/go v0.3.1 h1:5FMTsUhLcxSr07F9q3uG0Goy4zq4eLivoqi8shSY4UM=
|
dappco.re/go/core v0.4.7 h1:KmIA/2lo6rl1NMtLrKqCWfMlUqpDZYH3q0/d10dTtGA=
|
||||||
forge.lthn.ai/core/go v0.3.1/go.mod h1:gE6c8h+PJ2287qNhVUJ5SOe1kopEwHEquvinstpuyJc=
|
dappco.re/go/core v0.4.7/go.mod h1:f2/tBZ3+3IqDrg2F5F598llv0nmb/4gJVCFzM5geE4A=
|
||||||
forge.lthn.ai/core/go-inference v0.1.4 h1:fuAgWbqsEDajHniqAKyvHYbRcBrkGEiGSqR2pfTMRY0=
|
forge.lthn.ai/core/go-inference v0.1.4 h1:fuAgWbqsEDajHniqAKyvHYbRcBrkGEiGSqR2pfTMRY0=
|
||||||
forge.lthn.ai/core/go-inference v0.1.4/go.mod h1:jfWz+IJX55wAH98+ic6FEqqGB6/P31CHlg7VY7pxREw=
|
forge.lthn.ai/core/go-inference v0.1.4/go.mod h1:jfWz+IJX55wAH98+ic6FEqqGB6/P31CHlg7VY7pxREw=
|
||||||
forge.lthn.ai/core/go-log v0.0.4 h1:KTuCEPgFmuM8KJfnyQ8vPOU1Jg654W74h8IJvfQMfv0=
|
|
||||||
forge.lthn.ai/core/go-log v0.0.4/go.mod h1:r14MXKOD3LF/sI8XUJQhRk/SZHBE7jAFVuCfgkXoZPw=
|
|
||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
"forge.lthn.ai/core/go-inference"
|
"forge.lthn.ai/core/go-inference"
|
||||||
_ "forge.lthn.ai/core/go-mlx" // registers Metal backend
|
_ "forge.lthn.ai/core/go-mlx" // registers Metal backend
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
"forge.lthn.ai/core/go-inference"
|
"forge.lthn.ai/core/go-inference"
|
||||||
_ "forge.lthn.ai/core/go-mlx" // registers Metal backend
|
_ "forge.lthn.ai/core/go-mlx" // registers Metal backend
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
module forge.lthn.ai/core/go-i18n/integration
|
module dappco.re/go/core/i18n/integration
|
||||||
|
|
||||||
go 1.25.5
|
go 1.25.5
|
||||||
|
|
||||||
require (
|
require (
|
||||||
forge.lthn.ai/core/go-i18n v0.0.0-00010101000000-000000000000
|
dappco.re/go/core/i18n v0.0.0-00010101000000-000000000000
|
||||||
forge.lthn.ai/core/go-inference v0.0.0
|
forge.lthn.ai/core/go-inference v0.0.0
|
||||||
forge.lthn.ai/core/go-mlx v0.0.0-00010101000000-000000000000
|
forge.lthn.ai/core/go-mlx v0.0.0-00010101000000-000000000000
|
||||||
)
|
)
|
||||||
|
|
@ -11,7 +11,7 @@ require (
|
||||||
require golang.org/x/text v0.33.0 // indirect
|
require golang.org/x/text v0.33.0 // indirect
|
||||||
|
|
||||||
replace (
|
replace (
|
||||||
forge.lthn.ai/core/go-i18n => ../
|
dappco.re/go/core/i18n => ../
|
||||||
forge.lthn.ai/core/go-inference => ../../go-inference
|
forge.lthn.ai/core/go-inference => ../../go-inference
|
||||||
forge.lthn.ai/core/go-mlx => ../../go-mlx
|
forge.lthn.ai/core/go-mlx => ../../go-mlx
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
log "forge.lthn.ai/core/go-log"
|
log "dappco.re/go/core/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FSLoader loads translations from a filesystem (embedded or disk).
|
// FSLoader loads translations from a filesystem (embedded or disk).
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package reversal
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNewImprint(t *testing.T) {
|
func TestNewImprint(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Multiplier generates deterministic grammatical variants of text
|
// Multiplier generates deterministic grammatical variants of text
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package reversal
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMultiplier_Expand(t *testing.T) {
|
func TestMultiplier_Expand(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"math"
|
"math"
|
||||||
"slices"
|
"slices"
|
||||||
|
|
||||||
log "forge.lthn.ai/core/go-log"
|
log "dappco.re/go/core/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ClassifiedText is a text sample with a domain label (from 1B model or ground truth).
|
// ClassifiedText is a text sample with a domain label (from 1B model or ground truth).
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"math"
|
"math"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
func initI18n(t *testing.T) *Tokeniser {
|
func initI18n(t *testing.T) *Tokeniser {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package reversal
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestRoundTrip_ForwardThenReverse — go-i18n composed output → reversal → verify correct tokens
|
// TestRoundTrip_ForwardThenReverse — go-i18n composed output → reversal → verify correct tokens
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ package reversal
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
// VerbMatch holds the result of a reverse verb lookup.
|
// VerbMatch holds the result of a reverse verb lookup.
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package reversal
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
i18n "forge.lthn.ai/core/go-i18n"
|
i18n "dappco.re/go/core/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setup(t *testing.T) {
|
func setup(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
log "forge.lthn.ai/core/go-log"
|
log "dappco.re/go/core/log"
|
||||||
"golang.org/x/text/language"
|
"golang.org/x/text/language"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
log "dappco.re/go/core/log"
|
||||||
"forge.lthn.ai/core/go-inference"
|
"forge.lthn.ai/core/go-inference"
|
||||||
log "forge.lthn.ai/core/go-log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ArticlePair holds a noun and its proposed article for validation.
|
// ArticlePair holds a noun and its proposed article for validation.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue