- // Copyright 2022 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package i18n
-
- import (
- "html/template"
- "io"
- )
-
- var DefaultLocales = NewLocaleStore()
-
- type Locale interface {
- // TrString translates a given key and arguments for a language
- TrString(trKey string, trArgs ...any) string
- // TrHTML translates a given key and arguments for a language, string arguments are escaped to HTML
- TrHTML(trKey string, trArgs ...any) template.HTML
- // HasKey reports if a locale has a translation for a given key
- HasKey(trKey string) bool
- }
-
- // LocaleStore provides the functions common to all locale stores
- type LocaleStore interface {
- io.Closer
-
- // SetDefaultLang sets the default language to fall back to
- SetDefaultLang(lang string)
- // ListLangNameDesc provides paired slices of language names to descriptors
- ListLangNameDesc() (names, desc []string)
- // Locale return the locale for the provided language or the default language if not found
- Locale(langName string) (Locale, bool)
- // HasLang returns whether a given language is present in the store
- HasLang(langName string) bool
- // AddLocaleByIni adds a new language to the store
- AddLocaleByIni(langName, langDesc string, source, moreSource []byte) error
- }
-
- // ResetDefaultLocales resets the current default locales
- // NOTE: this is not synchronized
- func ResetDefaultLocales() {
- if DefaultLocales != nil {
- _ = DefaultLocales.Close()
- }
- DefaultLocales = NewLocaleStore()
- }
-
- // GetLocale returns the locale from the default locales
- func GetLocale(lang string) (Locale, bool) {
- return DefaultLocales.Locale(lang)
- }
|