tpl/lang: Add new localized versions of lang.FormatNumber etc.

Fixes #8820
This commit is contained in:
Bjørn Erik Pedersen
2021-07-28 12:28:52 +02:00
parent 726fe9c3c9
commit 7907d24ba1
16 changed files with 385 additions and 59 deletions

View File

@@ -3,15 +3,16 @@ package lang
import (
"testing"
translators "github.com/bep/gotranslators"
qt "github.com/frankban/quicktest"
"github.com/gohugoio/hugo/deps"
)
func TestNumFormat(t *testing.T) {
func TestNumFmt(t *testing.T) {
t.Parallel()
c := qt.New(t)
ns := New(&deps.Deps{})
ns := New(&deps.Deps{}, nil)
cases := []struct {
prec int
@@ -49,12 +50,12 @@ func TestNumFormat(t *testing.T) {
var err error
if len(cas.runes) == 0 {
s, err = ns.NumFmt(cas.prec, cas.n)
s, err = ns.FormatNumberCustom(cas.prec, cas.n)
} else {
if cas.delim == "" {
s, err = ns.NumFmt(cas.prec, cas.n, cas.runes)
s, err = ns.FormatNumberCustom(cas.prec, cas.n, cas.runes)
} else {
s, err = ns.NumFmt(cas.prec, cas.n, cas.runes, cas.delim)
s, err = ns.FormatNumberCustom(cas.prec, cas.n, cas.runes, cas.delim)
}
}
@@ -62,3 +63,45 @@ func TestNumFormat(t *testing.T) {
c.Assert(s, qt.Equals, cas.want)
}
}
func TestFormatNumbers(t *testing.T) {
c := qt.New(t)
nsNn := New(&deps.Deps{}, translators.GetTranslator("nn"))
nsEn := New(&deps.Deps{}, translators.GetTranslator("en"))
pi := 3.14159265359
c.Run("FormatNumber", func(c *qt.C) {
c.Parallel()
got, err := nsNn.FormatNumber(3, pi)
c.Assert(err, qt.IsNil)
c.Assert(got, qt.Equals, "3,142")
got, err = nsEn.FormatNumber(3, pi)
c.Assert(err, qt.IsNil)
c.Assert(got, qt.Equals, "3.142")
})
c.Run("FormatPercent", func(c *qt.C) {
c.Parallel()
got, err := nsEn.FormatPercent(3, 67.33333)
c.Assert(err, qt.IsNil)
c.Assert(got, qt.Equals, "67.333%")
})
c.Run("FormatCurrency", func(c *qt.C) {
c.Parallel()
got, err := nsEn.FormatCurrency(2, "USD", 20000)
c.Assert(err, qt.IsNil)
c.Assert(got, qt.Equals, "$20,000.00")
})
c.Run("FormatAccounting", func(c *qt.C) {
c.Parallel()
got, err := nsEn.FormatAccounting(2, "USD", 20000)
c.Assert(err, qt.IsNil)
c.Assert(got, qt.Equals, "$20,000.00")
})
}