1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Add support for user-configuration language tag specification. (#1038)

Adds a new top-level configuration key called "language":

```yaml
wtf:
  langauge: "ja-JP"
```

Users can now define which BCP 47 language tag to use to format any
text or numbers that currently support localization. Defaults to
"en-CA".

Acceptible values: any BCP 47 language tag recognized by the Go
"language" package.

Good luck to you figuring out what that cannonical list is. After a
morning of trying to suss it out, I have no idea.

Signed-off-by: Chris Cummer <chriscummer@me.com>
This commit is contained in:
Chris Cummer
2020-12-29 12:14:20 -08:00
committed by GitHub
parent fd794707cd
commit d7da659b8b
5 changed files with 57 additions and 31 deletions

View File

@@ -5,7 +5,6 @@ import (
"math"
"strings"
"golang.org/x/text/language"
"golang.org/x/text/message"
"github.com/rivo/tview"
@@ -78,12 +77,10 @@ func Truncate(src string, maxLen int, withEllipse bool) string {
}
// PrettyNumber formats number as string with 1000 delimiters and, if necessary, rounds it to 2 decimals
func PrettyNumber(number float64) string {
p := message.NewPrinter(language.English)
func PrettyNumber(prtr *message.Printer, number float64) string {
if number == math.Trunc(number) {
return p.Sprintf("%.0f", number)
return prtr.Sprintf("%.0f", number)
}
return p.Sprintf("%.2f", number)
return prtr.Sprintf("%.2f", number)
}

View File

@@ -5,6 +5,8 @@ import (
"github.com/rivo/tview"
"github.com/stretchr/testify/assert"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func Test_CenterText(t *testing.T) {
@@ -45,15 +47,17 @@ func Test_Truncate(t *testing.T) {
}
func Test_PrettyNumber(t *testing.T) {
assert.Equal(t, "1,000,000", PrettyNumber(1000000))
assert.Equal(t, "1,000,000.99", PrettyNumber(1000000.99))
assert.Equal(t, "1,000,000", PrettyNumber(1000000.00))
assert.Equal(t, "100,000", PrettyNumber(100000))
assert.Equal(t, "100,000.01", PrettyNumber(100000.009))
assert.Equal(t, "10,000", PrettyNumber(10000))
assert.Equal(t, "1,000", PrettyNumber(1000))
assert.Equal(t, "1,000", PrettyNumber(1000))
assert.Equal(t, "100", PrettyNumber(100))
assert.Equal(t, "0", PrettyNumber(0))
assert.Equal(t, "0.10", PrettyNumber(0.1))
locPrinter := message.NewPrinter(language.English)
assert.Equal(t, "1,000,000", PrettyNumber(locPrinter, 1000000))
assert.Equal(t, "1,000,000.99", PrettyNumber(locPrinter, 1000000.99))
assert.Equal(t, "1,000,000", PrettyNumber(locPrinter, 1000000.00))
assert.Equal(t, "100,000", PrettyNumber(locPrinter, 100000))
assert.Equal(t, "100,000.01", PrettyNumber(locPrinter, 100000.009))
assert.Equal(t, "10,000", PrettyNumber(locPrinter, 10000))
assert.Equal(t, "1,000", PrettyNumber(locPrinter, 1000))
assert.Equal(t, "1,000", PrettyNumber(locPrinter, 1000))
assert.Equal(t, "100", PrettyNumber(locPrinter, 100))
assert.Equal(t, "0", PrettyNumber(locPrinter, 0))
assert.Equal(t, "0.10", PrettyNumber(locPrinter, 0.1))
}