diff options
author | Thomas Voss <mail@thomasvoss.com> | 2025-07-24 19:43:33 +0200 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2025-07-24 19:43:33 +0200 |
commit | 38ea635d3e41b3347544fb4598b962e5e12d0399 (patch) | |
tree | b12e3d2e7d3ff66201cd82ca082d6dc7705167ca /src/i18n/i18n.go | |
parent | 31b7026f461017b1c30a9dd6bd3dd000b76e92fd (diff) |
Add all localization info
Diffstat (limited to 'src/i18n/i18n.go')
-rw-r--r-- | src/i18n/i18n.go | 363 |
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") |