Two hubs for the same subject in two Englishes, and the footer that stays British on both
CogniPrep added three hub pages last week, all three answering "what are these tests" for people who do not yet know a vendor name. Two of them are the same subject in two markets: /psychometric-tests, written in Brit
CogniPrep added three hub pages last week, all three answering "what are these tests" for people who do not yet know a vendor name. Two of them are the same subject in two markets:
-
/psychometric-tests, written in British English, because "psychometric test" is what a UK graduate scheme calls it. -
/pre-employment-tests, written in US English, because "pre-employment test" is what a US employer calls it. -
/game-based-assessments, cross-vendor and market-neutral.
Two pages about overlapping material is the kind of thing that gets called doorway pages if you do it lazily. What makes them not that is that the material genuinely differs: the UK page is organised by publisher and by where a test sits in a graduate application, and the US page is organised by role type and spends a whole section on where the law draws lines, which has no UK equivalent worth writing.
You can measure the two Englishes
Fetch both pages, strip the tags and count the rendered words. The UK page uses a "practis" form 22 times (practise the verb, practising, Practise as a heading) and a "practic" form 8 times, all of them the noun. The US page is the mirror image: 34 "practic" forms, one "practis" form. Then:
- behaviour 4 and behavior 0 on the UK page, behaviour 0 and behavior 4 on the US page.
- "maths" once on the UK page, "math" seven times on the US page, neither word crossing over.
- the primary call to action reads "Start practising free" on one and "Start practicing free" on the other.
That is what writing two pages rather than running a find and replace looks like from the outside.
And then the chrome arrives in the wrong dialect
The US page's own prose says "situational judgment test", once. The rendered page nonetheless shows "Judgement" three more times, and none of them are its to spell:
- the footer's link label, "Situational Judgement"
- vendor product names in a list of what a vendor sells, like "Kenexa Situational Judgement"
- the shared list of format names
The link's URL is /tests/situational-judgement, a British slug that live traffic has now cemented. And the single "Practising" on the page is in the shared disclaimer every page carries.
So a localised page is only as localised as the components it does not own, and a slug is not localisable after launch at all. The honest options are to accept the mixed spelling in the chrome, or to add a locale field to every shared registry label for the sake of one letter. We accepted it.
My favourite instance of this: both pages emit Organization seven times in their JSON-LD, because schema.org spells it the American way and a UK page has no say in the matter.
Nothing on these pages is a typed number
Every count a reader sees is derived from the game library at render time:
const abilityCount = publishers.reduce((sum, p) => sum + p.ability.length, 0);
const personalityCount = publishers.reduce((sum, p) => sum + p.personality.length, 0);
Which is why the UK hub currently says "the 12 publishers you are most likely to meet. Between them those publishers account for 73 ability tests and 12 personality and strengths questionnaires you can practise here", and why that sentence cannot go stale when somebody adds a test.
The game-based hub does the same thing one level further out. Its data file holds copy only, and says so:
Copy lives here; product facts do not. Game names, durations, the free tier and whether a game has a right answer are all read from the library, so the hub cannot drift from what a candidate can actually play. A vendor whose whole suite is game-based lists
'all', so a game added to that suite appears here on its own. Mixed suites name the game ids that are the game-based part, andresolveGamesthrows on an id that no longer exists, so a rename fails the build instead of silently dropping a card.
Live, that renders as "every game-based vendor we simulate, 9 in all. Between them they cover 57 games, 13 of which you can play free", with a per-vendor card count beside each name. The ItemList in its structured data takes numberOfItems from the same array, so the markup and the prose cannot disagree either.
The split that matters most on that page is also derived rather than asserted: which games have a right answer and which describe a disposition. The page says "of the 57 games on this page, 50 have a correct answer or a better score", and both numbers come from the library rather than from a sentence someone wrote. A hub that got that wrong in either direction would be telling candidates to prepare for something that cannot be prepared for.
The footer learned to fail the build
The new hubs needed footer slots, so the footer got rebalanced: the Practice column now carries the three hubs and the STAR method guide, and the Test Types column names seven of the fourteen formats rather than all of them, because the /tests hub lists all fourteen and a footer that repeats a whole section is noise. Each of the seven resolves against the registry:
const entry = TEST_TYPES.find((type) => type.slug === slug);
if (!entry) throw new Error(`Footer names unknown test type ${slug}`);
A renamed slug is now a build failure rather than a dead link on 530 pages. The same column gained a "Nederlands" link carrying both lang="nl" and hrefLang="nl", one for the screen reader and one for the crawler.
Alongside the hubs went six score-explainer articles, each built from a vendor's own sample report or information brief, with any figure that only a preparation site publishes labelled as such on the page. "A prep site says 70 percent" and "the vendor's sample report shows a sten score" are different claims and a reader is entitled to know which one they are reading.
See it
Open cogniprep.app/psychometric-tests and cogniprep.app/pre-employment-tests side by side and read the first button on each. Then scroll both to the footer: identical, British, on both.
If you prefer the command line, the spelling split survives a crude grep of the raw HTML, flight payload and all:
curl -s https://cogniprep.app/psychometric-tests | grep -o -i practising | wc -l # 10
curl -s https://cogniprep.app/pre-employment-tests | grep -o -i practicing | wc -l # 2
And cogniprep.app/game-based-assessments is the one to check the arithmetic on. Add up the per-vendor counts in the "Find your vendor" strip: 13, 12, 4, 8, 6, 7, 3, 2, 2. That is 57, which is what the sentence at the top of the page says.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.