forked from Shinonome/dots-hyprland
translations: add setting language selection and related strings
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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": "界面语言"
|
||||
}
|
||||
Reference in New Issue
Block a user