AdGuardHome/internal/home/i18n.go
Dimitry Kolyshev cd76a30790 Pull request: 613-dark-theme vol.1
Merge in DNS/adguard-home from 613-dark-theme to master

Squashed commit of the following:

commit 1a286e9677c0bc9203ca0249edf0dd6f64db1609
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Jan 13 22:37:36 2023 +0700

    home: imp docs

commit 45c4fac401788a1c5f0ab56869b13cce33690145
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Jan 13 18:35:58 2023 +0700

    home: imp docs

commit e23b375611deb9562dfccaf45632e5235d06f96c
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Jan 13 15:05:41 2023 +0700

    home: imp docs

commit 85d2cd6250c4bb558c9a9bd5066044f07827c263
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Jan 13 15:04:28 2023 +0700

    home: imp code

commit bb00bfda90a809929639b241d7bbc31e7e6dfcb8
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Jan 13 09:37:41 2023 +0700

    home: imp docs

commit 140fd0768ea2a0da7618a1f5ef6c53ff415753aa
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Jan 13 09:34:27 2023 +0700

    home: imp code

commit 4e866b7c5b4d2ff777e4917cb91b34a4bbb5e995
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Thu Jan 12 19:11:33 2023 +0700

    home: imp docs

commit 0f13248165ef920d1dadb2e057b65cc3189a4b31
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Thu Jan 12 18:53:57 2023 +0700

    home: imp code

commit e04181f5fcd67cdd08fbf8a7c56933195999af31
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Thu Jan 12 18:48:44 2023 +0700

    home: imp code

commit bb9989bb9ab54bfb734880dcb999804c6f2ccda8
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Thu Jan 12 12:09:20 2023 +0700

    all: control/profile API
2023-01-13 19:24:17 +03:00

98 lines
1.6 KiB
Go

package home
import (
"encoding/json"
"net/http"
"github.com/AdguardTeam/AdGuardHome/internal/aghhttp"
"github.com/AdguardTeam/golibs/log"
"github.com/AdguardTeam/golibs/stringutil"
)
// TODO(a.garipov): Get rid of a global or generate from .twosky.json.
var allowedLanguages = stringutil.NewSet(
"ar",
"be",
"bg",
"cs",
"da",
"de",
"en",
"es",
"fa",
"fi",
"fr",
"hr",
"hu",
"id",
"it",
"ja",
"ko",
"nl",
"no",
"pl",
"pt-br",
"pt-pt",
"ro",
"ru",
"si-lk",
"sk",
"sl",
"sr-cs",
"sv",
"th",
"tr",
"uk",
"vi",
"zh-cn",
"zh-hk",
"zh-tw",
)
// languageJSON is the JSON structure for language requests and responses.
type languageJSON struct {
Language string `json:"language"`
}
// TODO(d.kolyshev): Deprecated, remove it later.
func handleI18nCurrentLanguage(w http.ResponseWriter, r *http.Request) {
log.Printf("home: language is %s", config.Language)
_ = aghhttp.WriteJSONResponse(w, r, &languageJSON{
Language: config.Language,
})
}
// TODO(d.kolyshev): Deprecated, remove it later.
func handleI18nChangeLanguage(w http.ResponseWriter, r *http.Request) {
if aghhttp.WriteTextPlainDeprecated(w, r) {
return
}
langReq := &languageJSON{}
err := json.NewDecoder(r.Body).Decode(langReq)
if err != nil {
aghhttp.Error(r, w, http.StatusInternalServerError, "reading req: %s", err)
return
}
lang := langReq.Language
if !allowedLanguages.Has(lang) {
aghhttp.Error(r, w, http.StatusBadRequest, "unknown language: %q", lang)
return
}
func() {
config.Lock()
defer config.Unlock()
config.Language = lang
log.Printf("home: language is set to %s", lang)
}()
onConfigModified()
aghhttp.OK(w)
}