summaryrefslogtreecommitdiffci
path: root/locale/localization.go
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'locale/localization.go')
-rw-r--r--locale/localization.go116
1 files changed, 116 insertions, 0 deletions
diff --git a/locale/localization.go b/locale/localization.go
new file mode 100644
index 0000000..9022b50
--- /dev/null
+++ b/locale/localization.go
@@ -0,0 +1,116 @@
+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"`
+ GlobalMap GlobalMapConfig `yaml:"GlobalMap" json:"GlobalMap"`
+ HomePage HomePageConfig `yaml:"HomePage" json:"HomePage"`
+ Metadata MetadataConfig `yaml:"Metadata" json:"Metadata"`
+ Mail MailConfig `yaml:"Mail" json:"Mail"`
+ UserProfile UserProfileConfig `yaml:"UserProfile" json:"UserProfile"`
+}
+
+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"`
+}
+
+type GlobalMapConfig struct {
+ Header string `yaml:"Header" json:"Header"`
+}
+
+type HomePageConfig struct {
+ Header string `yaml:"Header" json:"Header"`
+ Contacts string `yaml:"Contacts" json:"Contacts"`
+ DidYouKnowThat string `yaml:"DidYouKnowThat" json:"DidYouKnowThat"`
+ SidebarDescription string `yaml:"SidebarDescription" json:"SidebarDescription"`
+ HomePageDescription string `yaml:"HomePageDescription" json:"HomePageDescription"`
+ BlogSearchDescription string `yaml:"BlogSearchDescription" json:"BlogSearchDescription"`
+ MarkerMapDescription string `yaml:"MarkerMapDescription" json:"MarkerMapDescription"`
+ ThemeSwitchDescription string `yaml:"ThemeSwitchDescription" json:"ThemeSwitchDescription"`
+ Hymn1 string `yaml:"Hymn1" json:"Hymn1"`
+ Hymn2 string `yaml:"Hymn2" json:"Hymn2"`
+ Hymn3 string `yaml:"Hymn3" json:"Hymn3"`
+ Hymn4 string `yaml:"Hymn4" json:"Hymn4"`
+}
+
+type MetadataConfig struct {
+ Action string `yaml:"Action" json:"Action"`
+ Published string `yaml:"Published" json:"Published"`
+}
+
+type MailConfig struct {
+ VerifyEmail VerifyEmailConfig `yaml:"VerifyEmail" json:"VerifyEmail"`
+ NewPost NewPostConfig `yaml:"NewPost" json:"NewPost"`
+}
+
+type VerifyEmailConfig struct {
+ Subject string `yaml:"Subject" json:"Subject"`
+ Welcome string `yaml:"Welcome" json:"Welcome"`
+ Intro string `yaml:"Intro" json:"Intro"`
+ GotoLink string `yaml:"GotoLink" json:"GotoLink"`
+ InputCode string `yaml:"InputCode" json:"InputCode"`
+ IfRandom string `yaml:"IfRandom" json:"IfRandom"`
+}
+
+type NewPostConfig struct {
+ Subject string `yaml:"Subject" json:"Subject"`
+}
+
+type UserProfileConfig struct {
+ Header string `yaml:"Header" json:"Header"`
+ EmailHeader string `yaml:"EmailHeader" json:"EmailHeader"`
+ VerificationCodeHeader string `yaml:"VerificationCodeHeader" json:"VerificationCodeHeader"`
+ TypeEmail string `yaml:"TypeEmail" json:"TypeEmail"`
+ SendCodeButton string `yaml:"SendCodeButton" json:"SendCodeButton"`
+ VerifyButton string `yaml:"VerifyButton" json:"VerifyButton"`
+ VerificationCodeSent string `yaml:"VerificationCodeSent" json:"VerificationCodeSent"`
+ DelayTilVerification string `yaml:"DelayTilVerification" json:"DelayTilVerification"`
+ FailedEmailRender string `yaml:"FailedEmailRender" json:"FailedEmailRender"`
+ VerificationCodeSendingError string `yaml:"VerificationCodeSendingError" json:"VerificationCodeSendingError"`
+ EmailAlreadyValidated string `yaml:"EmailAlreadyValidated" json:"EmailAlreadyValidated"`
+ EmailTaken string `yaml:"EmailTaken" json:"EmailTaken"`
+ EmailEmpty string `yaml:"EmailEmpty" json:"EmailEmpty"`
+ VerificationSuccess string `yaml:"VerificationSuccess" json:"VerificationSuccess"`
+ VerificationFailed string `yaml:"VerificationFailed" json:"VerificationFailed"`
+ VerificationEmpty string `yaml:"VerificationEmpty" json:"VerificationEmpty"`
+}
+
+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
+}