Translate the dashboard to English; euro instead of lira

Dashboard: every label, empty state, chart legend and the login page
are English; numbers and dates use en-GB (24-hour clock, day-month
dates), money is EUR, percentages read 80% instead of %80, durations
"2 h 05 min". html lang is en. Server version 1.1.2; manifests pin it.

Car app: the charging tab's price suffix, validation message and total
cost use € instead of ₺.

Checked by rendering all three pages from the 1.1.2 image against
InfluxDB 2.7.12 in podman.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLJfZQZeAKAwSqViTmLzki
This commit is contained in:
2026-10-17 14:39:59 +02:00
co-authored by Claude Opus 5.5
parent 818442db08
commit 538d03361d
14 changed files with 119 additions and 119 deletions
+31 -31
View File
@@ -18,9 +18,9 @@ export default async function ConsumptionPage({
if (!installationId || days.length === 0) {
return (
<Shell active="/consumption" title="Tüketim">
<Shell active="/consumption" title="Consumption">
<div className="card">
<p className="empty">Günlük tüketim kaydı yok. Araç günü kapattığında yüklenir.</p>
<p className="empty">No daily consumption records yet. The car uploads them as it drives.</p>
</div>
</Shell>
);
@@ -46,14 +46,14 @@ export default async function ConsumptionPage({
return (
<Shell
active="/consumption"
title="Tüketim"
subtitle={hasFilter ? (validFilter ? isoDate(selectedDate!) : "Seçili gün kaydı yok") : `${days.length} günlük kayıt`}
title="Consumption"
subtitle={hasFilter ? (validFilter ? isoDate(selectedDate!) : "No record for the selected day") : `${days.length} day${days.length === 1 ? "" : "s"} recorded`}
>
{/* Date filter */}
<section className="card">
<form className="filter-form" method="get" action="/consumption">
<label className="filter-label" htmlFor="date-picker">
Tarihe göre filtrele
Filter by date
</label>
<div className="filter-row">
<input
@@ -65,9 +65,9 @@ export default async function ConsumptionPage({
max={maxDate}
className="field date-input"
/>
<button className="button filter-button" type="submit">Filtrele</button>
<button className="button filter-button" type="submit">Filter</button>
{hasFilter && (
<Link className="filter-clear" href="/consumption">Temizle</Link>
<Link className="filter-clear" href="/consumption">Clear</Link>
)}
</div>
</form>
@@ -80,60 +80,60 @@ export default async function ConsumptionPage({
{validFilter && selected ? (
<>
<div className="tiles">
<Tile label="Mesafe" value={num(selected.day.km)} unit="km" tone="teal" />
<Tile label="Enerji" value={precise(selected.day.kwh)} unit="kWh" tone="gold" />
<Tile label="Ortalama" value={efficiency(selected.day.kwh, selected.day.km)} tone="teal" />
<Tile label="Distance" value={num(selected.day.km)} unit="km" tone="teal" />
<Tile label="Energy" value={precise(selected.day.kwh)} unit="kWh" tone="gold" />
<Tile label="Average" value={efficiency(selected.day.kwh, selected.day.km)} tone="teal" />
<Tile
label="Ortalama hız"
label="Average speed"
value={selected.day.hours > 0 ? num(selected.day.km / selected.day.hours) : "—"}
unit={selected.day.hours > 0 ? "km/h" : undefined}
/>
</div>
<div className="rows">
<Row label="Sürüş süresi" value={duration(selected.day.hours * 3600)} />
<Row label="Doluluk düşüşü" value={`%${num(selected.day.socDrop)}`} />
<Row label="O gün sonu ömür boyu" value={selected.lifetime ? `${num(selected.lifetime.km)} km` : "—"} />
<Row label="Driving time" value={duration(selected.day.hours * 3600)} />
<Row label="SoC used" value={`${num(selected.day.socDrop)}%`} />
<Row label="Lifetime at end of day" value={selected.lifetime ? `${num(selected.lifetime.km)} km` : "—"} />
</div>
</>
) : (
<p className="empty">Bu tarih için tüketim kaydı yok.</p>
<p className="empty">No consumption recorded for this date.</p>
)}
</section>
)}
<div className="tiles">
<Tile label="Toplam mesafe" value={num(total.km)} unit="km" tone="teal" />
<Tile label="Toplam enerji" value={precise(total.kwh)} unit="kWh" tone="gold" />
<Tile label="Ortalama" value={efficiency(total.kwh, total.km)} tone="teal" />
<Tile label="Total distance" value={num(total.km)} unit="km" tone="teal" />
<Tile label="Total energy" value={precise(total.kwh)} unit="kWh" tone="gold" />
<Tile label="Average" value={efficiency(total.kwh, total.km)} tone="teal" />
<Tile
label="Ortalama hız"
label="Average speed"
value={total.hours > 0 ? num(total.km / total.hours) : "—"}
unit={total.hours > 0 ? "km/h" : undefined}
/>
</div>
<section className="card">
<h2 className="card-title">Günlük enerji</h2>
<h2 className="card-title">Daily energy</h2>
<DailyEnergyChart days={chartDays} />
</section>
<section className="card">
<h2 className="card-title">Verimlilik eğilimi</h2>
<h2 className="card-title">Efficiency trend</h2>
<EfficiencyChart days={chartDays} />
</section>
<section className="card">
<h2 className="card-title">Ömür boyu</h2>
<h2 className="card-title">Lifetime</h2>
<div className="rows">
<Row label="Mesafe" value={`${num(lifetime.km)} km`} />
<Row label="Enerji" value={`${precise(lifetime.kwh)} kWh`} />
<Row label="Ortalama" value={efficiency(lifetime.kwh, lifetime.km)} />
<Row label="Sürüş süresi" value={duration(lifetime.hours * 3600)} />
<Row label="Distance" value={`${num(lifetime.km)} km`} />
<Row label="Energy" value={`${precise(lifetime.kwh)} kWh`} />
<Row label="Average" value={efficiency(lifetime.kwh, lifetime.km)} />
<Row label="Driving time" value={duration(lifetime.hours * 3600)} />
</div>
</section>
<section className="card">
<h2 className="card-title">Gün gün</h2>
<h2 className="card-title">Day by day</h2>
<ul className="list">
{table.map((day) => {
const isSelected = hasFilter && day.date === selectedDate;
@@ -158,13 +158,13 @@ export default async function ConsumptionPage({
</summary>
<div className="session-body">
<div className="rows">
<Row label="Sürüş süresi" value={duration(day.day.hours * 3600)} />
<Row label="Driving time" value={duration(day.day.hours * 3600)} />
<Row
label="Ortalama hız"
label="Average speed"
value={day.day.hours > 0 ? `${num(day.day.km / day.day.hours)} km/h` : "—"}
/>
<Row label="Doluluk düşüşü" value={`%${num(day.day.socDrop)}`} />
<Row label="O gün sonu ömür boyu" value={day.lifetime ? `${num(day.lifetime.km)} km` : "—"} />
<Row label="SoC used" value={`${num(day.day.socDrop)}%`} />
<Row label="Lifetime at end of day" value={day.lifetime ? `${num(day.lifetime.km)} km` : "—"} />
</div>
</div>
</details>