Add full trilingual EN/FR/NB support across all pages and data
- Convert all data files (site, profile, norway, jazz, projects, cv) to Record<LocaleCode, string> fields - Update all page templates to use LocaleCopy component for locale-aware rendering - Fix CSS specificity conflict: .locale-copy .locale-copy__text (spec 20) now beats container span rules (spec 11) - Update LocaleSwitcher, BaseLayout, and SectionCard for locale prop types - Design system overhaul: Special Elite font, burgundy #8f2218, DG seal favicon Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+152
-141
@@ -1,13 +1,15 @@
|
||||
import type { LocaleCode } from "./locales";
|
||||
|
||||
export type LaunchSection = {
|
||||
slug: string;
|
||||
label: string;
|
||||
title: string;
|
||||
summary: string;
|
||||
tone: string;
|
||||
strap: string;
|
||||
coverline: string;
|
||||
motif: string;
|
||||
samples: string[];
|
||||
summary: Record<LocaleCode, string>;
|
||||
tone: Record<LocaleCode, string>;
|
||||
strap: Record<LocaleCode, string>;
|
||||
coverline: Record<LocaleCode, string>;
|
||||
motif: Record<LocaleCode, string>;
|
||||
samples: Record<LocaleCode, string[]>;
|
||||
};
|
||||
|
||||
export type SchoolDossier = {
|
||||
@@ -17,143 +19,115 @@ export type SchoolDossier = {
|
||||
program: string;
|
||||
city: string;
|
||||
logo: string;
|
||||
teaser: string;
|
||||
teaser: Record<LocaleCode, string>;
|
||||
};
|
||||
|
||||
export const hero = {
|
||||
kicker: "Pataphysical bulletin / Kongsberg edition",
|
||||
title: "A high-tech newsmagazine disguised as one man's improbable paper trail.",
|
||||
lede:
|
||||
"Private AI, jazz basements, multilingual weather, family rights, and systems work from Ringwood to Kongsberg, edited with equal parts brass, evidence, and deliberate mischief.",
|
||||
sublede:
|
||||
"Inside this issue: Blue Note Logic in the machine room, Gilligan Tech in the field, Do Better Norge in the civic file, Trivia & Tunes in the live-wire culture pages, and school dossiers written like contraband literature.",
|
||||
kicker: { en: "Pataphysical bulletin / Kongsberg edition", fr: "Bulletin pataphysique / Édition Kongsberg", nb: "Pataphysisk bulletin / Kongsberg-utgave" },
|
||||
title: { en: "A high-tech newsmagazine disguised as one man's improbable paper trail.", fr: "Un magazine d'actualités high-tech déguisé en le parcours improbable d'un homme.", nb: "Et høyteknologisk nyhetsmagasin forkledd som én manns usannsynlige papirspor." },
|
||||
lede: { en: "Private AI, jazz basements, multilingual weather, family rights, and systems work from Ringwood to Kongsberg, edited with equal parts brass, evidence, and deliberate mischief.", fr: "IA privée, caves de jazz, météo multilingue, droits familiaux et travail systémique de Ringwood à Kongsberg, édité avec autant de cuivres, de preuves et de malice délibérée.", nb: "Privat AI, jazzkjellere, flerspråklig vær, familierettigheter og systemarbeid fra Ringwood til Kongsberg, redigert med like deler messing, bevis og bevisst rampestreker." },
|
||||
sublede: { en: "Inside this issue: Blue Note Logic in the machine room, Gilligan Tech in the field, Do Better Norge in the civic file, Trivia & Tunes in the live-wire culture pages, and school dossiers written like contraband literature.", fr: "Dans ce numéro : Blue Note Logic dans la salle des machines, Gilligan TECH sur le terrain, Do Better Norge dans le dossier civique, Trivia & Tunes dans les pages culturelles sous tension, et des dossiers scolaires écrits comme de la littérature de contrebande.", nb: "I denne utgaven: Blue Note Logic i maskinrommet, Gilligan TECH i felten, Do Better Norge i det sivile arkivet, Trivia & Tunes i de kulturspente sidene, og skoledokumenter skrevet som forbudt litteratur." },
|
||||
};
|
||||
|
||||
export const launchSections: LaunchSection[] = [
|
||||
{
|
||||
slug: "business",
|
||||
label: "01",
|
||||
title: "Business",
|
||||
summary: "Consulting notes, AI architecture, and operator essays for people who prefer working systems to rented theater.",
|
||||
tone: "Sharp, practical, anti-buzzword.",
|
||||
strap: "Operator studies for adults who are tired of consultant vapor.",
|
||||
coverline: "The anti-buzzword ledger.",
|
||||
motif: "Pricing, systems, execution, and elegant refusal.",
|
||||
samples: ["The one-laptop doctrine", "SME systems with teeth", "Boardroom notes without cologne"],
|
||||
slug: "business", label: "01", title: "Business",
|
||||
summary: { en: "Consulting notes, AI architecture, and operator essays for people who prefer working systems to rented theater.", fr: "Notes de conseil, architectures IA et essais d'opérateurs pour ceux qui préfèrent les systèmes fonctionnels au théâtre en location.", nb: "Konsulentnotater, AI-arkitektur og operatør-essays for folk som foretrekker fungerende systemer fremfor leid teater." },
|
||||
tone: { en: "Sharp, practical, anti-buzzword.", fr: "Tranchant, pratique, anti-buzzword.", nb: "Skarpt, praktisk, anti-buzzword." },
|
||||
strap: { en: "Operator studies for adults who are tired of consultant vapor.", fr: "Études d'opérateurs pour adultes lassés des consultants vaporeux.", nb: "Operatørstudier for voksne som er lei av konsulentprat." },
|
||||
coverline: { en: "The anti-buzzword ledger.", fr: "Le registre anti-buzzword.", nb: "Anti-buzzword-regnskapet." },
|
||||
motif: { en: "Pricing, systems, execution, and elegant refusal.", fr: "Tarification, systèmes, exécution et refus élégant.", nb: "Prising, systemer, utførelse og elegant avslag." },
|
||||
samples: { en: ["The one-laptop doctrine","SME systems with teeth","Boardroom notes without cologne"], fr: ["La doctrine du seul ordinateur portable","Systèmes PME avec du mordant","Notes de salle de conseil sans eau de Cologne"], nb: ["Én-laptop-doktrinen","SME-systemer med tenner","Styreromsnotater uten parfyme"] },
|
||||
},
|
||||
{
|
||||
slug: "education",
|
||||
label: "02",
|
||||
title: "Education",
|
||||
summary: "School dossiers, study notes, intellectual migrations, and academic detours worth keeping.",
|
||||
tone: "Curious, rigorous, lightly mischievous.",
|
||||
strap: "Degrees as cities, schools as chapters, study as migration.",
|
||||
coverline: "The dossier issue.",
|
||||
motif: "Memory, theory, institutions, and weather.",
|
||||
samples: ["Villanova as overture", "Krakow and the bureaucracy sublime", "Kongsberg after experience"],
|
||||
slug: "education", label: "02", title: "Education",
|
||||
summary: { en: "School dossiers, study notes, intellectual migrations, and academic detours worth keeping.", fr: "Dossiers scolaires, notes d'étude, migrations intellectuelles et détours académiques qui valent la peine d'être conservés.", nb: "Skolemapper, studienotater, intellektuelle migrasjoner og akademiske omveier verdt å beholde." },
|
||||
tone: { en: "Curious, rigorous, lightly mischievous.", fr: "Curieux, rigoureux, légèrement espiègle.", nb: "Nysgjerrig, grundig, lett rampete." },
|
||||
strap: { en: "Degrees as cities, schools as chapters, study as migration.", fr: "Les diplômes comme des villes, les écoles comme des chapitres, l'étude comme une migration.", nb: "Grader som byer, skoler som kapitler, studier som migrasjon." },
|
||||
coverline: { en: "The dossier issue.", fr: "Le numéro dossier.", nb: "Dossier-utgaven." },
|
||||
motif: { en: "Memory, theory, institutions, and weather.", fr: "Mémoire, théorie, institutions et météo.", nb: "Minne, teori, institusjoner og vær." },
|
||||
samples: { en: ["Villanova as overture","Krakow and the bureaucracy sublime","Kongsberg after experience"], fr: ["Villanova comme ouverture","Cracovie et la bureaucratie sublime","Kongsberg après l'expérience"], nb: ["Villanova som ouverture","Krakow og den sublime byråkratien","Kongsberg etter erfaring"] },
|
||||
},
|
||||
{
|
||||
slug: "family",
|
||||
label: "03",
|
||||
title: "Family",
|
||||
summary: "A warmer archive for memory, milestones, and the private weather that keeps the machinery worth running.",
|
||||
tone: "Private-minded, generous, alive.",
|
||||
strap: "The soft archive, still edited like it matters.",
|
||||
coverline: "Domestic front pages.",
|
||||
motif: "Photographs, notes, kinship, and time.",
|
||||
samples: ["Albums with captions worth reading", "Milestones without sentimentality", "A household in motion"],
|
||||
slug: "family", label: "03", title: "Family",
|
||||
summary: { en: "A warmer archive for memory, milestones, and the private weather that keeps the machinery worth running.", fr: "Une archive plus chaleureuse pour la mémoire, les jalons et la météo privée qui donne un sens à la machine.", nb: "Et varmere arkiv for minner, milepæler og det private været som gjør maskineriet verdt å holde i gang." },
|
||||
tone: { en: "Private-minded, generous, alive.", fr: "Intimiste, généreux, vivant.", nb: "Privat, generøs, levende." },
|
||||
strap: { en: "The soft archive, still edited like it matters.", fr: "L'archive douce, toujours éditée comme si elle comptait.", nb: "Det myke arkivet, fortsatt redigert som om det betyr noe." },
|
||||
coverline: { en: "Domestic front pages.", fr: "Les premières pages domestiques.", nb: "Hjemlige forsider." },
|
||||
motif: { en: "Photographs, notes, kinship, and time.", fr: "Photographies, notes, liens familiaux et temps.", nb: "Fotografier, notater, slektskap og tid." },
|
||||
samples: { en: ["Albums with captions worth reading","Milestones without sentimentality","A household in motion"], fr: ["Albums avec légendes qui valent la peine d'être lues","Jalons sans sentimentalisme","Un foyer en mouvement"], nb: ["Album med bildetekster verdt å lese","Milepæler uten sentimentalitet","Et hushold i bevegelse"] },
|
||||
},
|
||||
{
|
||||
slug: "fun-postings",
|
||||
label: "04",
|
||||
title: "Fun Postings",
|
||||
summary: "Odd notices, cultural flyers, side projects, and the sort of elegant nonsense that deserves proper typesetting.",
|
||||
tone: "Playful, deadpan, collectible.",
|
||||
strap: "The classified page gets strange and starts wearing cologne.",
|
||||
coverline: "Useful nonsense, neatly set.",
|
||||
motif: "Flyers, jokes, events, absurd notices.",
|
||||
samples: ["Cultural dispatches", "Ridiculous but sincere", "Posters for improbable evenings"],
|
||||
slug: "fun-postings", label: "04", title: "Fun Postings",
|
||||
summary: { en: "Odd notices, cultural flyers, side projects, and the sort of elegant nonsense that deserves proper typesetting.", fr: "Avis insolites, flyers culturels, projets parallèles et ce genre de non-sens élégant qui mérite une typographie soignée.", nb: "Merkelige kunngjøringer, kulturelle flyers, sideprosjekter og den typen elegant nonsens som fortjener ordentlig typografi." },
|
||||
tone: { en: "Playful, deadpan, collectible.", fr: "Ludique, pince-sans-rire, collectionnable.", nb: "Leken, deadpan, samlerverdig." },
|
||||
strap: { en: "The classified page gets strange and starts wearing cologne.", fr: "La page des petites annonces devient étrange et commence à porter de l'eau de Cologne.", nb: "Rubrikkannonsen blir rar og begynner å bruke parfyme." },
|
||||
coverline: { en: "Useful nonsense, neatly set.", fr: "Non-sens utile, soigneusement présenté.", nb: "Nyttig nonsens, pent satt." },
|
||||
motif: { en: "Flyers, jokes, events, absurd notices.", fr: "Flyers, blagues, événements, avis absurdes.", nb: "Flyers, vitser, arrangementer, absurde kunngjøringer." },
|
||||
samples: { en: ["Cultural dispatches","Ridiculous but sincere","Posters for improbable evenings"], fr: ["Dépêches culturelles","Ridicule mais sincère","Affiches pour des soirées improbables"], nb: ["Kulturelle utsendelser","Latterlig men oppriktig","Plakater for usannsynlige kvelder"] },
|
||||
},
|
||||
{
|
||||
slug: "writing",
|
||||
label: "05",
|
||||
title: "Writing",
|
||||
summary: "This month's writing desk runs on Boris Vian: novels with trapdoors, Vernon Sullivan weather, Saint-Germain smoke, and bibliography arranged like a contraband route.",
|
||||
tone: "Literary, international, smoky.",
|
||||
strap: "A low-lit file on Boris Vian, jazz syntax, and the exact science of glorious exception.",
|
||||
coverline: "Boris Vian in the side door.",
|
||||
motif: "Novels, jazz, pataphysics, counterfeit signatures, and Paris after midnight.",
|
||||
samples: [
|
||||
"The engineer of exceptions",
|
||||
"Five doors into Boris Vian",
|
||||
"Why Saint-Germain still leaks into the prose",
|
||||
],
|
||||
slug: "writing", label: "05", title: "Writing",
|
||||
summary: { en: "This month's writing desk runs on Boris Vian: novels with trapdoors, Vernon Sullivan weather, Saint-Germain smoke, and bibliography arranged like a contraband route.", fr: "Le bureau d'écriture de ce mois-ci fonctionne sur Boris Vian : romans avec trappes, météo Vernon Sullivan, fumée de Saint-Germain et bibliographie arrangée comme une route de contrebande.", nb: "Denne månedens skrivebord drives av Boris Vian: romaner med fallgruver, Vernon Sullivan-vær, Saint-Germain-røyk og bibliografi arrangert som en smuglerute." },
|
||||
tone: { en: "Literary, international, smoky.", fr: "Littéraire, international, enfumé.", nb: "Litterær, internasjonal, røykfylt." },
|
||||
strap: { en: "A low-lit file on Boris Vian, jazz syntax, and the exact science of glorious exception.", fr: "Un dossier en lumière tamisée sur Boris Vian, la syntaxe jazz et la science exacte de l'exception glorieuse.", nb: "En lavmælt fil om Boris Vian, jazzsyntaks og den eksakte vitenskapen om strålende unntak." },
|
||||
coverline: { en: "Boris Vian in the side door.", fr: "Boris Vian par la porte dérobée.", nb: "Boris Vian via sidedøren." },
|
||||
motif: { en: "Novels, jazz, pataphysics, counterfeit signatures, and Paris after midnight.", fr: "Romans, jazz, pataphysique, signatures contrefaites et Paris après minuit.", nb: "Romaner, jazz, patafysikk, falske signaturer og Paris etter midnatt." },
|
||||
samples: { en: ["The engineer of exceptions","Five doors into Boris Vian","Why Saint-Germain still leaks into the prose"], fr: ["L'ingénieur des exceptions","Cinq portes vers Boris Vian","Pourquoi Saint-Germain s'infiltre encore dans la prose"], nb: ["Unntakenes ingeniør","Fem dører inn til Boris Vian","Hvorfor Saint-Germain fortsatt siver inn i prosaen"] },
|
||||
},
|
||||
{
|
||||
slug: "jazz-music",
|
||||
label: "06",
|
||||
title: "Jazz and Music",
|
||||
summary: "Listening notes, Kongsberg nights, Caveau memories, and the low-lit logic of serious groove.",
|
||||
tone: "Velvet, brassy, precise.",
|
||||
strap: "For records, rooms, and players who understand that rhythm is governance.",
|
||||
coverline: "Blue notes and side doors.",
|
||||
motif: "Listening, memory, improvisation, timing.",
|
||||
samples: ["Records after midnight", "Why groove beats branding", "A private history of swing"],
|
||||
slug: "jazz-music", label: "06", title: "Jazz and Music",
|
||||
summary: { en: "Listening notes, Kongsberg nights, Caveau memories, and the low-lit logic of serious groove.", fr: "Notes d'écoute, nuits à Kongsberg, souvenirs de Caveau et la logique tamisée du groove sérieux.", nb: "Lyttenotater, Kongsberg-netter, Caveau-minner og den lavmælte logikken til seriøs groove." },
|
||||
tone: { en: "Velvet, brassy, precise.", fr: "Velours, cuivré, précis.", nb: "Fløyel, messing, presist." },
|
||||
strap: { en: "For records, rooms, and players who understand that rhythm is governance.", fr: "Pour les disques, les salles et les musiciens qui comprennent que le rythme est une gouvernance.", nb: "For plater, rom og musikere som forstår at rytme er styring." },
|
||||
coverline: { en: "Blue notes and side doors.", fr: "Blue notes et portes dérobées.", nb: "Blue notes og sidedører." },
|
||||
motif: { en: "Listening, memory, improvisation, timing.", fr: "Écoute, mémoire, improvisation, timing.", nb: "Lytting, minne, improvisasjon, timing." },
|
||||
samples: { en: ["Records after midnight","Why groove beats branding","A private history of swing"], fr: ["Disques après minuit","Pourquoi le groove l'emporte sur le branding","Une histoire privée du swing"], nb: ["Plater etter midnatt","Hvorfor groove slår merkevarebygging","En privat historie om swing"] },
|
||||
},
|
||||
{
|
||||
slug: "languages",
|
||||
label: "07",
|
||||
title: "Languages",
|
||||
summary: "English, French, and Norwegian switching places without losing the joke, the seduction, or the filing detail.",
|
||||
tone: "Polyglot, sly, welcoming.",
|
||||
strap: "A section for mistranslation, seduction, and grammatical diplomacy.",
|
||||
coverline: "The multilingual cabinet.",
|
||||
motif: "French, Norwegian, English, and elegant trouble.",
|
||||
samples: ["Words that travel badly", "Translation as personality", "Syntax with a passport"],
|
||||
slug: "languages", label: "07", title: "Languages",
|
||||
summary: { en: "English, French, and Norwegian switching places without losing the joke, the seduction, or the filing detail.", fr: "Anglais, français et norvégien échangent leurs places sans perdre la blague, la séduction ou le détail archivistique.", nb: "Engelsk, fransk og norsk bytter plass uten å miste vitsen, forførelsen eller arkivdetaljen." },
|
||||
tone: { en: "Polyglot, sly, welcoming.", fr: "Polyglotte, subtil, accueillant.", nb: "Polyglott, lun, imøtekommende." },
|
||||
strap: { en: "A section for mistranslation, seduction, and grammatical diplomacy.", fr: "Une section pour les mauvaises traductions, la séduction et la diplomatie grammaticale.", nb: "En seksjon for feiltolkning, forførelse og grammatisk diplomati." },
|
||||
coverline: { en: "The multilingual cabinet.", fr: "Le cabinet multilingue.", nb: "Det flerspråklige kabinettet." },
|
||||
motif: { en: "French, Norwegian, English, and elegant trouble.", fr: "Français, norvégien, anglais et troubles élégants.", nb: "Fransk, norsk, engelsk og elegant trøbbel." },
|
||||
samples: { en: ["Words that travel badly","Translation as personality","Syntax with a passport"], fr: ["Mots qui voyagent mal","La traduction comme personnalité","Syntaxe avec passeport"], nb: ["Ord som reiser dårlig","Oversettelse som personlighet","Syntaks med pass"] },
|
||||
},
|
||||
{
|
||||
slug: "ai-lab",
|
||||
label: "08",
|
||||
title: "AI Lab",
|
||||
summary: "Private corpora, cited answers, multilingual agents, and practical machine intelligence with actual memory.",
|
||||
tone: "Forward-looking, grounded, open source friendly.",
|
||||
strap: "Machine intelligence without the conference lanyard.",
|
||||
coverline: "The atelier for useful futures.",
|
||||
motif: "Prompts, tooling, agentic systems, humane interfaces.",
|
||||
samples: ["AI that can write in-house style", "Editorial controls, not gimmicks", "Open tools with manners"],
|
||||
slug: "ai-lab", label: "08", title: "AI Lab",
|
||||
summary: { en: "Private corpora, cited answers, multilingual agents, and practical machine intelligence with actual memory.", fr: "Corpus privés, réponses citées, agents multilingues et intelligence artificielle pratique avec une mémoire réelle.", nb: "Private korpora, siterte svar, flerspråklige agenter og praktisk maskinintelligens med faktisk hukommelse." },
|
||||
tone: { en: "Forward-looking, grounded, open source friendly.", fr: "Visionnaire, ancré, favorable à l'open source.", nb: "Framtidsrettet, jordnær, vennlig mot åpen kildekode." },
|
||||
strap: { en: "Machine intelligence without the conference lanyard.", fr: "Intelligence artificielle sans le badge de conférence.", nb: "Maskinintelligens uten konferansebånd." },
|
||||
coverline: { en: "The atelier for useful futures.", fr: "L'atelier des futurs utiles.", nb: "Atelieret for nyttige fremtider." },
|
||||
motif: { en: "Prompts, tooling, agentic systems, humane interfaces.", fr: "Prompts, outils, systèmes agentiques, interfaces humaines.", nb: "Prompter, verktøy, agentbaserte systemer, humane grensesnitt." },
|
||||
samples: { en: ["AI that can write in-house style","Editorial controls, not gimmicks","Open tools with manners"], fr: ["IA capable d'écrire dans un style maison","Contrôles éditoriaux, pas des gadgets","Outils ouverts avec des manières"], nb: ["AI som kan skrive i husstil","Redaksjonelle kontroller, ikke gimmicker","Åpne verktøy med manerer"] },
|
||||
},
|
||||
{
|
||||
slug: "norway",
|
||||
label: "09",
|
||||
title: "Norway",
|
||||
summary: "Kongsberg dispatches, civic reporting, immigrant-family realities, and Norwegian life observed without brochure language.",
|
||||
tone: "Observant, civic, place-aware.",
|
||||
strap: "A local paper for one town and several realities.",
|
||||
coverline: "Kongsberg, correctly observed.",
|
||||
motif: "Place, policy, weather, Nordic texture.",
|
||||
samples: ["Silver city dispatches", "The civic weather report", "Norway beyond brochure language"],
|
||||
slug: "norway", label: "09", title: "Norway",
|
||||
summary: { en: "Kongsberg dispatches, civic reporting, immigrant-family realities, and Norwegian life observed without brochure language.", fr: "Dépêches de Kongsberg, reportages civiques, réalités des familles immigrées et vie norvégienne observée sans langage de brochure.", nb: "Kongsberg-utsendelser, samfunnsrapportering, innvandrerfamilie-realiteter og norsk liv observert uten brosjyrespråk." },
|
||||
tone: { en: "Observant, civic, place-aware.", fr: "Observateur, civique, conscient du lieu.", nb: "Observant, samfunnsengasjert, stedbevisst." },
|
||||
strap: { en: "A local paper for one town and several realities.", fr: "Un journal local pour une ville et plusieurs réalités.", nb: "En lokalavis for én by og flere realiteter." },
|
||||
coverline: { en: "Kongsberg, correctly observed.", fr: "Kongsberg, correctement observé.", nb: "Kongsberg, korrekt observert." },
|
||||
motif: { en: "Place, policy, weather, Nordic texture.", fr: "Lieu, politique, météo, texture nordique.", nb: "Sted, politikk, vær, nordisk tekstur." },
|
||||
samples: { en: ["Silver city dispatches","The civic weather report","Norway beyond brochure language"], fr: ["Dépêches de la ville d'argent","Le bulletin météo civique","La Norvège au-delà du langage des brochures"], nb: ["Sølvby-utsendelser","Den samfunnsmessige værmeldingen","Norge uten brosjyrespråk"] },
|
||||
},
|
||||
{
|
||||
slug: "projects",
|
||||
label: "10",
|
||||
title: "Projects",
|
||||
summary: "Things launched, repaired, modernized, or made slightly dangerous across code, content, venues, and data.",
|
||||
tone: "Builder energy, clean receipts.",
|
||||
strap: "The workshop floor, but art directed.",
|
||||
coverline: "Built, fixed, and shipped.",
|
||||
motif: "Case files, before/after, code and consequence.",
|
||||
samples: ["From schema to interface", "Deployments with fingerprints", "Systems that survived contact"],
|
||||
slug: "projects", label: "10", title: "Projects",
|
||||
summary: { en: "Things launched, repaired, modernized, or made slightly dangerous across code, content, venues, and data.", fr: "Choses lancées, réparées, modernisées ou rendues légèrement dangereuses à travers le code, le contenu, les lieux et les données.", nb: "Ting lansert, reparert, modernisert eller gjort litt farlige på tvers av kode, innhold, arenaer og data." },
|
||||
tone: { en: "Builder energy, clean receipts.", fr: "Énergie de constructeur, reçus propres.", nb: "Byggerenergi, rene kvitteringer." },
|
||||
strap: { en: "The workshop floor, but art directed.", fr: "Le sol de l'atelier, mais dirigé artistiquement.", nb: "Verkstedgulvet, men kunstnerisk regissert." },
|
||||
coverline: { en: "Built, fixed, and shipped.", fr: "Construit, réparé et expédié.", nb: "Bygget, fikset og sendt." },
|
||||
motif: { en: "Case files, before/after, code and consequence.", fr: "Dossiers, avant/après, code et conséquences.", nb: "Saksmapper, før/etter, kode og konsekvens." },
|
||||
samples: { en: ["From schema to interface","Deployments with fingerprints","Systems that survived contact"], fr: ["Du schéma à l'interface","Déploiements avec empreintes digitales","Systèmes qui ont survécu au contact"], nb: ["Fra skjema til grensesnitt","Utrullinger med fingeravtrykk","Systemer som overlevde kontakt"] },
|
||||
},
|
||||
{
|
||||
slug: "cv",
|
||||
label: "11",
|
||||
title: "CV",
|
||||
summary: "The formal record, still elegant, still readable, and never trapped in a dusty PDF.",
|
||||
tone: "Professional, legible, confident.",
|
||||
strap: "The biography in pressed clothes.",
|
||||
coverline: "A resume that behaves like publishing.",
|
||||
motif: "Timeline, experience, proof, education.",
|
||||
samples: ["Careers across countries", "A record without dead language", "Credentials with pulse"],
|
||||
slug: "cv", label: "11", title: "CV",
|
||||
summary: { en: "The formal record, still elegant, still readable, and never trapped in a dusty PDF.", fr: "Le dossier formel, toujours élégant, toujours lisible et jamais enfermé dans un PDF poussiéreux.", nb: "Den formelle opptegnelsen, fortsatt elegant, fortsatt lesbar og aldri fanget i en støvete PDF." },
|
||||
tone: { en: "Professional, legible, confident.", fr: "Professionnel, lisible, confiant.", nb: "Profesjonell, lesbar, selvsikker." },
|
||||
strap: { en: "The biography in pressed clothes.", fr: "La biographie en vêtements pressés.", nb: "Biografien i pressede klær." },
|
||||
coverline: { en: "A resume that behaves like publishing.", fr: "Un CV qui se comporte comme une publication.", nb: "En CV som oppfører seg som publisering." },
|
||||
motif: { en: "Timeline, experience, proof, education.", fr: "Chronologie, expérience, preuves, éducation.", nb: "Tidslinje, erfaring, bevis, utdanning." },
|
||||
samples: { en: ["Careers across countries","A record without dead language","Credentials with pulse"], fr: ["Carrières à travers les pays","Un dossier sans langage mort","Certifications avec du souffle"], nb: ["Karrierer på tvers av land","En opptegnelse uten dødt språk","Kvalifikasjoner med puls"] },
|
||||
},
|
||||
];
|
||||
|
||||
@@ -165,8 +139,7 @@ export const schoolDossiers: SchoolDossier[] = [
|
||||
program: "MSc, Innovation and Technology Management",
|
||||
city: "Kongsberg, Norway",
|
||||
logo: "/images/schools/usn.svg",
|
||||
teaser:
|
||||
"A systems laboratory where engineering discipline and lived experience meet over coffee, models, and unfinished questions.",
|
||||
teaser: { en: "A systems laboratory where engineering discipline and lived experience meet over coffee, models, and unfinished questions.", fr: "Un laboratoire de systèmes où la discipline d'ingénierie et l'expérience vécue se rencontrent autour d'un café, de modèles et de questions inachevées.", nb: "Et systemlaboratorium der ingeniørdisiplin og levd erfaring møtes over kaffe, modeller og uferdige spørsmål." },
|
||||
},
|
||||
{
|
||||
slug: "jagiellonian",
|
||||
@@ -175,8 +148,7 @@ export const schoolDossiers: SchoolDossier[] = [
|
||||
program: "European Union Studies",
|
||||
city: "Krakow, Poland",
|
||||
logo: "/images/schools/jagiellonian.svg",
|
||||
teaser:
|
||||
"History, bureaucracy, Europe, and the old civilizational habit of asking larger questions than the room can comfortably hold.",
|
||||
teaser: { en: "History, bureaucracy, Europe, and the old civilizational habit of asking larger questions than the room can comfortably hold.", fr: "Histoire, bureaucratie, Europe et l'ancienne habitude civilisationnelle de poser des questions plus grandes que la salle ne peut confortablement contenir.", nb: "Historie, byråkrati, Europa og den gamle sivilisasjonsvanen med å stille større spørsmål enn rommet komfortabelt kan romme." },
|
||||
},
|
||||
{
|
||||
slug: "escp-moore",
|
||||
@@ -185,8 +157,7 @@ export const schoolDossiers: SchoolDossier[] = [
|
||||
program: "International MBA and Master of International Business",
|
||||
city: "Paris and Columbia, South Carolina",
|
||||
logo: "/images/schools/escp-moore.svg",
|
||||
teaser:
|
||||
"A dual orbit of French polish and American execution, where commerce learned to travel with style and consequence.",
|
||||
teaser: { en: "A dual orbit of French polish and American execution, where commerce learned to travel with style and consequence.", fr: "Une double orbite de raffinement français et d'exécution américaine, où le commerce a appris à voyager avec style et conséquence.", nb: "En dobbel bane av fransk eleganse og amerikansk utførelse, der handel lærte å reise med stil og konsekvens." },
|
||||
},
|
||||
{
|
||||
slug: "european-university",
|
||||
@@ -195,8 +166,7 @@ export const schoolDossiers: SchoolDossier[] = [
|
||||
program: "MBA and Master of International Trade",
|
||||
city: "Brussels, Belgium",
|
||||
logo: "/images/schools/european-university.svg",
|
||||
teaser:
|
||||
"Trade, movement, and continental ambition, written in the language of deals, trains, and multilingual evenings.",
|
||||
teaser: { en: "Trade, movement, and continental ambition, written in the language of deals, trains, and multilingual evenings.", fr: "Commerce, mouvement et ambition continentale, écrits dans le langage des affaires, des trains et des soirées multilingues.", nb: "Handel, bevegelse og kontinental ambisjon, skrevet i språket til avtaler, tog og flerspråklige kvelder." },
|
||||
},
|
||||
{
|
||||
slug: "villanova",
|
||||
@@ -205,28 +175,69 @@ export const schoolDossiers: SchoolDossier[] = [
|
||||
program: "BSc, Business Administration",
|
||||
city: "Philadelphia, Pennsylvania",
|
||||
logo: "/images/schools/villanova.svg",
|
||||
teaser:
|
||||
"The Main Line chapter, where finance, communication, and character first learned to share the same bandstand.",
|
||||
teaser: { en: "The Main Line chapter, where finance, communication, and character first learned to share the same bandstand.", fr: "Le chapitre de Main Line, où la finance, la communication et le caractère ont appris à partager la même scène.", nb: "Main Line-kapittelet, der finans, kommunikasjon og karakter først lærte å dele samme scene." },
|
||||
},
|
||||
];
|
||||
|
||||
export const fieldNotes = [
|
||||
"Blue Note Logic keeps the machine room full of private AI, cited answers, and document intelligence that behaves like evidence instead of theater.",
|
||||
"Trivia & Tunes is now a living product story: venue-grade quiz nights, real AI in the game loop, and voice layers warming up for live testing.",
|
||||
"Do Better Norge keeps the civic file open on family life, immigrant fathers, due process, and the legal weather in contemporary Norway.",
|
||||
];
|
||||
export const fieldNotes: Record<LocaleCode, string[]> = {
|
||||
en: [
|
||||
"Blue Note Logic keeps the machine room full of private AI, cited answers, and document intelligence that behaves like evidence instead of theater.",
|
||||
"Trivia & Tunes is now a living product story: venue-grade quiz nights, real AI in the game loop, and voice layers warming up for live testing.",
|
||||
"Do Better Norge keeps the civic file open on family life, immigrant fathers, due process, and the legal weather in contemporary Norway.",
|
||||
],
|
||||
fr: [
|
||||
"Blue Note Logic garde la salle des machines remplie d'IA privée, de réponses citées et d'intelligence documentaire qui se comporte comme une preuve plutôt qu'un théâtre.",
|
||||
"Trivia & Tunes est désormais une histoire de produit vivant : soirées quiz dignes de lieux, véritable IA dans la boucle de jeu, et couches vocales prêtes pour des tests en direct.",
|
||||
"Do Better Norge garde le dossier civique ouvert sur la vie familiale, les pères immigrés, le droit à un procès équitable et la météo juridique dans la Norvège contemporaine."
|
||||
],
|
||||
nb: [
|
||||
"Blue Note Logic holder maskinrommet fullt av privat AI, siterte svar og dokumentintelligens som oppfører seg som bevis i stedet for teater.",
|
||||
"Trivia & Tunes er nå en levende produktfortelling: quizkvelder på nivå med arenaer, ekte AI i spillsløyfen, og stemmelag som varmer opp for live-testing.",
|
||||
"Do Better Norge holder det sivile arkivet åpent om familieliv, innvandrerfedre, rettferdig prosess og det juridiske været i dagens Norge."
|
||||
],
|
||||
};
|
||||
|
||||
export const editorialPromises = [
|
||||
"Keep the paper light, breathable, and a little dangerous around the edges.",
|
||||
"Make AI visible as a craft tool, a newsroom instrument, and never a plastic gimmick.",
|
||||
"Treat the CV, the jazz notebook, the civic archive, and the family pages with equal design seriousness.",
|
||||
];
|
||||
export const editorialPromises: Record<LocaleCode, string[]> = {
|
||||
en: [
|
||||
"Keep the paper light, breathable, and a little dangerous around the edges.",
|
||||
"Make AI visible as a craft tool, a newsroom instrument, and never a plastic gimmick.",
|
||||
"Treat the CV, the jazz notebook, the civic archive, and the family pages with equal design seriousness.",
|
||||
],
|
||||
fr: [
|
||||
"Garder le papier léger, respirable et un peu dangereux sur les bords.",
|
||||
"Rendre l'IA visible comme un outil artisanal, un instrument de salle de rédaction, et jamais un gadget en plastique.",
|
||||
"Traiter le CV, le carnet de jazz, l'archive civique et les pages familiales avec le même sérieux de conception."
|
||||
],
|
||||
nb: [
|
||||
"Hold papiret lett, pustende og litt farlig i kantene.",
|
||||
"Gjøre AI synlig som et håndverksverktøy, et nyhetsromsinstrument, og aldri en plastgimmick.",
|
||||
"Behandle CV-en, jazznotatboken, det sivile arkivet og familiesidene med samme designalvor."
|
||||
],
|
||||
};
|
||||
|
||||
export const coverLines = [
|
||||
"A pataphysical field paper with jazz smoke in the margins and SQL under the floorboards.",
|
||||
"Five school dossiers, each signed with a clearly counterfeit blessing and a straight face.",
|
||||
"AI in the machinery, not sprayed on top like fresh conference cologne.",
|
||||
];
|
||||
export const coverLines: Record<LocaleCode, string[]> = {
|
||||
en: [
|
||||
"A pataphysical field paper with jazz smoke in the margins and SQL under the floorboards.",
|
||||
"Five school dossiers, each signed with a clearly counterfeit blessing and a straight face.",
|
||||
"AI in the machinery, not sprayed on top like fresh conference cologne.",
|
||||
],
|
||||
fr: [
|
||||
"Un papier de terrain pataphysique avec de la fumée de jazz dans les marges et du SQL sous les planchers.",
|
||||
"Cinq dossiers scolaires, chacun signé avec une bénédiction clairement contrefaite et un visage impassible.",
|
||||
"IA dans la machinerie, pas vaporisée sur le dessus comme une eau de cologne fraîche de conférence."
|
||||
],
|
||||
nb: [
|
||||
"Et pataphysisk feltpapir med jazzrøyk i margen og SQL under gulvbordene.",
|
||||
"Fem skoledokumenter, hver signert med en åpenbart falsk velsignelse og et rett ansikt.",
|
||||
"AI i maskineriet, ikke sprayet på toppen som fersk konferanseparfyme."
|
||||
],
|
||||
};
|
||||
|
||||
export const sectionCardCta: Record<LocaleCode, string> = {
|
||||
en: "Open section",
|
||||
fr: "Ouvrir la section",
|
||||
nb: "Åpne seksjonen",
|
||||
};
|
||||
|
||||
export function getSectionHref(section: LaunchSection) {
|
||||
return section.slug === "education" ? "/education" : `/${section.slug}`;
|
||||
|
||||
Reference in New Issue
Block a user