Skip to content

Commit e49142f

Browse files
cagnuleinclaude
andcommitted
Fix tile translations and settings search i18n
- homeform.cpp: use tr() instead of QStringLiteral for all tile display names so they are picked up by Qt's translation system - settings.qml: add computeTranslatedName() that probes qsTranslate() across all QML contexts to show translated names in search results and include them in the search haystack (enables searching in user language) - Run lupdate to register the 58 new tile-name strings across all .ts files, ready for ollama translation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 31f80a3 commit e49142f

32 files changed

Lines changed: 66248 additions & 138151 deletions

src/homeform.cpp

Lines changed: 59 additions & 59 deletions
Large diffs are not rendered by default.

src/settings.qml

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ import Qt.labs.platform 1.1
119119
items.push(pages[k])
120120
}
121121

122+
for (var t = 0; t < items.length; t++)
123+
items[t]._translatedName = computeTranslatedName(items[t])
124+
122125
searchableSettings = items
123126
if (settingsSearchActive && settingsSearchPending && settingsSearchDebounceTimer.running)
124127
return
@@ -130,10 +133,32 @@ import Qt.labs.platform 1.1
130133
return entry && entry.key && entry.key.indexOf("tile_") === 0 && entry.key.lastIndexOf("_order") === entry.key.length - 6
131134
}
132135

136+
// Try to find a translation for a catalog entry name by probing common QML contexts.
137+
// Returns the translated string if found, or the original name as fallback.
138+
function computeTranslatedName(entry) {
139+
var name = entry.name || entry.key
140+
if (!name) return name
141+
var contexts = [
142+
"settings", "settings-tiles", "settings-tts",
143+
"settings-shortcuts", "settings-treadmill-inclination-override",
144+
"homeform"
145+
]
146+
for (var i = 0; i < contexts.length; i++) {
147+
// Try with trailing colon (common label pattern "Foo:")
148+
var withColon = qsTranslate(contexts[i], name + ":")
149+
if (withColon !== name + ":") return withColon.replace(/:$/, "").trim()
150+
// Try without colon
151+
var plain = qsTranslate(contexts[i], name)
152+
if (plain !== name) return plain
153+
}
154+
return name
155+
}
156+
133157
function searchableText(entry) {
134158
var parts = [
135159
entry.key,
136160
entry.name,
161+
entry._translatedName,
137162
entry.description,
138163
entry.parent,
139164
parentDisplayName(entry),
@@ -176,7 +201,8 @@ import Qt.labs.platform 1.1
176201
function parentDisplayName(entry) {
177202
if (!entry.parent)
178203
return qsTr("General")
179-
return catalogEntryNameByKey(entry.parent)
204+
var name = catalogEntryNameByKey(entry.parent)
205+
return computeTranslatedName({name: name, key: entry.parent}) || name
180206
}
181207

182208
function updateFilteredSettings() {
@@ -1835,7 +1861,7 @@ import Qt.labs.platform 1.1
18351861
spacing: 2
18361862

18371863
Label {
1838-
text: entry.name || entry.key
1864+
text: entry._translatedName || entry.name || entry.key
18391865
font.bold: true
18401866
wrapMode: Text.WordWrap
18411867
Layout.fillWidth: true

0 commit comments

Comments
 (0)