aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/i18n/i18n.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/i18n/i18n.go')
-rw-r--r--src/i18n/i18n.go363
1 files changed, 211 insertions, 152 deletions
diff --git a/src/i18n/i18n.go b/src/i18n/i18n.go
index 3bc490f..1d44242 100644
--- a/src/i18n/i18n.go
+++ b/src/i18n/i18n.go
@@ -17,11 +17,11 @@ type Printer struct {
}
type LocaleInfo struct {
- Bcp, Name string
- Eurozone, Enabled bool
- DateFormat string
- ThousandsSeparator, DecimalSeparator rune
- MonetaryPre, MonetaryPost [2]string
+ Bcp, Name string
+ Eurozone, Enabled bool
+ DateFormat string
+ GroupSeparator, DecimalSeparator rune
+ MonetaryPre, MonetaryPost [2]string
}
type number interface {
@@ -45,166 +45,231 @@ var (
the repository root */
locales = [...]LocaleInfo{
{
- Bcp: "ca",
- Name: "Català",
- DateFormat: "2/1/2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "ca",
+ Name: "Català",
+ DateFormat: "2/1/2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "de",
- Name: "Deutsch",
- DateFormat: "2.1.2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "de",
+ Name: "Deutsch",
+ DateFormat: "2.1.2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "el",
- Name: "Ελληνικά",
- DateFormat: "2/1/2006",
- Eurozone: true,
- Enabled: true,
+ Bcp: "el",
+ Name: "Ελληνικά",
+ DateFormat: "2/1/2006",
+ Eurozone: true,
+ Enabled: true,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "en",
- Name: "English",
- DateFormat: "02/01/2006",
- Eurozone: true,
- Enabled: true,
- ThousandsSeparator: ',',
- DecimalSeparator: '.',
- MonetaryPre: [2]string{"€", "-€"},
+ Bcp: "en",
+ Name: "English",
+ DateFormat: "02/01/2006",
+ Eurozone: true,
+ Enabled: true,
+ GroupSeparator: ',',
+ DecimalSeparator: '.',
+ MonetaryPre: [2]string{"€", "-€"},
},
{
- Bcp: "es",
- Name: "Español",
- DateFormat: "2/1/2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "es",
+ Name: "Español",
+ DateFormat: "2/1/2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "et",
- Name: "Eesti",
- DateFormat: "2.1.2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "et",
+ Name: "Eesti",
+ DateFormat: "2.1.2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "fi",
- Name: "Suomi",
- DateFormat: "2.1.2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "fi",
+ Name: "Suomi",
+ DateFormat: "2.1.2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "fr",
- Name: "Français",
- DateFormat: "02/01/2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "fr",
+ Name: "Français",
+ DateFormat: "02/01/2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "ga",
- Name: "Gaeilge",
- DateFormat: "02/01/2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "ga",
+ Name: "Gaeilge",
+ DateFormat: "02/01/2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ',',
+ DecimalSeparator: '.',
+ MonetaryPre: [2]string{"€", "-€"},
},
{
- Bcp: "hr",
- Name: "Hrvatski",
- DateFormat: "02. 01. 2006.",
- Eurozone: true,
- Enabled: false,
+ Bcp: "hr",
+ Name: "Hrvatski",
+ DateFormat: "02. 01. 2006.",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "it",
- Name: "Italiano",
- DateFormat: "02/01/2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "it",
+ Name: "Italiano",
+ DateFormat: "02/01/2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "lb",
- Name: "Lëtzebuergesch",
- DateFormat: "2.1.2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "lb",
+ Name: "Lëtzebuergesch",
+ DateFormat: "2.1.2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "lt",
- Name: "Lietuvių",
- DateFormat: "2006-01-02",
- Eurozone: true,
- Enabled: false,
+ Bcp: "lt",
+ Name: "Lietuvių",
+ DateFormat: "2006-01-02",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "lv",
- Name: "Latviešu",
- DateFormat: "2.01.2006.",
- Eurozone: true,
- Enabled: false,
+ Bcp: "lv",
+ Name: "Latviešu",
+ DateFormat: "2.01.2006.",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "mt",
- Name: "Malti",
- DateFormat: "2/1/2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "mt",
+ Name: "Malti",
+ DateFormat: "2/1/2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ',',
+ DecimalSeparator: '.',
+ MonetaryPre: [2]string{"€", "-€"},
},
{
- Bcp: "nl",
- Name: "Nederlands",
- DateFormat: "2-1-2006",
- Eurozone: true,
- Enabled: true,
- ThousandsSeparator: '.',
- DecimalSeparator: ',',
- MonetaryPre: [2]string{"€ ", "€ -"},
+ Bcp: "nl",
+ Name: "Nederlands",
+ DateFormat: "2-1-2006",
+ Eurozone: true,
+ Enabled: true,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"€ ", "€ -"},
},
{
- Bcp: "pt",
- Name: "Português",
- DateFormat: "02/01/2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "pt",
+ Name: "Português",
+ DateFormat: "02/01/2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"€ ", "€ -"},
},
{
- Bcp: "sk",
- Name: "Slovenčina",
- DateFormat: "2. 1. 2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "sk",
+ Name: "Slovenčina",
+ DateFormat: "2. 1. 2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "sl",
- Name: "Slovenščina",
- DateFormat: "2. 1. 2006",
- Eurozone: true,
- Enabled: false,
+ Bcp: "sl",
+ Name: "Slovenščina",
+ DateFormat: "2. 1. 2006",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "sv",
- Name: "Svenska",
- DateFormat: "2006-01-02",
- Eurozone: true,
- Enabled: false,
+ Bcp: "sv",
+ Name: "Svenska",
+ DateFormat: "2006-01-02",
+ Eurozone: true,
+ Enabled: false,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
-
/* Non-Eurozone locales */
{
- Bcp: "bg",
- Name: "Български",
- DateFormat: "2.01.2006 г.",
- Eurozone: false, /* TODO(2026): Set to true */
- Enabled: true,
- },
- {
- Bcp: "da",
- Name: "Dansk",
- DateFormat: "02.01.2006",
- Eurozone: false,
- Enabled: false,
+ Bcp: "bg",
+ Name: "Български",
+ DateFormat: "2.01.2006 г.",
+ Eurozone: false, /* TODO(2026): Set to true */
+ Enabled: true,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
Bcp: "en-US",
@@ -214,32 +279,26 @@ var (
Enabled: false,
},
{
- Bcp: "hu",
- Name: "Magyar",
- DateFormat: "2006. 01. 02.",
- Eurozone: false,
- Enabled: false,
+ Bcp: "ro",
+ Name: "Română",
+ DateFormat: "02.01.2006",
+ Eurozone: false,
+ Enabled: false,
+ GroupSeparator: '.',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
{
- Bcp: "pl",
- Name: "Polski",
- DateFormat: "2.01.2006",
- Eurozone: false,
- Enabled: false,
- },
- {
- Bcp: "ro",
- Name: "Română",
- DateFormat: "02.01.2006",
- Eurozone: false,
- Enabled: false,
- },
- {
- Bcp: "uk",
- Name: "Yкраїнська",
- DateFormat: "02.01.2006",
- Eurozone: false,
- Enabled: false,
+ Bcp: "uk",
+ Name: "Yкраїнська",
+ DateFormat: "02.01.2006",
+ Eurozone: false,
+ Enabled: false,
+ GroupSeparator: ' ',
+ DecimalSeparator: ',',
+ MonetaryPre: [2]string{"", "-"},
+ MonetaryPost: [2]string{" €", " €"},
},
}
/* Map of language codes to printers. We do this instead of just
@@ -347,9 +406,9 @@ func sprintfGeneric(li LocaleInfo, bob *strings.Builder, v any) error {
case time.Time:
htmlesc(bob, v.(time.Time).Format(li.DateFormat))
case int:
- writeInt(bob, v.(int), li.ThousandsSeparator)
+ writeInt(bob, v.(int), li.GroupSeparator)
case float64:
- writeFloat(bob, v.(float64), li.ThousandsSeparator, li.DecimalSeparator)
+ writeFloat(bob, v.(float64), li.GroupSeparator, li.DecimalSeparator)
case string:
htmlesc(bob, v.(string))
default:
@@ -404,13 +463,13 @@ func sprintfm(li LocaleInfo, bob *strings.Builder, v any) error {
n := v.(int)
i := btoi(n >= 0)
htmlesc(bob, li.MonetaryPre[i])
- writeInt(bob, abs(n), li.ThousandsSeparator)
+ writeInt(bob, abs(n), li.GroupSeparator)
htmlesc(bob, li.MonetaryPost[i])
case float64:
n := v.(float64)
i := btoi(n >= 0)
htmlesc(bob, li.MonetaryPre[i])
- writeFloat(bob, abs(n), li.ThousandsSeparator, li.DecimalSeparator)
+ writeFloat(bob, abs(n), li.GroupSeparator, li.DecimalSeparator)
htmlesc(bob, li.MonetaryPost[i])
default:
return errors.New("TODO")