mirror of
https://github.com/go-gitea/gitea
synced 2026-02-03 07:40:36 +00:00
Migrate from the current INI format to JSON for translations. JSON is widely supported, including by platforms such as Crowdin and Weblate.
51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
// 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
|
|
AddLocaleByJSON(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)
|
|
}
|