translations: add setting language selection and related strings

This commit is contained in:
月月
2025-08-24 04:10:08 +08:00
parent 6df7482b3d
commit e6bb1a3fde
4 changed files with 78 additions and 2 deletions
+1 -1
View File
@@ -84,7 +84,7 @@ Singleton {
function getLanguageCode() {
var configLang = "auto"
try {
configLang = ConfigOptions.language.ui
configLang = Config.options.language.ui
} catch (e) {
configLang = "auto"
}
@@ -215,6 +215,7 @@ Singleton {
}
property JsonObject language: JsonObject {
property string ui: "auto" // UI language. "auto" for system locale, or specific language code like "zh_CN", "en_US"
property JsonObject translator: JsonObject {
property string engine: "auto" // Run `trans -list-engines` for available engines. auto should use google
property string targetLanguage: "auto" // Run `trans -list-all` for available languages
@@ -465,4 +465,74 @@ ContentPage {
}
}
}
ContentSection {
title: Translation.tr("Language")
ContentSubsection {
title: Translation.tr("Interface Language")
tooltip: Translation.tr("Select the language for the user interface.\n\"Auto\" will use your system's locale.")
ConfigSelectionArray {
id: languageSelector
currentValue: Config.options.language.ui
configOptionName: "language.ui"
onSelected: newValue => {
Config.options.language.ui = newValue;
reloadNotice.visible = true;
}
options: {
var baseOptions = [
{
displayName: Translation.tr("Auto (System)"),
value: "auto"
}
];
// Generate language options from available languages
// Intl.DisplayNames is not used. Show the language code with underscore replaced by hyphen.
for (var i = 0; i < Translation.availableLanguages.length; i++) {
var lang = Translation.availableLanguages[i];
var displayName = lang.replace('_', '-');
baseOptions.push({ displayName: displayName, value: lang });
}
return baseOptions;
}
}
Rectangle {
id: reloadNotice
visible: false
Layout.fillWidth: true
Layout.topMargin: 8
height: noticeText.implicitHeight + 16
radius: 8
color: Appearance.m3colors.m3secondaryContainer
border.color: Appearance.m3colors.m3outline
border.width: 1
Row {
anchors.fill: parent
anchors.margins: 8
spacing: 8
MaterialSymbol {
anchors.verticalCenter: parent.verticalCenter
text: "info"
iconSize: 20
color: Appearance.m3colors.m3onSecondaryContainer
}
StyledText {
id: noticeText
anchors.verticalCenter: parent.verticalCenter
width: parent.width - 36
text: Translation.tr("Language setting saved. Please restart the quickshell to apply the new language.")
color: Appearance.m3colors.m3onSecondaryContainer
wrapMode: Text.WordWrap
}
}
}
}
}
}
+6 -1
View File
@@ -393,5 +393,10 @@
"Lap": "计时",
"Welcome app": "欢迎应用",
"Corner style": "角落样式",
"Bar layout": "条栏布局"
"Bar layout": "条栏布局",
"Language": "语言",
"Select the language for the user interface.\n\"Auto\" will use your system's locale.": "选择用户界面的语言。\n\"自动\" 将使用系统语言环境。",
"Language setting saved. Please restart the quickshell to apply the new language.": "语言设置已保存。请重启 quickshell 以应用新语言。",
"Auto (System)": "自动(系统)",
"Interface Language": "界面语言"
}