1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-08-11 17:51:01 +00:00
miniflux-v2/internal/locale/printer.go

56 lines
1.3 KiB
Go
Raw Normal View History

// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
package locale // import "miniflux.app/v2/internal/locale"
import "fmt"
// Printer converts translation keys to language-specific strings.
type Printer struct {
language string
}
// NewPrinter creates a new Printer instance for the given language.
func NewPrinter(language string) *Printer {
return &Printer{language}
}
func (p *Printer) Print(key string) string {
2025-07-06 00:28:00 +02:00
if dict, err := getTranslationDict(p.language); err == nil {
if str, ok := dict.singulars[key]; ok {
return str
}
}
return key
}
// Printf is like fmt.Printf, but using language-specific formatting.
func (p *Printer) Printf(key string, args ...any) string {
translation := key
2025-07-06 00:28:00 +02:00
if dict, err := getTranslationDict(p.language); err == nil {
if str, ok := dict.singulars[key]; ok {
translation = str
}
}
return fmt.Sprintf(translation, args...)
}
// Plural returns the translation of the given key by using the language plural form.
func (p *Printer) Plural(key string, n int, args ...any) string {
2025-07-06 00:28:00 +02:00
dict, err := getTranslationDict(p.language)
if err != nil {
return key
}
if choices, found := dict.plurals[key]; found {
index := getPluralForm(p.language, n)
if len(choices) > index {
return fmt.Sprintf(choices[index], args...)
}
}
return key
}