mirror of
https://github.com/miniflux/v2.git
synced 2025-07-27 17:28:38 +00:00
Use embed package for translations instead of generated files
Replace "go generate" with the new embed package.
This commit is contained in:
parent
a352aff93b
commit
5d65a85bdb
8 changed files with 103 additions and 3996 deletions
|
@ -5,6 +5,7 @@
|
|||
package locale // import "miniflux.app/locale"
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
@ -14,23 +15,41 @@ type catalog map[string]translationDict
|
|||
|
||||
var defaultCatalog catalog
|
||||
|
||||
func init() {
|
||||
//go:embed translations/*.json
|
||||
var translationFiles embed.FS
|
||||
|
||||
// LoadCatalogMessages loads and parses all translations encoded in JSON.
|
||||
func LoadCatalogMessages() error {
|
||||
var err error
|
||||
defaultCatalog = make(catalog)
|
||||
|
||||
for language, data := range translations {
|
||||
messages, err := parseTranslationDict(data)
|
||||
for language := range AvailableLanguages() {
|
||||
defaultCatalog[language], err = loadTranslationFile(language)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return err
|
||||
}
|
||||
|
||||
defaultCatalog[language] = messages
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func parseTranslationDict(data string) (translationDict, error) {
|
||||
var translations translationDict
|
||||
if err := json.Unmarshal([]byte(data), &translations); err != nil {
|
||||
return nil, fmt.Errorf("invalid translation file: %v", err)
|
||||
func loadTranslationFile(language string) (translationDict, error) {
|
||||
translationFileData, err := translationFiles.ReadFile(fmt.Sprintf("translations/%s.json", language))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return translations, nil
|
||||
|
||||
translationMessages, err := parseTranslationMessages(translationFileData)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return translationMessages, nil
|
||||
}
|
||||
|
||||
func parseTranslationMessages(data []byte) (translationDict, error) {
|
||||
var translationMessages translationDict
|
||||
if err := json.Unmarshal(data, &translationMessages); err != nil {
|
||||
return nil, fmt.Errorf(`invalid translation file: %w`, err)
|
||||
}
|
||||
return translationMessages, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue