@voxendar/shared 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/i18n/copy/ar-SA.d.ts +176 -0
- package/dist/i18n/copy/ar-SA.d.ts.map +1 -0
- package/dist/i18n/copy/ar-SA.js +194 -0
- package/dist/i18n/copy/ar-SA.js.map +1 -0
- package/dist/i18n/copy/de-DE.d.ts +176 -0
- package/dist/i18n/copy/de-DE.d.ts.map +1 -0
- package/dist/i18n/copy/de-DE.js +196 -0
- package/dist/i18n/copy/de-DE.js.map +1 -0
- package/dist/i18n/copy/en-US.d.ts +190 -0
- package/dist/i18n/copy/en-US.d.ts.map +1 -0
- package/dist/i18n/copy/en-US.js +223 -0
- package/dist/i18n/copy/en-US.js.map +1 -0
- package/dist/i18n/copy/es-MX.d.ts +176 -0
- package/dist/i18n/copy/es-MX.d.ts.map +1 -0
- package/dist/i18n/copy/es-MX.js +189 -0
- package/dist/i18n/copy/es-MX.js.map +1 -0
- package/dist/i18n/copy/fr-FR.d.ts +176 -0
- package/dist/i18n/copy/fr-FR.d.ts.map +1 -0
- package/dist/i18n/copy/fr-FR.js +190 -0
- package/dist/i18n/copy/fr-FR.js.map +1 -0
- package/dist/i18n/copy/he-IL.d.ts +176 -0
- package/dist/i18n/copy/he-IL.d.ts.map +1 -0
- package/dist/i18n/copy/he-IL.js +190 -0
- package/dist/i18n/copy/he-IL.js.map +1 -0
- package/dist/i18n/copy/hi-IN.d.ts +176 -0
- package/dist/i18n/copy/hi-IN.d.ts.map +1 -0
- package/dist/i18n/copy/hi-IN.js +191 -0
- package/dist/i18n/copy/hi-IN.js.map +1 -0
- package/dist/i18n/copy/ja-JP.d.ts +176 -0
- package/dist/i18n/copy/ja-JP.d.ts.map +1 -0
- package/dist/i18n/copy/ja-JP.js +192 -0
- package/dist/i18n/copy/ja-JP.js.map +1 -0
- package/dist/i18n/copy/ko-KR.d.ts +176 -0
- package/dist/i18n/copy/ko-KR.d.ts.map +1 -0
- package/dist/i18n/copy/ko-KR.js +192 -0
- package/dist/i18n/copy/ko-KR.js.map +1 -0
- package/dist/i18n/copy/pt-BR.d.ts +176 -0
- package/dist/i18n/copy/pt-BR.d.ts.map +1 -0
- package/dist/i18n/copy/pt-BR.js +187 -0
- package/dist/i18n/copy/pt-BR.js.map +1 -0
- package/dist/i18n/copy/ru-RU.d.ts +176 -0
- package/dist/i18n/copy/ru-RU.d.ts.map +1 -0
- package/dist/i18n/copy/ru-RU.js +191 -0
- package/dist/i18n/copy/ru-RU.js.map +1 -0
- package/dist/i18n/copy/zh-CN.d.ts +176 -0
- package/dist/i18n/copy/zh-CN.d.ts.map +1 -0
- package/dist/i18n/copy/zh-CN.js +189 -0
- package/dist/i18n/copy/zh-CN.js.map +1 -0
- package/dist/i18n/copy/zh-TW.d.ts +176 -0
- package/dist/i18n/copy/zh-TW.d.ts.map +1 -0
- package/dist/i18n/copy/zh-TW.js +196 -0
- package/dist/i18n/copy/zh-TW.js.map +1 -0
- package/dist/i18n/rtl.d.ts +27 -0
- package/dist/i18n/rtl.d.ts.map +1 -0
- package/dist/i18n/rtl.js +47 -0
- package/dist/i18n/rtl.js.map +1 -0
- package/dist/i18n/server-messages.d.ts +56 -0
- package/dist/i18n/server-messages.d.ts.map +1 -0
- package/dist/i18n/server-messages.js +163 -0
- package/dist/i18n/server-messages.js.map +1 -0
- package/dist/i18n/templates.d.ts +5 -0
- package/dist/i18n/templates.d.ts.map +1 -1
- package/dist/i18n/templates.js +5 -0
- package/dist/i18n/templates.js.map +1 -1
- package/dist/i18n/ui.d.ts +85 -0
- package/dist/i18n/ui.d.ts.map +1 -0
- package/dist/i18n/ui.js +151 -0
- package/dist/i18n/ui.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/schemas/enums.d.ts +2 -0
- package/dist/schemas/enums.d.ts.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DE = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* German.
|
|
6
|
+
*
|
|
7
|
+
* Two things a German table forces a decision on, both visible here:
|
|
8
|
+
*
|
|
9
|
+
* - **`du`, not `Sie`.** The product calls the member's assistant *dein Assistent*, and the
|
|
10
|
+
* English copy already speaks informally ("Hold to talk"). `Sie` would be correct for a
|
|
11
|
+
* stranger and wrong for a member's own calendar agent.
|
|
12
|
+
* - **Placeholders move.** `{label} wird gespeichert…` puts the interpolated noun where
|
|
13
|
+
* German wants it, not where English had it — the guard only checks that `{label}`
|
|
14
|
+
* survives, precisely so a language can reorder.
|
|
15
|
+
*
|
|
16
|
+
* `Neutral` and `Person` are the same word in German as in English; those two avatar keys
|
|
17
|
+
* are declared per-language in `MAY_READ_AS_ENGLISH` rather than translated into something
|
|
18
|
+
* German speakers do not say.
|
|
19
|
+
*/
|
|
20
|
+
const en_US_1 = require("./en-US");
|
|
21
|
+
exports.DE = {
|
|
22
|
+
"common.next": "Weiter",
|
|
23
|
+
"common.back": "Zurück",
|
|
24
|
+
"common.tryAgain": "Erneut versuchen",
|
|
25
|
+
"common.dismiss": "Schließen",
|
|
26
|
+
"common.none": "Keine",
|
|
27
|
+
"login.subtitle": "Dein Sprachkalender-Assistent",
|
|
28
|
+
"login.continueWithGoogle": "Mit Google fortfahren",
|
|
29
|
+
"login.signingIn": "Anmeldung läuft…",
|
|
30
|
+
"login.failed": "Anmeldung mit Google fehlgeschlagen",
|
|
31
|
+
"login.configWarning": en_US_1.EN["login.configWarning"],
|
|
32
|
+
"setup.titleGroup": "Gruppe einrichten",
|
|
33
|
+
"setup.titleSolo": "Kalender einrichten",
|
|
34
|
+
"setup.justForMe": "Nur für mich",
|
|
35
|
+
"setup.createOrJoin": "Gruppe erstellen oder beitreten",
|
|
36
|
+
"setup.yourName": "Dein Name",
|
|
37
|
+
"setup.namePlaceholder": "z. B. Mama",
|
|
38
|
+
"setup.groupName": "Gruppenname",
|
|
39
|
+
"setup.calendarName": "Kalendername",
|
|
40
|
+
"setup.soloNamePlaceholder": "Nur ich",
|
|
41
|
+
"setup.groupNamePlaceholder": "z. B. Familie Wong",
|
|
42
|
+
"setup.soloHint": "Im Solo-Modus landen Termine in deinem eigenen Google Kalender.",
|
|
43
|
+
"setup.inviteQuestion": "Hast du einen Einladungscode?",
|
|
44
|
+
"setup.invitePlaceholder": en_US_1.EN["setup.invitePlaceholder"],
|
|
45
|
+
"setup.joinWithCode": "Mit Code beitreten",
|
|
46
|
+
"setup.languageQuestion": "Welche Sprache wirst du sprechen?",
|
|
47
|
+
"setup.languageFootnote": "Spracherkennung, Erinnerungen und die App nutzen sie.",
|
|
48
|
+
"setup.voiceQuestion": "Welche Stimme soll dir vorlesen?",
|
|
49
|
+
"setup.voiceFootnote": "Du kannst sie jederzeit in den Einstellungen ändern.",
|
|
50
|
+
"setup.styleQuestion": "Wie soll dein Assistent antworten?",
|
|
51
|
+
"setup.styleFootnote": "Bestimmt den Ton der gesprochenen Bestätigungen.",
|
|
52
|
+
"setup.avatarQuestion": "Wähle deinen Avatar",
|
|
53
|
+
"setup.avatarFootnote": "Dein Avatar markiert dich bei Terminen und Erinnerungen — er ist unabhängig von der Stimme deines Assistenten.",
|
|
54
|
+
"setup.createGroup": "Meine Gruppe erstellen",
|
|
55
|
+
"setup.createCalendar": "Meinen Kalender erstellen",
|
|
56
|
+
"setup.startOver": "Neu anfangen",
|
|
57
|
+
"setup.settingUpGroup": "Deine Gruppe wird eingerichtet…",
|
|
58
|
+
"setup.settingUpCalendar": "Dein Kalender wird eingerichtet…",
|
|
59
|
+
"setup.errorCreateGroup": "Gruppe konnte nicht erstellt werden",
|
|
60
|
+
"setup.errorCreateCalendar": "Kalender konnte nicht erstellt werden",
|
|
61
|
+
"setup.errorJoin": "Beitritt zur Gruppe hat nicht geklappt",
|
|
62
|
+
"today.title": "Heute",
|
|
63
|
+
"today.welcome": "Willkommen, {name}",
|
|
64
|
+
"today.group": "Gruppe: {name}",
|
|
65
|
+
"today.placeholder": "Bald genügt ein Satz, um etwas hinzuzufügen. Bis dahin ist diese Seite ein Platzhalter für deinen Tag.",
|
|
66
|
+
"capture.title": "Erfassung",
|
|
67
|
+
"capture.holdToTalk": "Zum Sprechen halten",
|
|
68
|
+
"capture.listening": "Ich höre… {time}",
|
|
69
|
+
"capture.sending": "Wird gesendet…",
|
|
70
|
+
"capture.working": "Ich verstehe, was du gesagt hast…",
|
|
71
|
+
"capture.orType": "oder tippen",
|
|
72
|
+
"capture.placeholder": "Zahnarzt nächsten Dienstag um 15 Uhr, Praxis in der Innenstadt",
|
|
73
|
+
"capture.send": "Senden",
|
|
74
|
+
"capture.emailHint": "Oder leite eine E-Mail an {email} weiter.",
|
|
75
|
+
"capture.micPermission": "Ich brauche das Mikrofon, um dich zu hören. Aktiviere es in den Einstellungen oder tippe unten.",
|
|
76
|
+
"capture.recordFailed": "Das wurde nicht aufgenommen — bitte versuch es erneut.",
|
|
77
|
+
"capture.holdLonger": "Halte die Taste gedrückt, während du sprichst — oder tippe unten.",
|
|
78
|
+
"capture.doneConfirmed": "Notiert — zum Kalender hinzugefügt.",
|
|
79
|
+
"capture.doneDiscarded": "Verworfen.",
|
|
80
|
+
"card.playAgain": "Noch einmal anhören",
|
|
81
|
+
"card.title": "Titel",
|
|
82
|
+
"card.date": "Datum",
|
|
83
|
+
"card.start": "Beginn",
|
|
84
|
+
"card.end": "Ende",
|
|
85
|
+
"card.location": "Ort",
|
|
86
|
+
"card.notes": "Notizen",
|
|
87
|
+
"card.allDay": "Ganztägig",
|
|
88
|
+
"card.today": "Heute",
|
|
89
|
+
"card.tomorrow": "Morgen",
|
|
90
|
+
"card.discard": "Verwerfen",
|
|
91
|
+
"card.confirm": "Bestätigen",
|
|
92
|
+
"card.badTime": "Schreib eine Uhrzeit wie 15:00 oder 15 Uhr.",
|
|
93
|
+
"card.badDate": "Schreib das Datum wie 2026-09-27.",
|
|
94
|
+
"card.badTitle": "Gib diesem Termin einen Titel.",
|
|
95
|
+
"card.badTooLong": "Das ist zu lang — bitte kürzen.",
|
|
96
|
+
"card.badField": "Prüfe dieses Feld vor dem Bestätigen.",
|
|
97
|
+
"card.checkFields": "Bitte prüfe die markierten Felder.",
|
|
98
|
+
"card.voiceFallback": "Deine gespeicherte Stimme gibt es nicht mehr — das liest die aktuelle Stimme deiner Gruppe.",
|
|
99
|
+
"settings.title": "Einstellungen",
|
|
100
|
+
"settings.yourName": "Dein Name",
|
|
101
|
+
"settings.saveName": "Namen speichern",
|
|
102
|
+
"settings.nameFootnote": "So erscheinst du bei Terminen und Erinnerungen.",
|
|
103
|
+
"settings.language": "Sprache",
|
|
104
|
+
"settings.languageFootnote": "Spracherkennung, Erinnerungen und die App nutzen diese Sprache.",
|
|
105
|
+
"settings.voice": "Deine Stimme",
|
|
106
|
+
"settings.voiceFootnote": "Die Stimme, die deine Bestätigungen und Erinnerungen vorliest.",
|
|
107
|
+
"settings.style": "Sprechstil",
|
|
108
|
+
"settings.styleFootnote": "Der Ton der gesprochenen Bestätigung nach jeder Aufnahme.",
|
|
109
|
+
"settings.primaryChannel": "Bevorzugter Erinnerungskanal",
|
|
110
|
+
"settings.primaryChannelFootnote": "Erinnerungen versuchen zuerst diesen Kanal.",
|
|
111
|
+
"settings.fallbackChannel": "Ausweichkanal",
|
|
112
|
+
"settings.fallbackChannelFootnote": "Nur wenn der Hauptkanal scheitert (kein zweiter Versand).",
|
|
113
|
+
"settings.fallbackAlreadyPrimary": "ist schon dein Hauptkanal",
|
|
114
|
+
"settings.yourColor": "Deine Farbe",
|
|
115
|
+
"settings.currentColor": "Aktuell: {color}",
|
|
116
|
+
"settings.colorNotAssigned": "nicht zugewiesen",
|
|
117
|
+
"settings.colorFootnoteGroup": "Jeder Termin, den du anlegst, bekommt diese Farbe — daran erkennt deine Gruppe, wessen Termin es ist. Farben, die ein anderes Mitglied schon nutzt, sind nicht wählbar.",
|
|
118
|
+
"settings.colorFootnoteSolo": "Jeder Termin, den du anlegst, bekommt diese Farbe.",
|
|
119
|
+
"settings.yourAvatar": "Dein Avatar",
|
|
120
|
+
"settings.avatarFootnote": "Markiert deine Termine, Bestätigungen und Erinnerungen.",
|
|
121
|
+
"settings.saveLabelName": "deinen Namen",
|
|
122
|
+
"settings.saveLabelLanguage": "die Sprache",
|
|
123
|
+
"settings.saveLabelVoice": "die Stimme",
|
|
124
|
+
"settings.saveLabelStyle": "den Sprechstil",
|
|
125
|
+
"settings.saveLabelChannels": "die Benachrichtigungskanäle",
|
|
126
|
+
"settings.saveLabelColor": "die Farbe",
|
|
127
|
+
"settings.saveLabelAvatar": "den Avatar",
|
|
128
|
+
"settings.saving": "{label} wird gespeichert…",
|
|
129
|
+
"settings.signedInAs": "Angemeldet als {email}",
|
|
130
|
+
"settings.signOut": "Abmelden",
|
|
131
|
+
"settings.privacyPolicy": "Datenschutzerklärung",
|
|
132
|
+
"settings.privacyPolicyHint": "Öffnet {url} in deinem Browser.",
|
|
133
|
+
"settings.privacyPolicyError": "Die Datenschutzerklärung konnte nicht geöffnet werden.",
|
|
134
|
+
"settings.errorLoad": "Deine Einstellungen konnten nicht geladen werden",
|
|
135
|
+
"settings.errorSave": "{label} konnte nicht gespeichert werden",
|
|
136
|
+
"settings.profileIncomplete": "Diesem Profil fehlen Felder — es werden Standardwerte gezeigt.",
|
|
137
|
+
"voices.loading": "Stimmenliste wird geladen…",
|
|
138
|
+
"voices.loadError": "Die Stimmenliste konnte nicht geladen werden",
|
|
139
|
+
"voices.playError": "Die Hörprobe konnte nicht abgespielt werden",
|
|
140
|
+
"voices.preparing": "Hörprobe wird vorbereitet…",
|
|
141
|
+
"voices.hearSample": "Hörprobe von {voice}",
|
|
142
|
+
"voices.previewHint": "Ein kurzer Satz in deiner Sprache, gesprochen von dieser Stimme.",
|
|
143
|
+
"style.professional": "Professionell",
|
|
144
|
+
"style.warm_casual": "Warm und locker",
|
|
145
|
+
"style.friendly_brief": "Freundlich und knapp",
|
|
146
|
+
"channel.sms": en_US_1.EN["channel.sms"],
|
|
147
|
+
"channel.whatsapp": en_US_1.EN["channel.whatsapp"],
|
|
148
|
+
"channel.telegram": en_US_1.EN["channel.telegram"],
|
|
149
|
+
"color.1": "Lavendel — helles Blauviolett",
|
|
150
|
+
"color.2": "Salbei — hellgrün",
|
|
151
|
+
"color.3": "Traube — violett",
|
|
152
|
+
"color.4": "Flamingo — korallenrosa",
|
|
153
|
+
"color.5": "Banane — gelb",
|
|
154
|
+
"color.6": "Mandarine — orange",
|
|
155
|
+
"color.7": "Pfau — petrolblau",
|
|
156
|
+
"color.8": "Graphit — grau",
|
|
157
|
+
"color.9": "Heidelbeere — blau",
|
|
158
|
+
"color.10": "Basilikum — dunkelgrün",
|
|
159
|
+
"color.11": "Tomate — rot",
|
|
160
|
+
"avatar.mom_01": "Mama",
|
|
161
|
+
"avatar.mom_02": "Mama (rote Haare)",
|
|
162
|
+
"avatar.dad_01": "Papa",
|
|
163
|
+
"avatar.dad_02": "Papa (lockig)",
|
|
164
|
+
"avatar.kid_01": "Kind",
|
|
165
|
+
"avatar.kid_02": "Mädchen",
|
|
166
|
+
"avatar.kid_03": "Junge",
|
|
167
|
+
"avatar.professional_f_01": "Berufstätige Frau",
|
|
168
|
+
"avatar.professional_m_01": "Berufstätiger Mann",
|
|
169
|
+
"avatar.professional_x_01": "Berufstätig",
|
|
170
|
+
"avatar.grandparent_f_01": "Oma",
|
|
171
|
+
"avatar.grandparent_m_01": "Opa",
|
|
172
|
+
"avatar.generic_01": "Neutral",
|
|
173
|
+
"avatar.generic_02": "Person",
|
|
174
|
+
"avatar.generic_03": "Anonym",
|
|
175
|
+
"error.connection": "Die Verbindung ist weg — bitte versuch es erneut.",
|
|
176
|
+
"error.notAnEvent": "Daraus konnte ich keinen Termin machen — formulier es bitte anders.",
|
|
177
|
+
"error.tooLong": "Das war etwas lang — bitte nur einen Termin.",
|
|
178
|
+
"error.recordingGone": "Diese Aufnahme gibt es nicht mehr — nimm neu auf.",
|
|
179
|
+
"error.noAudio": "In dieser Aufnahme war nichts zu hören — bitte versuch es erneut.",
|
|
180
|
+
"error.badDateTime": "Datum und Uhrzeit konnte ich nicht lesen — bitte prüfen.",
|
|
181
|
+
"error.colorTaken": "Ein anderes Mitglied deiner Gruppe nutzt diese Farbe schon.",
|
|
182
|
+
"error.groupNotJoinable": "Diese Gruppe nutzt den persönlichen Kalender ihres Eigentümers und nimmt deshalb keine Mitglieder auf.",
|
|
183
|
+
"error.noGoogleEmail": "Dein Konto hat keine Google-Adresse — melde dich mit Google an, um einer Gruppe beizutreten.",
|
|
184
|
+
"error.noEvent": "In dieser Notiz habe ich keinen Termin gefunden — bitte versuch es erneut.",
|
|
185
|
+
"error.noteGone": "Diese Notiz gibt es nicht mehr.",
|
|
186
|
+
"error.notYours": "Diese Notiz gehört dir nicht.",
|
|
187
|
+
"error.badDecision": "Diese Entscheidung ließ sich nicht speichern — bitte versuch es erneut.",
|
|
188
|
+
"error.calendarSave": "Ich konnte es nicht in deinen Kalender eintragen — bitte versuch es erneut.",
|
|
189
|
+
"error.signIn": "Bitte melde dich erneut an.",
|
|
190
|
+
"error.profileMissing": "Deine Einrichtung sieht unvollständig aus — bitte melde dich erneut an.",
|
|
191
|
+
"error.invalidInvite": "Dieser Einladungscode hat nicht funktioniert.",
|
|
192
|
+
"error.alreadySetUp": "Du hast deinen Kalender schon eingerichtet.",
|
|
193
|
+
"error.generic": "Da ist etwas schiefgelaufen — bitte versuch es erneut.",
|
|
194
|
+
"card.checkVolume": "Nichts zu hören? Prüf die Lautstärke.",
|
|
195
|
+
};
|
|
196
|
+
//# sourceMappingURL=de-DE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"de-DE.js","sourceRoot":"","sources":["../../../src/i18n/copy/de-DE.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English (US) — **the key set**, the copy of record, and the source of every translation
|
|
3
|
+
* in this directory. `UiKey` is derived from the table below, which is what makes a
|
|
4
|
+
* missing key in another language a compile error rather than a sentence that quietly
|
|
5
|
+
* turns English (Milestone 1.9.7).
|
|
6
|
+
*
|
|
7
|
+
* Copy here is byte-for-byte what the screens rendered before the table existed, apart
|
|
8
|
+
* from the few stale sentences corrected in the move (each was already false, or against
|
|
9
|
+
* a decided term — see the `NOTE:` lines beside them).
|
|
10
|
+
*/
|
|
11
|
+
export declare const EN: {
|
|
12
|
+
readonly "common.next": "Next";
|
|
13
|
+
readonly "common.back": "Back";
|
|
14
|
+
readonly "common.tryAgain": "Try again";
|
|
15
|
+
readonly "common.dismiss": "Dismiss";
|
|
16
|
+
readonly "common.none": "None";
|
|
17
|
+
readonly "login.subtitle": "Your voice calendar agent";
|
|
18
|
+
readonly "login.continueWithGoogle": "Continue with Google";
|
|
19
|
+
readonly "login.signingIn": "Signing in…";
|
|
20
|
+
readonly "login.failed": "Google sign-in failed";
|
|
21
|
+
readonly "login.configWarning": "EXPO_PUBLIC_GOOGLE_OAUTH_CLIENT_ID is not set in app/.env — copy GOOGLE_OAUTH_CLIENT_ID from the root .env (same Web OAuth client the backend exchanges with).";
|
|
22
|
+
readonly "setup.titleGroup": "Set up your group";
|
|
23
|
+
readonly "setup.titleSolo": "Set up your calendar";
|
|
24
|
+
readonly "setup.justForMe": "Just for me";
|
|
25
|
+
readonly "setup.createOrJoin": "Create or join a group";
|
|
26
|
+
readonly "setup.yourName": "Your name";
|
|
27
|
+
readonly "setup.namePlaceholder": "e.g. Mom";
|
|
28
|
+
readonly "setup.groupName": "Group name";
|
|
29
|
+
readonly "setup.calendarName": "Calendar name";
|
|
30
|
+
readonly "setup.soloNamePlaceholder": "Just me";
|
|
31
|
+
readonly "setup.groupNamePlaceholder": "e.g. The Wongs";
|
|
32
|
+
readonly "setup.soloHint": "Solo mode puts events on your own Google Calendar.";
|
|
33
|
+
readonly "setup.inviteQuestion": "Have an invite code?";
|
|
34
|
+
readonly "setup.invitePlaceholder": "ABC23456";
|
|
35
|
+
readonly "setup.joinWithCode": "Join with invite code";
|
|
36
|
+
readonly "setup.languageQuestion": "Which language will you speak?";
|
|
37
|
+
readonly "setup.languageFootnote": "Speech recognition, your reminders and the app use it.";
|
|
38
|
+
readonly "setup.voiceQuestion": "Which voice should read to you?";
|
|
39
|
+
readonly "setup.voiceFootnote": "You can change this any time in Settings.";
|
|
40
|
+
readonly "setup.styleQuestion": "How should your assistant talk back?";
|
|
41
|
+
readonly "setup.styleFootnote": "Sets the tone of the spoken confirmations it reads to you.";
|
|
42
|
+
readonly "setup.avatarQuestion": "Pick your avatar";
|
|
43
|
+
readonly "setup.avatarFootnote": "Your avatar is your own mark on events and reminders — it is separate from your assistant's voice.";
|
|
44
|
+
readonly "setup.createGroup": "Create my group";
|
|
45
|
+
readonly "setup.createCalendar": "Create my calendar";
|
|
46
|
+
readonly "setup.startOver": "Start over";
|
|
47
|
+
readonly "setup.settingUpGroup": "Setting up your group…";
|
|
48
|
+
readonly "setup.settingUpCalendar": "Setting up your calendar…";
|
|
49
|
+
readonly "setup.errorCreateGroup": "Could not create the group";
|
|
50
|
+
readonly "setup.errorCreateCalendar": "Could not create your calendar";
|
|
51
|
+
readonly "setup.errorJoin": "Could not join the group";
|
|
52
|
+
readonly "today.title": "Today";
|
|
53
|
+
readonly "today.welcome": "Welcome, {name}";
|
|
54
|
+
readonly "today.group": "Group: {name}";
|
|
55
|
+
readonly "today.placeholder": "Soon you will be able to just say what to add. Until then this page is a placeholder for your day.";
|
|
56
|
+
readonly "capture.title": "Capture";
|
|
57
|
+
readonly "capture.holdToTalk": "Hold to talk";
|
|
58
|
+
readonly "capture.listening": "Listening… {time}";
|
|
59
|
+
readonly "capture.sending": "Sending…";
|
|
60
|
+
readonly "capture.working": "Working out what you said…";
|
|
61
|
+
readonly "capture.orType": "or type it";
|
|
62
|
+
readonly "capture.placeholder": "Dentist next Tuesday at 3, downtown clinic";
|
|
63
|
+
readonly "capture.send": "Send";
|
|
64
|
+
readonly "capture.emailHint": "Or forward an email to {email}.";
|
|
65
|
+
readonly "capture.micPermission": "I need the microphone to hear you. Turn it on in Settings, or type below.";
|
|
66
|
+
readonly "capture.recordFailed": "That did not record — please try again.";
|
|
67
|
+
readonly "capture.holdLonger": "Hold the button while you speak — or type below.";
|
|
68
|
+
readonly "capture.doneConfirmed": "Got it — added to your calendar.";
|
|
69
|
+
readonly "capture.doneDiscarded": "Discarded.";
|
|
70
|
+
readonly "card.playAgain": "Play again";
|
|
71
|
+
readonly "card.title": "Title";
|
|
72
|
+
readonly "card.date": "Date";
|
|
73
|
+
readonly "card.start": "Start";
|
|
74
|
+
readonly "card.end": "End";
|
|
75
|
+
readonly "card.location": "Location";
|
|
76
|
+
readonly "card.notes": "Notes";
|
|
77
|
+
readonly "card.allDay": "All day";
|
|
78
|
+
readonly "card.today": "Today";
|
|
79
|
+
readonly "card.tomorrow": "Tomorrow";
|
|
80
|
+
readonly "card.discard": "Discard";
|
|
81
|
+
readonly "card.confirm": "Confirm";
|
|
82
|
+
readonly "card.badTime": "Write a time like 15:00 or 3pm.";
|
|
83
|
+
readonly "card.badDate": "Write the date as 2026-09-27.";
|
|
84
|
+
readonly "card.badTitle": "Give this event a title.";
|
|
85
|
+
readonly "card.badTooLong": "That is too long — please shorten it.";
|
|
86
|
+
readonly "card.badField": "Please check this before confirming.";
|
|
87
|
+
readonly "card.checkFields": "Please check the highlighted fields.";
|
|
88
|
+
readonly "card.voiceFallback": "Your saved voice is not available any more — this is read by your group's current voice.";
|
|
89
|
+
readonly "settings.title": "Settings";
|
|
90
|
+
readonly "settings.yourName": "Your name";
|
|
91
|
+
readonly "settings.saveName": "Save name";
|
|
92
|
+
readonly "settings.nameFootnote": "This is how you appear on events and reminders.";
|
|
93
|
+
readonly "settings.language": "Language";
|
|
94
|
+
readonly "settings.languageFootnote": "Speech recognition, your reminders and the app use this language.";
|
|
95
|
+
readonly "settings.voice": "Your voice";
|
|
96
|
+
readonly "settings.voiceFootnote": "The voice that reads your spoken confirmations and reminders aloud.";
|
|
97
|
+
readonly "settings.style": "Speaking style";
|
|
98
|
+
readonly "settings.styleFootnote": "The tone of the spoken confirmation you hear after each capture.";
|
|
99
|
+
readonly "settings.primaryChannel": "Primary reminder channel";
|
|
100
|
+
readonly "settings.primaryChannelFootnote": "Reminders try this channel first.";
|
|
101
|
+
readonly "settings.fallbackChannel": "Fallback channel";
|
|
102
|
+
readonly "settings.fallbackChannelFootnote": "Used only if the primary channel fails (not a duplicate send).";
|
|
103
|
+
readonly "settings.fallbackAlreadyPrimary": "already your primary";
|
|
104
|
+
readonly "settings.yourColor": "Your color";
|
|
105
|
+
readonly "settings.currentColor": "Current: {color}";
|
|
106
|
+
readonly "settings.colorNotAssigned": "not assigned";
|
|
107
|
+
readonly "settings.colorFootnoteGroup": "Every event you create gets this color — it is how your group tells whose event is whose. Colors another member already uses can't be picked.";
|
|
108
|
+
readonly "settings.colorFootnoteSolo": "Every event you create gets this color.";
|
|
109
|
+
readonly "settings.yourAvatar": "Your avatar";
|
|
110
|
+
readonly "settings.avatarFootnote": "Marks your events, confirmations and reminders.";
|
|
111
|
+
readonly "settings.saveLabelName": "your name";
|
|
112
|
+
readonly "settings.saveLabelLanguage": "language";
|
|
113
|
+
readonly "settings.saveLabelVoice": "voice";
|
|
114
|
+
readonly "settings.saveLabelStyle": "speaking style";
|
|
115
|
+
readonly "settings.saveLabelChannels": "notification channels";
|
|
116
|
+
readonly "settings.saveLabelColor": "color";
|
|
117
|
+
readonly "settings.saveLabelAvatar": "avatar";
|
|
118
|
+
readonly "settings.saving": "Saving {label}…";
|
|
119
|
+
readonly "settings.signedInAs": "Signed in as {email}";
|
|
120
|
+
readonly "settings.signOut": "Sign out";
|
|
121
|
+
readonly "settings.privacyPolicy": "Privacy Policy";
|
|
122
|
+
readonly "settings.privacyPolicyHint": "Opens {url} in your browser.";
|
|
123
|
+
readonly "settings.privacyPolicyError": "Could not open the privacy policy.";
|
|
124
|
+
readonly "settings.errorLoad": "Could not load your settings";
|
|
125
|
+
readonly "settings.errorSave": "Could not save {label}";
|
|
126
|
+
readonly "settings.profileIncomplete": "This profile is missing some fields — showing defaults.";
|
|
127
|
+
readonly "voices.loading": "Loading the voice list…";
|
|
128
|
+
readonly "voices.loadError": "Could not load the voice list";
|
|
129
|
+
readonly "voices.playError": "Could not play a sample";
|
|
130
|
+
readonly "voices.preparing": "Preparing a sample…";
|
|
131
|
+
readonly "voices.hearSample": "Hear a sample of {voice}";
|
|
132
|
+
readonly "voices.previewHint": "A short sentence in your language, spoken by this voice.";
|
|
133
|
+
readonly "style.professional": "Professional";
|
|
134
|
+
readonly "style.warm_casual": "Warm & casual";
|
|
135
|
+
readonly "style.friendly_brief": "Friendly & brief";
|
|
136
|
+
readonly "channel.sms": "SMS";
|
|
137
|
+
readonly "channel.whatsapp": "WhatsApp";
|
|
138
|
+
readonly "channel.telegram": "Telegram";
|
|
139
|
+
readonly "color.1": "Lavender — light periwinkle";
|
|
140
|
+
readonly "color.2": "Sage — light green";
|
|
141
|
+
readonly "color.3": "Grape — purple";
|
|
142
|
+
readonly "color.4": "Flamingo — coral pink";
|
|
143
|
+
readonly "color.5": "Banana — yellow";
|
|
144
|
+
readonly "color.6": "Tangerine — orange";
|
|
145
|
+
readonly "color.7": "Peacock — teal blue";
|
|
146
|
+
readonly "color.8": "Graphite — grey";
|
|
147
|
+
readonly "color.9": "Blueberry — blue";
|
|
148
|
+
readonly "color.10": "Basil — deep green";
|
|
149
|
+
readonly "color.11": "Tomato — red";
|
|
150
|
+
readonly "avatar.mom_01": "Mom";
|
|
151
|
+
readonly "avatar.mom_02": "Mom (red hair)";
|
|
152
|
+
readonly "avatar.dad_01": "Dad";
|
|
153
|
+
readonly "avatar.dad_02": "Dad (curly hair)";
|
|
154
|
+
readonly "avatar.kid_01": "Kid";
|
|
155
|
+
readonly "avatar.kid_02": "Girl";
|
|
156
|
+
readonly "avatar.kid_03": "Boy";
|
|
157
|
+
readonly "avatar.professional_f_01": "Professional woman";
|
|
158
|
+
readonly "avatar.professional_m_01": "Professional man";
|
|
159
|
+
readonly "avatar.professional_x_01": "Professional";
|
|
160
|
+
readonly "avatar.grandparent_f_01": "Grandmother";
|
|
161
|
+
readonly "avatar.grandparent_m_01": "Grandfather";
|
|
162
|
+
readonly "avatar.generic_01": "Neutral";
|
|
163
|
+
readonly "avatar.generic_02": "Person";
|
|
164
|
+
readonly "avatar.generic_03": "Anonymous";
|
|
165
|
+
readonly "error.connection": "The connection dropped — please try again.";
|
|
166
|
+
readonly "error.notAnEvent": "I could not turn that note into an event — please try rephrasing it.";
|
|
167
|
+
readonly "error.tooLong": "That was a bit long — please keep it to one appointment.";
|
|
168
|
+
readonly "error.recordingGone": "That recording is gone — please record again.";
|
|
169
|
+
readonly "error.noAudio": "I could not hear anything in that recording — please try again.";
|
|
170
|
+
readonly "error.badDateTime": "I could not read that date and time — please check them.";
|
|
171
|
+
readonly "error.colorTaken": "Another member of your group is already using that color.";
|
|
172
|
+
readonly "error.groupNotJoinable": "That group uses its owner's personal calendar, so it cannot accept members.";
|
|
173
|
+
readonly "error.noGoogleEmail": "Your account has no Google email — sign in with Google to join a group.";
|
|
174
|
+
readonly "error.noEvent": "I could not find an event in that note — please try again.";
|
|
175
|
+
readonly "error.noteGone": "That note is no longer there.";
|
|
176
|
+
readonly "error.notYours": "That note is not yours to change.";
|
|
177
|
+
readonly "error.badDecision": "Something went wrong saving that decision — please try again.";
|
|
178
|
+
readonly "error.calendarSave": "I could not add it to your calendar — please try again.";
|
|
179
|
+
readonly "error.signIn": "Please sign in again.";
|
|
180
|
+
readonly "error.profileMissing": "Your setup looks incomplete — please sign in again.";
|
|
181
|
+
readonly "error.invalidInvite": "That invite code did not work.";
|
|
182
|
+
readonly "error.alreadySetUp": "You have already set up your calendar.";
|
|
183
|
+
readonly "error.generic": "Something went wrong — please try again.";
|
|
184
|
+
readonly "card.checkVolume": "Can't hear it? Check the volume.";
|
|
185
|
+
};
|
|
186
|
+
/** Every key the app can say. Derived from the English table, by design. */
|
|
187
|
+
export type UiKey = keyof typeof EN;
|
|
188
|
+
/** A complete language: exactly the English keys, nothing more, nothing less. */
|
|
189
|
+
export type CopyTable = Record<UiKey, string>;
|
|
190
|
+
//# sourceMappingURL=en-US.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-US.d.ts","sourceRoot":"","sources":["../../../src/i18n/copy/en-US.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiOL,CAAC;AAEX,4EAA4E;AAC5E,MAAM,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;AAEpC,iFAAiF;AACjF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EN = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* English (US) — **the key set**, the copy of record, and the source of every translation
|
|
6
|
+
* in this directory. `UiKey` is derived from the table below, which is what makes a
|
|
7
|
+
* missing key in another language a compile error rather than a sentence that quietly
|
|
8
|
+
* turns English (Milestone 1.9.7).
|
|
9
|
+
*
|
|
10
|
+
* Copy here is byte-for-byte what the screens rendered before the table existed, apart
|
|
11
|
+
* from the few stale sentences corrected in the move (each was already false, or against
|
|
12
|
+
* a decided term — see the `NOTE:` lines beside them).
|
|
13
|
+
*/
|
|
14
|
+
exports.EN = {
|
|
15
|
+
// ── Shared ────────────────────────────────────────────────────────────────
|
|
16
|
+
"common.next": "Next",
|
|
17
|
+
"common.back": "Back",
|
|
18
|
+
"common.tryAgain": "Try again",
|
|
19
|
+
"common.dismiss": "Dismiss",
|
|
20
|
+
"common.none": "None",
|
|
21
|
+
// ── Login ─────────────────────────────────────────────────────────────────
|
|
22
|
+
"login.subtitle": "Your voice calendar agent",
|
|
23
|
+
"login.continueWithGoogle": "Continue with Google",
|
|
24
|
+
"login.signingIn": "Signing in…",
|
|
25
|
+
"login.failed": "Google sign-in failed",
|
|
26
|
+
// Developer diagnostic for a misconfigured build: English on purpose.
|
|
27
|
+
"login.configWarning": "EXPO_PUBLIC_GOOGLE_OAUTH_CLIENT_ID is not set in app/.env — copy GOOGLE_OAUTH_CLIENT_ID from the root .env (same Web OAuth client the backend exchanges with).",
|
|
28
|
+
// ── CircleSetup (the wizard) ──────────────────────────────────────────────
|
|
29
|
+
"setup.titleGroup": "Set up your group",
|
|
30
|
+
"setup.titleSolo": "Set up your calendar",
|
|
31
|
+
"setup.justForMe": "Just for me",
|
|
32
|
+
"setup.createOrJoin": "Create or join a group",
|
|
33
|
+
"setup.yourName": "Your name",
|
|
34
|
+
"setup.namePlaceholder": "e.g. Mom",
|
|
35
|
+
"setup.groupName": "Group name",
|
|
36
|
+
"setup.calendarName": "Calendar name",
|
|
37
|
+
"setup.soloNamePlaceholder": "Just me",
|
|
38
|
+
"setup.groupNamePlaceholder": "e.g. The Wongs",
|
|
39
|
+
"setup.soloHint": "Solo mode puts events on your own Google Calendar.",
|
|
40
|
+
"setup.inviteQuestion": "Have an invite code?",
|
|
41
|
+
// An example code, not a word: identical in every language.
|
|
42
|
+
"setup.invitePlaceholder": "ABC23456",
|
|
43
|
+
"setup.joinWithCode": "Join with invite code",
|
|
44
|
+
"setup.languageQuestion": "Which language will you speak?",
|
|
45
|
+
// NOTE: was "Used for speech recognition and your reminders." — true then, false once
|
|
46
|
+
// the interface is localized, which is what this milestone does.
|
|
47
|
+
"setup.languageFootnote": "Speech recognition, your reminders and the app use it.",
|
|
48
|
+
"setup.voiceQuestion": "Which voice should read to you?",
|
|
49
|
+
"setup.voiceFootnote": "You can change this any time in Settings.",
|
|
50
|
+
"setup.styleQuestion": "How should your assistant talk back?",
|
|
51
|
+
"setup.styleFootnote": "Sets the tone of the spoken confirmations it reads to you.",
|
|
52
|
+
"setup.avatarQuestion": "Pick your avatar",
|
|
53
|
+
"setup.avatarFootnote": "Your avatar is your own mark on events and reminders — it is separate from your assistant's voice.",
|
|
54
|
+
"setup.createGroup": "Create my group",
|
|
55
|
+
"setup.createCalendar": "Create my calendar",
|
|
56
|
+
"setup.startOver": "Start over",
|
|
57
|
+
"setup.settingUpGroup": "Setting up your group…",
|
|
58
|
+
"setup.settingUpCalendar": "Setting up your calendar…",
|
|
59
|
+
"setup.errorCreateGroup": "Could not create the group",
|
|
60
|
+
"setup.errorCreateCalendar": "Could not create your calendar",
|
|
61
|
+
"setup.errorJoin": "Could not join the group",
|
|
62
|
+
// ── Today ─────────────────────────────────────────────────────────────────
|
|
63
|
+
"today.title": "Today",
|
|
64
|
+
"today.welcome": "Welcome, {name}",
|
|
65
|
+
"today.group": "Group: {name}",
|
|
66
|
+
"today.placeholder": "Soon you will be able to just say what to add. Until then this page is a placeholder for your day.",
|
|
67
|
+
// ── Capture ───────────────────────────────────────────────────────────────
|
|
68
|
+
"capture.title": "Capture",
|
|
69
|
+
"capture.holdToTalk": "Hold to talk",
|
|
70
|
+
"capture.listening": "Listening… {time}",
|
|
71
|
+
"capture.sending": "Sending…",
|
|
72
|
+
"capture.working": "Working out what you said…",
|
|
73
|
+
"capture.orType": "or type it",
|
|
74
|
+
"capture.placeholder": "Dentist next Tuesday at 3, downtown clinic",
|
|
75
|
+
"capture.send": "Send",
|
|
76
|
+
"capture.emailHint": "Or forward an email to {email}.",
|
|
77
|
+
"capture.micPermission": "I need the microphone to hear you. Turn it on in Settings, or type below.",
|
|
78
|
+
"capture.recordFailed": "That did not record — please try again.",
|
|
79
|
+
"capture.holdLonger": "Hold the button while you speak — or type below.",
|
|
80
|
+
"capture.doneConfirmed": "Got it — added to your calendar.",
|
|
81
|
+
"capture.doneDiscarded": "Discarded.",
|
|
82
|
+
// ── The confirmation card ─────────────────────────────────────────────────
|
|
83
|
+
"card.playAgain": "Play again",
|
|
84
|
+
"card.title": "Title",
|
|
85
|
+
"card.date": "Date",
|
|
86
|
+
"card.start": "Start",
|
|
87
|
+
"card.end": "End",
|
|
88
|
+
"card.location": "Location",
|
|
89
|
+
"card.notes": "Notes",
|
|
90
|
+
"card.allDay": "All day",
|
|
91
|
+
"card.today": "Today",
|
|
92
|
+
"card.tomorrow": "Tomorrow",
|
|
93
|
+
"card.discard": "Discard",
|
|
94
|
+
"card.confirm": "Confirm",
|
|
95
|
+
"card.badTime": "Write a time like 15:00 or 3pm.",
|
|
96
|
+
"card.badDate": "Write the date as 2026-09-27.",
|
|
97
|
+
"card.badTitle": "Give this event a title.",
|
|
98
|
+
"card.badTooLong": "That is too long — please shorten it.",
|
|
99
|
+
"card.badField": "Please check this before confirming.",
|
|
100
|
+
"card.checkFields": "Please check the highlighted fields.",
|
|
101
|
+
// NOTE: said "your circle's current voice" — "circle" was dropped as a user-facing
|
|
102
|
+
// term on 2026-09-23 (the shared unit is a "group") and this sentence kept the old word.
|
|
103
|
+
"card.voiceFallback": "Your saved voice is not available any more — this is read by your group's current voice.",
|
|
104
|
+
// ── Settings ──────────────────────────────────────────────────────────────
|
|
105
|
+
"settings.title": "Settings",
|
|
106
|
+
"settings.yourName": "Your name",
|
|
107
|
+
"settings.saveName": "Save name",
|
|
108
|
+
"settings.nameFootnote": "This is how you appear on events and reminders.",
|
|
109
|
+
"settings.language": "Language",
|
|
110
|
+
// NOTE: read "Speech recognition and your reminders use this language." — the app
|
|
111
|
+
// itself now does too, which is the point of M1.9.7.
|
|
112
|
+
"settings.languageFootnote": "Speech recognition, your reminders and the app use this language.",
|
|
113
|
+
"settings.voice": "Your voice",
|
|
114
|
+
"settings.voiceFootnote": "The voice that reads your spoken confirmations and reminders aloud.",
|
|
115
|
+
"settings.style": "Speaking style",
|
|
116
|
+
"settings.styleFootnote": "The tone of the spoken confirmation you hear after each capture.",
|
|
117
|
+
"settings.primaryChannel": "Primary reminder channel",
|
|
118
|
+
"settings.primaryChannelFootnote": "Reminders try this channel first.",
|
|
119
|
+
"settings.fallbackChannel": "Fallback channel",
|
|
120
|
+
"settings.fallbackChannelFootnote": "Used only if the primary channel fails (not a duplicate send).",
|
|
121
|
+
"settings.fallbackAlreadyPrimary": "already your primary",
|
|
122
|
+
"settings.yourColor": "Your color",
|
|
123
|
+
"settings.currentColor": "Current: {color}",
|
|
124
|
+
"settings.colorNotAssigned": "not assigned",
|
|
125
|
+
"settings.colorFootnoteGroup": "Every event you create gets this color — it is how your group tells whose event is whose. Colors another member already uses can't be picked.",
|
|
126
|
+
"settings.colorFootnoteSolo": "Every event you create gets this color.",
|
|
127
|
+
"settings.yourAvatar": "Your avatar",
|
|
128
|
+
// NOTE: ended with "The artwork is a placeholder for now — the real illustrations drop
|
|
129
|
+
// in without changing your choice." The illustrations shipped 2026-09-26 (OPEN-10), so
|
|
130
|
+
// that half is simply false.
|
|
131
|
+
"settings.avatarFootnote": "Marks your events, confirmations and reminders.",
|
|
132
|
+
// Labels interpolated into "Saving {label}…" and "Could not save {label}".
|
|
133
|
+
"settings.saveLabelName": "your name",
|
|
134
|
+
"settings.saveLabelLanguage": "language",
|
|
135
|
+
"settings.saveLabelVoice": "voice",
|
|
136
|
+
"settings.saveLabelStyle": "speaking style",
|
|
137
|
+
"settings.saveLabelChannels": "notification channels",
|
|
138
|
+
"settings.saveLabelColor": "color",
|
|
139
|
+
"settings.saveLabelAvatar": "avatar",
|
|
140
|
+
"settings.saving": "Saving {label}…",
|
|
141
|
+
"settings.signedInAs": "Signed in as {email}",
|
|
142
|
+
"settings.signOut": "Sign out",
|
|
143
|
+
// The privacy policy row (2026-10-04). Google asks for the policy to be linked from the
|
|
144
|
+
// website *and* "prominently displayed in your app interface": `site/` is the first half,
|
|
145
|
+
// this row is the second. The hint says where the tap goes, because it leaves the app.
|
|
146
|
+
// `{url}` is the bare address, passed by the call site so that the address itself lives
|
|
147
|
+
// once (`app/src/lib/legal.ts`) instead of in twelve translations that would go stale
|
|
148
|
+
// together.
|
|
149
|
+
"settings.privacyPolicy": "Privacy Policy",
|
|
150
|
+
"settings.privacyPolicyHint": "Opens {url} in your browser.",
|
|
151
|
+
"settings.privacyPolicyError": "Could not open the privacy policy.",
|
|
152
|
+
"settings.errorLoad": "Could not load your settings",
|
|
153
|
+
"settings.errorSave": "Could not save {label}",
|
|
154
|
+
"settings.profileIncomplete": "This profile is missing some fields — showing defaults.",
|
|
155
|
+
// ── Voice picker ──────────────────────────────────────────────────────────
|
|
156
|
+
"voices.loading": "Loading the voice list…",
|
|
157
|
+
"voices.loadError": "Could not load the voice list",
|
|
158
|
+
"voices.playError": "Could not play a sample",
|
|
159
|
+
"voices.preparing": "Preparing a sample…",
|
|
160
|
+
"voices.hearSample": "Hear a sample of {voice}",
|
|
161
|
+
"voices.previewHint": "A short sentence in your language, spoken by this voice.",
|
|
162
|
+
// ── Labels that look like data, and are not ───────────────────────────────
|
|
163
|
+
"style.professional": "Professional",
|
|
164
|
+
"style.warm_casual": "Warm & casual",
|
|
165
|
+
"style.friendly_brief": "Friendly & brief",
|
|
166
|
+
// Brand names — identical in every language (see UNTRANSLATED_BY_DESIGN).
|
|
167
|
+
"channel.sms": "SMS",
|
|
168
|
+
"channel.whatsapp": "WhatsApp",
|
|
169
|
+
"channel.telegram": "Telegram",
|
|
170
|
+
"color.1": "Lavender — light periwinkle",
|
|
171
|
+
"color.2": "Sage — light green",
|
|
172
|
+
"color.3": "Grape — purple",
|
|
173
|
+
"color.4": "Flamingo — coral pink",
|
|
174
|
+
"color.5": "Banana — yellow",
|
|
175
|
+
"color.6": "Tangerine — orange",
|
|
176
|
+
"color.7": "Peacock — teal blue",
|
|
177
|
+
"color.8": "Graphite — grey",
|
|
178
|
+
"color.9": "Blueberry — blue",
|
|
179
|
+
"color.10": "Basil — deep green",
|
|
180
|
+
"color.11": "Tomato — red",
|
|
181
|
+
// Avatar labels must stay unique — the picker repeats them verbatim and a screen
|
|
182
|
+
// reader has only the label to go on (see `member-settings.ts`).
|
|
183
|
+
"avatar.mom_01": "Mom",
|
|
184
|
+
"avatar.mom_02": "Mom (red hair)",
|
|
185
|
+
"avatar.dad_01": "Dad",
|
|
186
|
+
"avatar.dad_02": "Dad (curly hair)",
|
|
187
|
+
"avatar.kid_01": "Kid",
|
|
188
|
+
"avatar.kid_02": "Girl",
|
|
189
|
+
"avatar.kid_03": "Boy",
|
|
190
|
+
"avatar.professional_f_01": "Professional woman",
|
|
191
|
+
"avatar.professional_m_01": "Professional man",
|
|
192
|
+
"avatar.professional_x_01": "Professional",
|
|
193
|
+
"avatar.grandparent_f_01": "Grandmother",
|
|
194
|
+
"avatar.grandparent_m_01": "Grandfather",
|
|
195
|
+
"avatar.generic_01": "Neutral",
|
|
196
|
+
"avatar.generic_02": "Person",
|
|
197
|
+
"avatar.generic_03": "Anonymous",
|
|
198
|
+
// ── Client-side error copy ────────────────────────────────────────────────
|
|
199
|
+
// The sentences `captureErrorMessage()` curates, plus the ones the server-message
|
|
200
|
+
// mapping falls back to. A member should read their own language even when something
|
|
201
|
+
// failed — especially then.
|
|
202
|
+
"error.connection": "The connection dropped — please try again.",
|
|
203
|
+
"error.notAnEvent": "I could not turn that note into an event — please try rephrasing it.",
|
|
204
|
+
"error.tooLong": "That was a bit long — please keep it to one appointment.",
|
|
205
|
+
"error.recordingGone": "That recording is gone — please record again.",
|
|
206
|
+
"error.noAudio": "I could not hear anything in that recording — please try again.",
|
|
207
|
+
"error.badDateTime": "I could not read that date and time — please check them.",
|
|
208
|
+
"error.colorTaken": "Another member of your group is already using that color.",
|
|
209
|
+
"error.groupNotJoinable": "That group uses its owner's personal calendar, so it cannot accept members.",
|
|
210
|
+
"error.noGoogleEmail": "Your account has no Google email — sign in with Google to join a group.",
|
|
211
|
+
"error.noEvent": "I could not find an event in that note — please try again.",
|
|
212
|
+
"error.noteGone": "That note is no longer there.",
|
|
213
|
+
"error.notYours": "That note is not yours to change.",
|
|
214
|
+
"error.badDecision": "Something went wrong saving that decision — please try again.",
|
|
215
|
+
"error.calendarSave": "I could not add it to your calendar — please try again.",
|
|
216
|
+
"error.signIn": "Please sign in again.",
|
|
217
|
+
"error.profileMissing": "Your setup looks incomplete — please sign in again.",
|
|
218
|
+
"error.invalidInvite": "That invite code did not work.",
|
|
219
|
+
"error.alreadySetUp": "You have already set up your calendar.",
|
|
220
|
+
"error.generic": "Something went wrong — please try again.",
|
|
221
|
+
"card.checkVolume": "Can't hear it? Check the volume.",
|
|
222
|
+
};
|
|
223
|
+
//# sourceMappingURL=en-US.js.map
|