2026-01-30 14:46:49 +00:00
|
|
|
// Package i18n provides internationalization for the CLI.
|
|
|
|
|
package i18n
|
|
|
|
|
|
|
|
|
|
// getCount extracts a Count value from template data.
|
|
|
|
|
func getCount(data any) int {
|
|
|
|
|
if data == nil {
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
switch d := data.(type) {
|
|
|
|
|
case map[string]any:
|
|
|
|
|
if c, ok := d["Count"]; ok {
|
|
|
|
|
return toInt(c)
|
|
|
|
|
}
|
|
|
|
|
case map[string]int:
|
|
|
|
|
if c, ok := d["Count"]; ok {
|
|
|
|
|
return c
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// toInt converts any numeric type to int.
|
|
|
|
|
func toInt(v any) int {
|
2026-01-30 18:08:33 +00:00
|
|
|
if v == nil {
|
|
|
|
|
return 0
|
|
|
|
|
}
|
2026-01-30 14:46:49 +00:00
|
|
|
switch n := v.(type) {
|
|
|
|
|
case int:
|
|
|
|
|
return n
|
|
|
|
|
case int64:
|
|
|
|
|
return int(n)
|
2026-01-30 18:03:38 +00:00
|
|
|
case int32:
|
|
|
|
|
return int(n)
|
2026-01-30 19:10:28 +00:00
|
|
|
case int16:
|
|
|
|
|
return int(n)
|
|
|
|
|
case int8:
|
|
|
|
|
return int(n)
|
|
|
|
|
case uint:
|
|
|
|
|
return int(n)
|
|
|
|
|
case uint64:
|
|
|
|
|
return int(n)
|
|
|
|
|
case uint32:
|
|
|
|
|
return int(n)
|
|
|
|
|
case uint16:
|
|
|
|
|
return int(n)
|
|
|
|
|
case uint8:
|
|
|
|
|
return int(n)
|
2026-01-30 14:46:49 +00:00
|
|
|
case float64:
|
|
|
|
|
return int(n)
|
2026-01-30 18:03:38 +00:00
|
|
|
case float32:
|
|
|
|
|
return int(n)
|
2026-01-30 14:46:49 +00:00
|
|
|
}
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// toInt64 converts any numeric type to int64.
|
|
|
|
|
func toInt64(v any) int64 {
|
2026-01-30 18:08:33 +00:00
|
|
|
if v == nil {
|
|
|
|
|
return 0
|
|
|
|
|
}
|
2026-01-30 14:46:49 +00:00
|
|
|
switch n := v.(type) {
|
|
|
|
|
case int:
|
|
|
|
|
return int64(n)
|
|
|
|
|
case int64:
|
|
|
|
|
return n
|
|
|
|
|
case int32:
|
|
|
|
|
return int64(n)
|
2026-01-30 19:10:28 +00:00
|
|
|
case int16:
|
|
|
|
|
return int64(n)
|
|
|
|
|
case int8:
|
|
|
|
|
return int64(n)
|
|
|
|
|
case uint:
|
|
|
|
|
return int64(n)
|
|
|
|
|
case uint64:
|
|
|
|
|
return int64(n)
|
|
|
|
|
case uint32:
|
|
|
|
|
return int64(n)
|
|
|
|
|
case uint16:
|
|
|
|
|
return int64(n)
|
|
|
|
|
case uint8:
|
|
|
|
|
return int64(n)
|
2026-01-30 14:46:49 +00:00
|
|
|
case float64:
|
|
|
|
|
return int64(n)
|
|
|
|
|
case float32:
|
|
|
|
|
return int64(n)
|
|
|
|
|
}
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// toFloat64 converts any numeric type to float64.
|
|
|
|
|
func toFloat64(v any) float64 {
|
2026-01-30 18:08:33 +00:00
|
|
|
if v == nil {
|
|
|
|
|
return 0
|
|
|
|
|
}
|
2026-01-30 14:46:49 +00:00
|
|
|
switch n := v.(type) {
|
|
|
|
|
case float64:
|
|
|
|
|
return n
|
|
|
|
|
case float32:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case int:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case int64:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case int32:
|
|
|
|
|
return float64(n)
|
2026-01-30 19:10:28 +00:00
|
|
|
case int16:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case int8:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case uint:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case uint64:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case uint32:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case uint16:
|
|
|
|
|
return float64(n)
|
|
|
|
|
case uint8:
|
|
|
|
|
return float64(n)
|
2026-01-30 14:46:49 +00:00
|
|
|
}
|
|
|
|
|
return 0
|
|
|
|
|
}
|