[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find ONE feature... #71

Merged
Virgil merged 1 commit from agent/read---spec-code-core-go-i18n-rfc-md-ful into dev 2026-04-02 01:30:30 +00:00
2 changed files with 42 additions and 0 deletions

View file

@ -129,6 +129,8 @@ func FormatOrdinal(n int) string {
lang = lang[:idx]
}
switch lang {
case "fr":
return formatFrenchOrdinal(n)
case "en":
return formatEnglishOrdinal(n)
default:
@ -136,6 +138,13 @@ func FormatOrdinal(n int) string {
}
}
func formatFrenchOrdinal(n int) string {
if n == 1 || n == -1 {
return core.Sprintf("%der", n)
}
return core.Sprintf("%de", n)
}
func formatEnglishOrdinal(n int) string {
abs := n
if abs < 0 {

View file

@ -147,6 +147,39 @@ func TestFormatOrdinal(t *testing.T) {
}
}
func TestFormatOrdinalFromLocale(t *testing.T) {
svc, err := New()
if err != nil {
t.Fatalf("New() failed: %v", err)
}
prev := Default()
SetDefault(svc)
t.Cleanup(func() {
SetDefault(prev)
})
if err := SetLanguage("fr"); err != nil {
t.Fatalf("SetLanguage(fr) failed: %v", err)
}
tests := []struct {
n int
want string
}{
{1, "1er"},
{2, "2e"},
{3, "3e"},
{11, "11e"},
}
for _, tt := range tests {
got := FormatOrdinal(tt.n)
if got != tt.want {
t.Errorf("FormatOrdinal(fr, %d) = %q, want %q", tt.n, got, tt.want)
}
}
}
func TestFormatNumberFromLocale(t *testing.T) {
svc, err := New()
if err != nil {