Ghost (Pro) theme developer — multilingual (routes.yaml + hreflang) + RTL
Worldwide
TITLE: Ghost (Pro) theme developer — multilingual (routes.yaml + hreflang) + RTL OVERVIEW We run a content site on Ghost Pro and need an experienced Ghost theme developer to add proper multilingual support using Ghost's dynamic routing (routes.yaml), with subdirectory URLs per language. Translation is produced in-house — we need the theme, routing and technical SEO built so every language version is fully crawlable and SEO-safe. Launch languages (3): English (default), Russian (/ru/), Arabic (/ar/). We will add further languages later (for example French, Thai, Indonesian, Spanish, Bengali, Urdu), driven by actual lead and traffic demand — so a core requirement is that adding a new language is a SINGLE-STEP change, not a rebuild. Arabic is right-to-left. Launch scripts are Latin, Cyrillic and Arabic (later additions may include Thai). This is a bounded, well-defined job for someone who has shipped multilingual Ghost Pro sites before. It is NOT a from-scratch theme (see Base Theme). BASE THEME (buy-then-modify) - We will purchase a theme from the Ghost marketplace as the base; your job is to modify and extend it, not build from scratch. - Before we buy, we'll ask you to confirm that a specific candidate theme is a clean, standard, current-Ghost, extensible Handlebars theme suitable for routes.yaml multilingual work. - Strong preference for a base theme that already ships RTL support (proper dir handling plus mirrored CSS). If the chosen theme handles RTL natively, the RTL line item below shrinks or is removed. - Font and script support: launch scripts are Latin, Cyrillic (Russian) and Arabic — the theme's fonts must render all three correctly. Since we'll add languages later (potentially Thai), prefer a font stack that can extend to more scripts. Flag if a candidate theme's fonts don't support these, and specify webfonts that do. MULTILINGUAL ROUTING AND SEO (core scope) - routes.yaml with one collection per launch language (ru, ar) mapped to its subdirectory, plus a default (English) collection that excludes the language tags. Structure it so adding a future language (new collection, tag and hreflang entry) is a single-step change. - Language assignment via internal tags (for example hash-ru, hash-ar) so each post routes to the correct subdirectory collection. - Link translations to each other via a shared internal GROUPING tag (for example hash-grp-TOPIC) on every language version — NOT by deriving or stripping the slug. - hreflang alternate tags auto-generated in the page head for every language version of a page, including x-default. - IMPORTANT: each language version's hreflang AND canonical must point to that version's OWN real, published, 200-resolving URL. Do not strip slugs to fabricate clean URLs — Ghost Pro has no URL rewriting, so a stripped URL would 404. Suffixed or localized slugs are fine as long as the emitted hreflang and canonical URLs actually resolve. - Self-referencing canonical on every language version (each canonicals to itself, NOT to English). - Partial translations: when a translation does not exist for a given language, do NOT emit an hreflang alternate that 404s — only emit alternates for versions that exist and return 200. (This matters from day one, since most articles won't exist in every language yet.) - Crawlable language switcher using real anchor links (actual href links, no JavaScript-only switching). - og-locale meta emitted by the theme based on the page's language. - Confirm language URLs appear in Ghost's auto-generated sitemap (sitemap.xml). Note: hreflang lives in the page head, not in the sitemap — Ghost Pro's sitemap isn't editable; that's expected. RTL (separate line item) - Arabic is our only right-to-left language. Arabic (/ar/) pages must render correctly right-to-left (dir switching tied to page language plus mirrored CSS), not just hold Arabic text in an LTR layout. - Price RTL separately from routing and SEO. If the chosen base theme already supports RTL, we'll descope it. - RTL must also account for a site-wide floating chat bubble (see Embeds): it flips to the correct side on Arabic pages and must not collide with theme elements. NAVIGATION (phase one switcher; translated nav is phase two) - We will launch with the crawlable language switcher only. Translated per-language navigation menus come in a LATER phase, once our page structure and traffic-driving languages are settled. - IMPORTANT: structure the phase-one navigation so translated per-language menus can be ADDED later without a rebuild — a single-step change, not a refactor. (Ghost's nav is global by default, so account for this now.) - Please provide a separate, optional quote for the phase-two translated navigation work. EMBEDS AND CHAT (coexistence only — NOT your build) - We inject our own widgets and a site-wide AI chat bubble via code injection. You do NOT build, host or integrate these. - The theme must expose the current page's language in the DOM (a lang attribute on the html element and/or a body class) so our embed scripts can read it and render in the right language. - Ensure the theme has no fixed-position elements that conflict with a floating chat bubble in the bottom corner, and that your RTL work flips the bubble's side correctly on Arabic pages (handled jointly with our embed code). ENVIRONMENT AND ACCESS - You'll get Ghost admin access with permission to upload the theme and routes.yaml (Settings, then Labs). - Please build and validate on a local Ghost instance (or a throwaway dev instance) and hand over a tested theme zip plus routes.yaml that we deploy to production once the acceptance test passes. We'd rather not iterate live on production. ACCEPTANCE TEST (required before final payment) - We provide the topic plus English and one translated text; you create and tag the two language versions. We'll use Arabic as the second language so routing, hreflang, canonical AND RTL are all validated in the same test. - Demonstrate, via Google's Rich Results Test or a crawler (for example Screaming Frog): correct hreflang reciprocity, correct self-canonical on each version, both URLs returning 200, both present in the sitemap, and correct RTL rendering on the Arabic page. - Bonus check: demonstrate that adding a third language afterward is a single-step change. MUST-HAVE EXPERIENCE - Demonstrable prior multilingual Ghost (Pro) work using routes.yaml — link a live example or share a routes.yaml plus hreflang helper snippet. - Strong Handlebars theme development. - RTL theme implementation. - Solid technical SEO: hreflang, canonical, sitemaps, indexation. OUT OF SCOPE (please don't quote for these) - Translation of content (in-house). - Building or hosting the widgets or AI chat (we do this via code injection). - Per-post meta titles and descriptions (our content team fills these in each post's SEO fields). - Weglot or any third-party translation plugin — we're deliberately not using these. TO APPLY 1. Share a live multilingual Ghost URL you built (or a routes.yaml plus hreflang helper snippet). 2. Scenario: a page exists in English but its Arabic translation isn't written yet — what does your hreflang helper emit for the ar alternate, and how do you guarantee you never output an hreflang or canonical URL that 404s on Ghost Pro? 3. Confirm you can vet a candidate marketplace theme for RTL, clean extensibility, and Latin, Cyrillic and Arabic font support before we buy. 4. Estimate in days, with routing/SEO and RTL priced as separate line items, plus a separate optional quote for phase-two per-language navigation. We can provide theme access and a sample topic immediately and are ready to start.
$500.00
Fixed-price- IntermediateExperience Level
- Remote Job
- Ongoing projectProject Type
Skills and Expertise
Activity on this job
- Proposals:Less than 5
- Last viewed by client:2 weeks ago
- Hires:1
- Interviewing:1
- Invites sent:0
- Unanswered invites:0
About the client
- ChinaBeijing7:48 PM
- $172K total spent338 hires, 53 active
- 2,340 hours
- EducationSmall company (2-9 people)
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by