| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
- // SPDX-License-Identifier: Apache-2.0
- package locale // import "miniflux.app/v2/internal/locale"
- import (
- "embed"
- "encoding/json"
- "fmt"
- )
- type translationDict map[string]interface{}
- type catalog map[string]translationDict
- var defaultCatalog catalog
- //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, len(AvailableLanguages()))
- for language := range AvailableLanguages() {
- defaultCatalog[language], err = loadTranslationFile(language)
- if err != nil {
- return err
- }
- }
- return nil
- }
- func loadTranslationFile(language string) (translationDict, error) {
- translationFileData, err := translationFiles.ReadFile(fmt.Sprintf("translations/%s.json", language))
- if err != nil {
- return nil, err
- }
- 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
- }
|