code.gitea.io/gitea@v1.19.3/modules/setting/i18n.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package setting 5 6 // defaultI18nLangNames must be a slice, we need the order 7 var defaultI18nLangNames = []string{ 8 "en-US", "English", 9 "zh-CN", "简体中文", 10 "zh-HK", "繁體中文(香港)", 11 "zh-TW", "繁體中文(台灣)", 12 "de-DE", "Deutsch", 13 "fr-FR", "Français", 14 "nl-NL", "Nederlands", 15 "lv-LV", "Latviešu", 16 "ru-RU", "Русский", 17 "uk-UA", "Українська", 18 "ja-JP", "日本語", 19 "es-ES", "Español", 20 "pt-BR", "Português do Brasil", 21 "pt-PT", "Português de Portugal", 22 "pl-PL", "Polski", 23 "bg-BG", "Български", 24 "it-IT", "Italiano", 25 "fi-FI", "Suomi", 26 "tr-TR", "Türkçe", 27 "cs-CZ", "Čeština", 28 "sv-SE", "Svenska", 29 "ko-KR", "한국어", 30 "el-GR", "Ελληνικά", 31 "fa-IR", "فارسی", 32 "hu-HU", "Magyar nyelv", 33 "id-ID", "Bahasa Indonesia", 34 "ml-IN", "മലയാളം", 35 } 36 37 func defaultI18nLangs() (res []string) { 38 for i := 0; i < len(defaultI18nLangNames); i += 2 { 39 res = append(res, defaultI18nLangNames[i]) 40 } 41 return res 42 } 43 44 func defaultI18nNames() (res []string) { 45 for i := 0; i < len(defaultI18nLangNames); i += 2 { 46 res = append(res, defaultI18nLangNames[i+1]) 47 } 48 return res 49 } 50 51 var ( 52 // I18n settings 53 Langs []string 54 Names []string 55 ) 56 57 func loadI18nFrom(rootCfg ConfigProvider) { 58 Langs = rootCfg.Section("i18n").Key("LANGS").Strings(",") 59 if len(Langs) == 0 { 60 Langs = defaultI18nLangs() 61 } 62 Names = rootCfg.Section("i18n").Key("NAMES").Strings(",") 63 if len(Names) == 0 { 64 Names = defaultI18nNames() 65 } 66 }