diff --git a/pkg/i18n/i18n.go b/pkg/i18n/i18n.go index 13849cb1..73b4b2ed 100644 --- a/pkg/i18n/i18n.go +++ b/pkg/i18n/i18n.go @@ -979,67 +979,6 @@ func (s *Service) getMessage(lang, key string) (Message, bool) { return msg, ok } -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 -} - -func toInt(v any) int { - switch n := v.(type) { - case int: - return n - case int64: - return int(n) - case float64: - return int(n) - } - return 0 -} - -func toInt64(v any) int64 { - switch n := v.(type) { - case int: - return int64(n) - case int64: - return n - case int32: - return int64(n) - case float64: - return int64(n) - case float32: - return int64(n) - } - return 0 -} - -func toFloat64(v any) float64 { - 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) - } - return 0 -} - func applyTemplate(text string, data any) string { // Quick check for template syntax if !strings.Contains(text, "{{") { diff --git a/pkg/i18n/transform.go b/pkg/i18n/transform.go new file mode 100644 index 00000000..e181432b --- /dev/null +++ b/pkg/i18n/transform.go @@ -0,0 +1,67 @@ +// 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 { + switch n := v.(type) { + case int: + return n + case int64: + return int(n) + case float64: + return int(n) + } + return 0 +} + +// toInt64 converts any numeric type to int64. +func toInt64(v any) int64 { + switch n := v.(type) { + case int: + return int64(n) + case int64: + return n + case int32: + return int64(n) + case float64: + return int64(n) + case float32: + return int64(n) + } + return 0 +} + +// toFloat64 converts any numeric type to float64. +func toFloat64(v any) float64 { + 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) + } + return 0 +}