Files
Dramlog-Prod/src/i18n/types.ts
robin 9d6a8b358f feat: public split visibility, RLS recursion fixes, and consolidated tasting permission management
- Added public discovery section for active splits on the landing page
- Refactored split detail page for guest support and login redirects
- Extracted SplitCard component for reuse
- Consolidated RLS policies for bottles and tastings to resolve permission errors
- Added unified SQL consolidation script for RLS and naming fixes
- Enhanced service logging for better database error diagnostics
2025-12-28 22:02:46 +01:00

259 lines
6.5 KiB
TypeScript

export type TranslationKeys = {
splits: {
joinTitle: string;
amount: string;
shipping: string;
whisky: string;
glass: string;
total: string;
requestSent: string;
requestSentDesc: string;
loginToParticipate: string;
loginToParticipateDesc: string;
publicExplore: string;
waitlist: string;
sendRequest: string;
youAreParticipating: string;
byHost: string;
shareLink: string;
backToStart: string;
noSplitsFound: string;
falscheTeilung: string;
clFlasche: string;
jahre: string;
};
common: {
save: string;
cancel: string;
edit: string;
delete: string;
loading: string;
error: string;
success: string;
search: string;
back: string;
confirm: string;
check: string;
link: string;
none: string;
all: string;
};
home: {
title: string;
logout: string;
stats: {
title: string;
totalValue: string;
activeBottles: string;
avgRating: string;
topDistillery: string;
};
dramOfDay: {
button: string;
rollAgain: string;
suggestion: string;
noOpenBottles: string;
title: string;
viewBottle: string;
};
searchPlaceholder: string;
noBottles: string;
collection: string;
reTry: string;
all: string;
tagline: string;
bottleCount: string;
imprint: string;
privacy: string;
settings: string;
};
grid: {
searchPlaceholder: string;
noResults: string;
sortBy: {
createdAt: string;
lastTasted: string;
name: string;
};
filter: {
category: string;
distillery: string;
status: string;
};
addSession: string;
addedOn: string;
reviewRequired: string;
unknownBottle: string;
filters: string;
resetAll: string;
close: string;
};
bottle: {
details: string;
distillery: string;
category: string;
abv: string;
age: string;
years: string;
lastTasted: string;
neverTasted: string;
purchasePrice: string;
distilled: string;
bottled: string;
batch: string;
status: {
sealed: string;
open: string;
sampled: string;
empty: string;
};
whiskybaseId: string;
tastingNotes: string;
tastingNotesDesc: string;
noNotes: string;
editDetails: string;
editTitle: string;
autoSearch: string;
applyId: string;
saveChanges: string;
noMatchFound: string;
priceLabel: string;
nameLabel: string;
distilleryLabel: string;
categoryLabel: string;
abvLabel: string;
ageLabel: string;
distilledLabel: string;
bottledLabel: string;
batchLabel: string;
bottleStatus: string;
};
camera: {
scanBottle: string;
uploadImage: string;
analyzing: string;
analysisError: string;
matchFound: string;
notAWhisky: string;
lowConfidence: string;
saveToVault: string;
tastingNow: string;
quickTasting: string;
backToList: string;
whiskybaseSearch: string;
searchingWb: string;
wbMatchFound: string;
magicShot: string;
saveSuccess: string;
later: string;
openingCamera: string;
saving: string;
nextBottle: string;
newPhoto: string;
inVault: string;
offlineNotice: string;
alreadyInVault: string;
alreadyInVaultDesc: string;
saveAnyway: string;
analysisSuccess: string;
results: string;
toVault: string;
authRequired: string;
processingError: string;
uploadGallery: string;
};
tasting: {
addNote: string;
isSample: string;
isBottle: string;
rating: string;
nose: string;
palate: string;
finish: string;
notesPlaceholder: string;
overall: string;
saveTasting: string;
participants: string;
addParticipant: string;
};
buddy: {
title: string;
addBuddy: string;
placeholder: string;
noBuddies: string;
};
session: {
title: string;
activeSession: string;
allSessions: string;
newSession: string;
sessionName: string;
noSessions: string;
expiryWarning: string;
};
nav: {
home: string;
shelf: string;
activity: string;
search: string;
profile: string;
};
hub: {
title: string;
subtitle: string;
tabs: {
tastings: string;
splits: string;
};
sections: {
startSession: string;
startSplit: string;
activeNow: string;
yourSessions: string;
yourSplits: string;
participating: string;
};
placeholders: {
sessionName: string;
noSessions: string;
noSplits: string;
openSplitCreator: string;
};
};
tutorial: {
skip: string;
next: string;
finish: string;
steps: {
welcome: { title: string; desc: string };
scan: { title: string; desc: string };
taste: { title: string; desc: string };
activity: { title: string; desc: string };
ready: { title: string; desc: string };
};
};
settings: {
title: string;
language: string;
cookieSettings: string;
cookieDesc: string;
cookieNecessary: string;
cookieFunctional: string;
privacy: string;
privacyDesc: string;
privacyLink: string;
memberSince: string;
password: {
title: string;
newPassword: string;
confirmPassword: string;
match: string;
mismatch: string;
tooShort: string;
success: string;
change: string;
};
};
aroma: Record<string, string>;
};