shopping: UI strings all English
Picker dialog, hamburger menu entry, phone page and help section
still had German labels from the original request ("Einkaufsliste",
"keine aktive Liste", etc.). The rest of the app's UI is English,
so align everything here: menu entry is "Shopping list", dialog +
phone page copy translated, help references match. Trigger tags
stay as-is — both #einkauf and #shopping keep working so users with
either convention aren't disrupted.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
d925070a36
commit
b9d610b612
5 files changed
+23
-22
No files matched your search
@@ -56,14 +56,14 @@ function openDialog() {
|
||||
panel.innerHTML = `
|
||||
<div class="flex items-center gap-3 px-5 py-3 border-b border-t-border">
|
||||
<i class="ph ph-shopping-cart text-t-accent text-base"></i>
|
||||
<h2 class="font-pixel text-sm text-t-accent flex-1">Einkaufsliste</h2>
|
||||
<h2 class="font-pixel text-sm text-t-accent flex-1">Shopping list</h2>
|
||||
<button class="shopping-picker-close text-t-muted hover:text-t-danger"><i class="ph ph-x text-sm"></i></button>
|
||||
</div>
|
||||
<div class="px-5 py-3 text-[11px] text-t-muted leading-relaxed">
|
||||
Karten mit Tag <span class="text-t-accent">#einkauf</span> oder
|
||||
<span class="text-t-accent">#shopping</span> können als aktive Liste fürs Telefon
|
||||
gewählt werden. Nur eine ist aktiv; ihr Body wird bei jedem Sync zum Relay geschickt
|
||||
und unter <span class="text-t-accent">/shopping</span> angezeigt.
|
||||
Cards tagged with <span class="text-t-accent">#einkauf</span> or
|
||||
<span class="text-t-accent">#shopping</span> can be set as the active list for the
|
||||
phone. Only one is active at a time; its body is pushed to the relay on every sync
|
||||
and shown at <span class="text-t-accent">/shopping</span>.
|
||||
</div>
|
||||
<div class="flex-1 overflow-y-auto px-2 py-2" id="shopping-picker-list"></div>
|
||||
<div class="flex items-center gap-2 px-5 py-3 border-t border-t-border">
|
||||
@@ -91,8 +91,9 @@ function openDialog() {
|
||||
|
||||
if (!candidates.length) {
|
||||
list.innerHTML = `<div class="px-4 py-6 text-center text-[11px] text-t-dim">
|
||||
Keine Karten mit dem Tag <span class="text-t-accent">#einkauf</span>.
|
||||
Lege eine Karte mit Checkbox-Items an und gib ihr den Tag, dann erscheint sie hier.
|
||||
No cards tagged <span class="text-t-accent">#einkauf</span> or
|
||||
<span class="text-t-accent">#shopping</span> yet. Create a card with checkbox items
|
||||
and add one of those tags — it'll show up here.
|
||||
</div>`;
|
||||
} else {
|
||||
list.innerHTML = candidates.map(c => {
|
||||
@@ -104,14 +105,14 @@ function openDialog() {
|
||||
<input type="radio" name="shopping-active" value="${id}" ${checked} style="margin-top:3px;">
|
||||
<div class="flex-1 min-w-0">
|
||||
<div class="text-xs text-t-bright font-pixel">${esc(c.title || '(untitled)')}</div>
|
||||
<div class="text-[10px] text-t-dim font-pixel mt-0.5">${open} offen · ${items.length} gesamt</div>
|
||||
<div class="text-[10px] text-t-dim font-pixel mt-0.5">${open} open · ${items.length} total</div>
|
||||
</div>
|
||||
</label>`;
|
||||
}).join('');
|
||||
// "No active" option — explicit way to stop syncing.
|
||||
list.insertAdjacentHTML('beforeend', `<label class="flex items-center gap-3 px-3 py-2 border-t border-t-border hover:bg-t-raised cursor-pointer mt-2">
|
||||
<input type="radio" name="shopping-active" value="" ${currentActive ? '' : 'checked'} style="margin-top:0;">
|
||||
<span class="text-[11px] text-t-muted italic">(keine aktive Liste)</span>
|
||||
<span class="text-[11px] text-t-muted italic">(no active list)</span>
|
||||
</label>`);
|
||||
list.querySelectorAll('input[name="shopping-active"]').forEach(r => {
|
||||
r.addEventListener('change', () => { selectedId = r.value || null; });
|
||||
|
||||
Reference in new issue
Block a user