Maintaining parallel English and Turkish content is straightforward in theory but operationally demanding in practice. JekCMS supports hreflang pairs, language-specific post trees, or a single post with multilingual meta. This guide describes the three most common approaches our customers use.
The hreflang pair approach treats each language as a separate post. A translated_from meta key on the secondary language post points to the primary post's ID. JekCMS reads this meta key and outputs the correct <link rel="alternate" hreflang="..."> tags automatically. Both posts are indexed independently and can have different publish dates, which is useful when translations are delivered on a delay.
URL-Prefix Post Tree: The Scalable Approach
The URL-prefix post tree approach uses /tr/ as a namespace and a shared slug. A single JekCMS installation serves both languages from the same database; the lang column on the posts table determines which version is served for a given URL. This is the approach used on the jekcms.com marketing site. It works well when both language versions are maintained in parallel and you want a unified admin interface for all content.
Single-Post Multilingual: Simple but Limited
The single-post multilingual approach stores all language versions in one post row using meta keys: title_tr, content_tr, and so on. It is the simplest approach from an editorial standpoint — one post to manage — but it requires manual hreflang implementation and produces non-standard URLs unless you configure the router to recognise language-specific paths. We recommend this only for sites with very few translatable content items.
Preventing Content Drift
Whatever approach you choose, assign a specific person responsible for each language version. The most common long-term failure mode is content drift — one language is updated after a product change or factual correction, and the other is not. Establishing a translation checklist that runs whenever source content changes prevents drift from compounding over time.
Configuring Hreflang Tags in JekCMS
Hreflang implementation requires correct tag output in the HTML <head>. JekCMS generates these automatically when the translated_from meta key is set. Here is what the output looks like for a post with English and Turkish versions:
<link rel="alternate" hreflang="en"
href="https://example.com/seo-best-practices" />
<link rel="alternate" hreflang="tr"
href="https://example.com/tr/seo-en-iyi-uygulamalar" />
<link rel="alternate" hreflang="x-default"
href="https://example.com/seo-best-practices" />
The x-default tag tells search engines which version to show when the user's language does not match any available version. Always set it to your primary language. Both posts must reference each other — a common mistake is adding the hreflang tag to only one post, which search engines treat as an invalid configuration.
Validating Your Hreflang Setup
- Use Google Search Console's International Targeting report to identify hreflang errors
- Every hreflang tag must have a return tag on the referenced page — if page A points to page B, page B must point back to page A
- Each URL in hreflang tags must be absolute (including protocol and domain)
- Hreflang tags must appear on canonical URLs, not redirected or alternate URLs
SEO Considerations for Multilingual Content
Separate Sitemaps Per Language
Generate a separate sitemap for each language and reference them from your main sitemap-index.xml. JekCMS handles this automatically when using the URL-prefix approach. For the hreflang pair approach, both language versions appear in the same sitemap with their hreflang annotations included as <xhtml:link> elements inside each <url> block.
Meta Descriptions and OG Tags
Each language version needs its own meta description and Open Graph tags. A common oversight is translating the post content but leaving English meta descriptions on the Turkish version. JekCMS's post editor includes separate meta fields for each language when using the URL-prefix or hreflang pair approaches. For the single-post approach, add meta_description_tr and og_title_tr to your post meta keys.
Choosing the Right Approach: Decision Matrix
- Fewer than 20 translatable pages: Use single-post multilingual. The operational simplicity outweighs the URL limitations at this scale.
- 20 to 200 posts with dedicated translators: Use hreflang pairs. Each language operates independently, and translation delays do not block the primary language's publishing schedule.
- 200+ posts or a growing content team: Use URL-prefix post trees. The unified admin interface prevents duplicate work, and the scalable URL structure supports adding more languages in the future.
- E-commerce or transaction-heavy sites: Use URL-prefix with subdirectories. Users expect consistent language throughout checkout flows, and subdirectories keep all language-specific content under one domain for link equity.
Translation Quality and Review Workflows
Machine translation has improved dramatically, but it still produces awkward phrasing in technical content. The most effective workflow we have seen pairs machine translation with a native-speaking editor who specialises in the subject matter.
The machine handles the bulk translation in minutes, and the editor refines terminology, adjusts sentence structure for natural readability, and verifies that code examples and technical terms remain untranslated where appropriate.
This hybrid approach cuts translation costs by roughly 60% compared to fully manual translation while maintaining a quality standard that readers trust. Schedule the editorial review as a mandatory step in your publishing pipeline rather than an optional pass that gets skipped under deadline pressure. Investing in this process from the beginning prevents costly retroactive corrections that multiply as your content library grows across both languages.