Settings GUI: Use language names rather than codes (#13752)

This commit is contained in:
rubenwardy 2023-08-24 00:33:23 +01:00 committed by GitHub
parent 7b3ed32003
commit a65cdbe66e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 74 additions and 3 deletions

@ -161,15 +161,17 @@ function make.enum(setting)
local value = core.settings:get(setting.name) or setting.default local value = core.settings:get(setting.name) or setting.default
self.resettable = core.settings:has(setting.name) self.resettable = core.settings:has(setting.name)
local labels = setting.option_labels or {}
local items = {} local items = {}
for i, option in ipairs(setting.values) do for i, option in ipairs(setting.values) do
items[i] = core.formspec_escape(option) items[i] = core.formspec_escape(labels[option] or option)
end end
local selected_idx = table.indexof(setting.values, value) local selected_idx = table.indexof(setting.values, value)
local fs = "label[0,0.1;" .. get_label(setting) .. "]" local fs = "label[0,0.1;" .. get_label(setting) .. "]"
fs = fs .. ("dropdown[0,0.3;%f,0.8;%s;%s;%d]"):format( fs = fs .. ("dropdown[0,0.3;%f,0.8;%s;%s;%d;true]"):format(
avail_w, setting.name, table.concat(items, ","), selected_idx, value) avail_w, setting.name, table.concat(items, ","), selected_idx, value)
return fs, 1.1 return fs, 1.1
@ -177,7 +179,8 @@ function make.enum(setting)
on_submit = function(self, fields) on_submit = function(self, fields)
local old_value = core.settings:get(setting.name) or setting.default local old_value = core.settings:get(setting.name) or setting.default
local value = fields[setting.name] local idx = tonumber(fields[setting.name]) or 0
local value = setting.values[idx]
if value == nil or value == old_value then if value == nil or value == old_value then
return false return false
end end

@ -68,6 +68,8 @@ add_page({
id = "accessibility", id = "accessibility",
title = gettext("Accessibility"), title = gettext("Accessibility"),
content = { content = {
"language",
{ heading = gettext("General") },
"font_size", "font_size",
"chat_font_size", "chat_font_size",
"gui_scaling", "gui_scaling",
@ -151,6 +153,72 @@ local function get_setting_info(name)
end end
-- These must not be translated, as they need to show in the local
-- language no matter the user's current language.
get_setting_info("language").option_labels = {
[""] = fgettext_ne("(Use system language)"),
--ar = " [ar]", blacklisted
be = "Беларуская [be]",
bg = "Български [bg]",
ca = "Català [ca]",
cs = "Česky [cs]",
cy = "Cymraeg [cy]",
da = "Dansk [da]",
de = "Deutsch [de]",
--dv = " [dv]", blacklisted
el = "Ελληνικά [el]",
en = "English [en]",
eo = "Esperanto [eo]",
es = "Español [es]",
et = "Eesti [et]",
eu = "Euskara [eu]",
fi = "Suomi [fi]",
fil = "Wikang Filipino [fil]",
fr = "Français [fr]",
gd = "Gàidhlig [gd]",
gl = "Galego [gl]",
--he = " [he]", blacklisted
--hi = " [hi]", blacklisted
hu = "Magyar [hu]",
id = "Bahasa Indonesia [id]",
it = "Italiano [it]",
ja = "日本語 [ja]",
jbo = "Lojban [jbo]",
kk = "Қазақша [kk]",
--kn = " [kn]", blacklisted
ko = "한국어 [ko]",
ky = "Kırgızca / Кыргызча [ky]",
lt = "Lietuvių [lt]",
lv = "Latviešu [lv]",
mn = "Монгол [mn]",
mr = "मराठी [mr]",
ms = "Bahasa Melayu [ms]",
--ms_Arab = " [ms_Arab]", blacklisted
nb = "Norsk Bokmål [nb]",
nl = "Nederlands [nl]",
nn = "Norsk Nynorsk [nn]",
oc = "Occitan [oc]",
pl = "Polski [pl]",
pt = "Português [pt]",
pt_BR = "Português do Brasil [pt_BR]",
ro = "Română [ro]",
ru = "Русский [ru]",
sk = "Slovenčina [sk]",
sl = "Slovenščina [sl]",
sr_Cyrl = "Српски [sr_Cyrl]",
sr_Latn = "Srpski (Latinica) [sr_Latn]",
sv = "Svenska [sv]",
sw = "Kiswahili [sw]",
--th = " [th]", blacklisted
tr = "Türkçe [tr]",
tt = "Tatarça [tt]",
uk = "Українська [uk]",
vi = "Tiếng Việt [vi]",
zh_CN = "中文 (简体) [zh_CN]",
zh_TW = "正體中文 (繁體) [zh_TW]",
}
-- See if setting matches keywords -- See if setting matches keywords
local function get_setting_match_weight(entry, query_keywords) local function get_setting_match_weight(entry, query_keywords)
local setting_score = 0 local setting_score = 0