Skip to content

Commit 55dfe06

Browse files
committed
Optimize a map creation
No need to re-create the AvailableLanguages map every time the function is called, we can simply change it to a global variable. Unfortunately, this means that it's now writeable, instead of being immutable, but as nothing is ever modifying it, it's ok.
1 parent b5e28b4 commit 55dfe06

File tree

6 files changed

+28
-30
lines changed

6 files changed

+28
-30
lines changed

internal/locale/catalog.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
type translationDict map[string]interface{}
1313
type catalog map[string]translationDict
1414

15-
var defaultCatalog = make(catalog, len(AvailableLanguages()))
15+
var defaultCatalog = make(catalog, len(AvailableLanguages))
1616

1717
//go:embed translations/*.json
1818
var translationFiles embed.FS
@@ -31,7 +31,7 @@ func GetTranslationDict(language string) (translationDict, error) {
3131
func LoadCatalogMessages() error {
3232
var err error
3333

34-
for language := range AvailableLanguages() {
34+
for language := range AvailableLanguages {
3535
defaultCatalog[language], err = loadTranslationFile(language)
3636
if err != nil {
3737
return err

internal/locale/catalog_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func TestLoadCatalog(t *testing.T) {
3939
}
4040

4141
func TestAllKeysHaveValue(t *testing.T) {
42-
for language := range AvailableLanguages() {
42+
for language := range AvailableLanguages {
4343
messages, err := loadTranslationFile(language)
4444
if err != nil {
4545
t.Fatalf(`Unable to load translation messages for language %q`, language)
@@ -71,7 +71,7 @@ func TestMissingTranslations(t *testing.T) {
7171
t.Fatal(`Unable to parse reference language`)
7272
}
7373

74-
for language := range AvailableLanguages() {
74+
for language := range AvailableLanguages {
7575
if language == refLang {
7676
continue
7777
}
@@ -90,7 +90,7 @@ func TestMissingTranslations(t *testing.T) {
9090
}
9191

9292
func TestTranslationFilePluralForms(t *testing.T) {
93-
for language := range AvailableLanguages() {
93+
for language := range AvailableLanguages {
9494
messages, err := loadTranslationFile(language)
9595
if err != nil {
9696
t.Fatalf(`Unable to load translation messages for language %q`, language)

internal/locale/locale.go

+20-22
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,24 @@ var numberOfPluralFormsPerLanguage = map[string]int{
2424
"id_ID": 1,
2525
}
2626

27-
// AvailableLanguages returns the list of available languages.
28-
func AvailableLanguages() map[string]string {
29-
return map[string]string{
30-
"en_US": "English",
31-
"es_ES": "Español",
32-
"fr_FR": "Français",
33-
"de_DE": "Deutsch",
34-
"pl_PL": "Polski",
35-
"pt_BR": "Português Brasileiro",
36-
"zh_CN": "简体中文",
37-
"zh_TW": "繁體中文",
38-
"nl_NL": "Nederlands",
39-
"ru_RU": "Русский",
40-
"it_IT": "Italiano",
41-
"ja_JP": "日本語",
42-
"tr_TR": "Türkçe",
43-
"el_EL": "Ελληνικά",
44-
"fi_FI": "Suomi",
45-
"hi_IN": "हिन्दी",
46-
"uk_UA": "Українська",
47-
"id_ID": "Bahasa Indonesia",
48-
}
27+
// AvailableLanguages is the list of available languages.
28+
var AvailableLanguages = map[string]string{
29+
"en_US": "English",
30+
"es_ES": "Español",
31+
"fr_FR": "Français",
32+
"de_DE": "Deutsch",
33+
"pl_PL": "Polski",
34+
"pt_BR": "Português Brasileiro",
35+
"zh_CN": "简体中文",
36+
"zh_TW": "繁體中文",
37+
"nl_NL": "Nederlands",
38+
"ru_RU": "Русский",
39+
"it_IT": "Italiano",
40+
"ja_JP": "日本語",
41+
"tr_TR": "Türkçe",
42+
"el_EL": "Ελληνικά",
43+
"fi_FI": "Suomi",
44+
"hi_IN": "हिन्दी",
45+
"uk_UA": "Українська",
46+
"id_ID": "Bahasa Indonesia",
4947
}

internal/ui/settings_show.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (h *handler) showSettingsPage(w http.ResponseWriter, r *http.Request) {
7171
"MarkAsReadOnlyOnPlayerCompletion": form.MarkAsReadOnlyOnPlayerCompletion,
7272
})
7373
view.Set("themes", model.Themes())
74-
view.Set("languages", locale.AvailableLanguages())
74+
view.Set("languages", locale.AvailableLanguages)
7575
view.Set("timezones", timezones)
7676
view.Set("menu", "settings")
7777
view.Set("user", user)

internal/ui/settings_update.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (h *handler) updateSettings(w http.ResponseWriter, r *http.Request) {
4444
view := view.New(h.tpl, r, sess)
4545
view.Set("form", settingsForm)
4646
view.Set("themes", model.Themes())
47-
view.Set("languages", locale.AvailableLanguages())
47+
view.Set("languages", locale.AvailableLanguages)
4848
view.Set("timezones", timezones)
4949
view.Set("menu", "settings")
5050
view.Set("user", loggedUser)

internal/validator/user.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func validateTheme(theme string) *locale.LocalizedError {
155155
}
156156

157157
func validateLanguage(language string) *locale.LocalizedError {
158-
languages := locale.AvailableLanguages()
158+
languages := locale.AvailableLanguages
159159
if _, found := languages[language]; !found {
160160
return locale.NewLocalizedError("error.invalid_language")
161161
}

0 commit comments

Comments
 (0)