A dead simple time tracker that keeps everything in local storage. Next.js, no accounts and no server.
handcodedlocalstoragenextjsreactself-hostedserverlesstime-trackingtimer
1import LocalizedStrings from "react-localization";
2
3const strings = new LocalizedStrings({
4 en: {
5 pageTitle: "Summary",
6 empty: "Your log is empty.",
7 emptyHint:
8 "Start the timer and add a tagged note to see your stats aggregate here.",
9 // Metric tile labels
10 statTotal: "Total Hours",
11 statEntries: "Entries",
12 statToday: "Today",
13 statWeek: "This Week",
14 statLongest: "Longest Session",
15 statTags: "Unique Tags",
16 // Section labels
17 sectionPerTag: "Hours per tag",
18 sectionPerDay: "Hours per day · last 14 days",
19 // Chart legend
20 numHours: "hours",
21 // Unit suffixes / fallback
22 hoursSuffix: "h",
23 minsSuffix: "m",
24 none: "—",
25 },
26 jp: {
27 pageTitle: "概要",
28 empty: "ログは空です。",
29 emptyHint: "タイマーを開始してタグ付きメモを追加すると、統計がここに表示されます。",
30 statTotal: "合計時間",
31 statEntries: "エントリ数",
32 statToday: "今日",
33 statWeek: "今週",
34 statLongest: "最長セッション",
35 statTags: "タグ数",
36 sectionPerTag: "タグごとの時間",
37 sectionPerDay: "日ごとの時間 · 過去14日間",
38 numHours: "時間",
39 hoursSuffix: "時",
40 minsSuffix: "分",
41 none: "—",
42 },
43 pl: {
44 pageTitle: "Streszczenie",
45 empty: "Twój dziennik nie ma wpisów.",
46 emptyHint:
47 "Uruchom zegar i dodaj notatkę z tagiem, aby zobaczyć tutaj statystyki.",
48 statTotal: "Razem godzin",
49 statEntries: "Wpisy",
50 statToday: "Dzisiaj",
51 statWeek: "Ten tydzień",
52 statLongest: "Najdłuższa sesja",
53 statTags: "Unikalne tagi",
54 sectionPerTag: "Godziny na tag",
55 sectionPerDay: "Godziny na dzień · ostatnie 14 dni",
56 numHours: "godzin",
57 hoursSuffix: "g",
58 minsSuffix: "m",
59 none: "—",
60 },
61});
62
63export default strings;