From ea1f83df820baa14dcd904d581ab2bb0976b172d Mon Sep 17 00:00:00 2001 From: SayaAndy Date: Mon, 11 Aug 2025 16:52:48 +0700 Subject: feat: redo blog catalogue with same layout as blog-page feat: implement localization feat: filters and sort in blog catalogue feat: one-page search feat: ram theme refactor: generate blog catalogue and blog page out of one layout refactor: have one layout for both mobile & desktop (aspect ratio dependable) refactor: use own template manager to use templates separately --- locale/localization.en.yaml | 9 ++++++++ locale/localization.go | 50 +++++++++++++++++++++++++++++++++++++++++++++ locale/localization.ru.yaml | 9 ++++++++ 3 files changed, 68 insertions(+) create mode 100644 locale/localization.en.yaml create mode 100644 locale/localization.go create mode 100644 locale/localization.ru.yaml (limited to 'locale') diff --git a/locale/localization.en.yaml b/locale/localization.en.yaml new file mode 100644 index 0000000..879fce8 --- /dev/null +++ b/locale/localization.en.yaml @@ -0,0 +1,9 @@ +TagsLabel: 'Tags:' +BlogSearch: + Header: 'Blog Search' + TagsHeader: 'Tags' + OrderByHeader: 'Order by...' + TitleOrdered: 'Title' + ActionDateOrdered: 'Action Date' + PublicationDateOrdered: 'Publication Date' + ChooseAllTags: 'Choose All' diff --git a/locale/localization.go b/locale/localization.go new file mode 100644 index 0000000..d5c6b48 --- /dev/null +++ b/locale/localization.go @@ -0,0 +1,50 @@ +package locale + +import ( + "os" + + "github.com/go-playground/validator/v10" + "gopkg.in/yaml.v3" +) + +type LocaleConfig struct { + TagsLabel string `yaml:"TagsLabel" json:"TagsLabel"` + BlogSearch BlogSearchConfig `yaml:"BlogSearch" json:"BlogSearch"` +} + +type BlogSearchConfig struct { + Header string `yaml:"Header" json:"Header"` + TagsHeader string `yaml:"TagsHeader" json:"TagsHeader"` + OrderByHeader string `yaml:"OrderByHeader" json:"OrderByHeader"` + TitleOrdered string `yaml:"TitleOrdered" json:"TitleOrdered"` + ActionDateOrdered string `yaml:"ActionDateOrdered" json:"ActionDateOrdered"` + PublicationDateOrdered string `yaml:"PublicationDateOrdered" json:"PublicationDateOrdered"` + ChooseAllTags string `yaml:"ChooseAllTags" json:"ChooseAllTags"` +} + +func LoadConfig(path string, config *LocaleConfig) error { + fileBytes, err := os.ReadFile(path) + if err != nil { + return err + } + + if err = yaml.Unmarshal(fileBytes, config); err != nil { + return err + } + + return nil +} + +func InitConfig(path string) (*LocaleConfig, error) { + config := &LocaleConfig{} + if err := LoadConfig(path, config); err != nil { + return nil, err + } + + validate := validator.New(validator.WithRequiredStructEnabled()) + if err := validate.Struct(config); err != nil { + return nil, err + } + + return config, nil +} diff --git a/locale/localization.ru.yaml b/locale/localization.ru.yaml new file mode 100644 index 0000000..786665d --- /dev/null +++ b/locale/localization.ru.yaml @@ -0,0 +1,9 @@ +TagsLabel: 'Тэги:' +BlogSearch: + Header: 'Поиск по блогу' + TagsHeader: 'Тэги' + OrderByHeader: 'Упорядочить по...' + TitleOrdered: 'названию' + ActionDateOrdered: 'дате действия' + PublicationDateOrdered: 'времени публикации' + ChooseAllTags: 'Выбрать все' -- cgit v1.3.1+13