VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

Translate Like a Pro | 5800 — django CMS Multilingual Pages, PageContent, Plugins, Fallbacks and SEO QA

django CMS multilingual translation rests on a clear distinction between a page’s identity and the language-specific content shown on that page. In modern django CMS, a Page can represent the shared place in the website structure while PageContent stores information for a particular language, including titles, descriptions and related presentation choices. Translating a django CMS website well means understanding that content model, language settings, plugins, routing, menus, publishing and search visibility together.

Readers looking for django CMS multilingual setup, CMS_LANGUAGES configuration, translated PageContent, plugin localization or fallback behavior usually need a practical explanation of why some pages are in German while others redirect to English. Translating a paragraph is only part of the solution. A multilingual release also needs suitable URL patterns, complete language-specific placeholders, correct navigation visibility, approved interface strings and accurate conditions for what happens when a translation does not exist.

This guide shows a complete world-facing workflow for editorial teams and Django developers: define the audiences, configure supported languages and routes, build and review corresponding page content, localize plugins and forms, test fallback paths, and publish only when visitors can complete a coherent journey. It focuses on django CMS itself rather than general Django internationalization or generic machine translation; check the installed django CMS release because older versions can use different APIs and publication models.

Quick definition: page identity and translated content

The modern django CMS documentation describes a grouper/content pattern. A Page is a language-independent object associated with structure and identity. A PageContent row represents the content of that page in one language. Thus one page can have separate English and German PageContent records while remaining the same conceptual page in the site’s navigation tree.

This is useful because the page’s role may be stable even though its public title, description and components differ linguistically. But it has a consequence: creating a Page does not mean every language has PageContent. The publisher must track which versions actually exist and whether they are public. A blank in the translation plan is a content-availability fact, not merely a missing word in an otherwise complete document.

Imagine a university website with one admissions page identity. Its English PageContent explains eligibility, deadlines and links; its German PageContent offers the equivalent information in fluent German. The underlying subject is shared, but each language can have its own text and plugin layout. Reviewing only the English page says nothing about whether the German visitor can complete the task.

Understand the role of language configuration

Django projects use settings such as LANGUAGES and LANGUAGE_CODE, while django CMS adds CMS_LANGUAGES to control content-language behavior. These settings are related but not interchangeable. LANGUAGES expresses which languages Django recognizes; CMS_LANGUAGES describes how the CMS treats languages for its content and possibly for particular sites.

Before translating, inspect the live configuration with a developer. Record which languages are enabled, which are available publicly, their fallback order and the intended URL strategy. A multilingual site can appear correct in an editor account while anonymous visitors cannot access a target language because of CMS settings. Do not start translating hundreds of pages without this configuration picture.

Choose codes that represent the actual audience. A generic Portuguese translation is not automatically a Brazil-specific policy, and a German language version does not imply that the service operates under German law. Language configuration should match what the content claims. When region-specific rules differ, build a plan for those differences rather than placing contradictory details into an otherwise shared translation.

Choose stable multilingual URL patterns

The documentation describes language-prefixed URLs, per-domain language sites and URL schemes that rely on preferences without a visible language marker. Prefixes such as /en/ and /de/ are often practical because the language is explicit in a link that someone can share. In a typical Django project, i18n_patterns can be involved in producing those prefixed routes.

Per-domain setups can serve language-specific properties where governance or branding requires them. They add their own operational tasks: domain configuration, site identities, secure certificates, consistent canonical addresses and maintenance across properties. A scheme relying only on cookies or browser headers is more difficult to reason about for indexing and direct sharing because the URL may not tell the reader which language they will see.

Decide the route strategy before migrating translated content. Changing public paths later may break citations, bookmarks and search results. Test a direct deep link from a fresh browser without stored preferences. If a colleague shares a German enrolment guide, a reader should reach that German guide reliably even if their browser normally prefers English.

Separate language preference from content availability

The official django CMS explanation distinguishes two questions: which language the visitor wants, and whether the requested page has content in that language. They are resolved through different mechanisms. A visitor’s preferred language can come from a URL, session, cookie where configured, browser header or default project setting. That preference alone does not create missing content.

Suppose someone requests /de/research/. The routing system determines that German is requested. The CMS then checks whether the relevant page has a German PageContent row. If it exists and is eligible for display, the page can be served in German. If it does not exist, the site’s fallback configuration determines the next step. Understanding the sequence avoids the common mistake of blaming the translation text for a routing or availability defect.

Write a behavior table for every public language. Include an existing translation, a missing translation, a hidden target language and a page intentionally unavailable in that locale. Test these cases with concrete URLs. A site that handles only the happy path may mislead visitors precisely when they need help navigating an incomplete content estate.

Set an explicit fallback policy

CMS_LANGUAGES can define fallback languages. When a requested language is unavailable for a page, the system may look for another language according to the configured order. The behavior is not just a technical convenience. Showing an English instruction in response to a German URL may be acceptable for a historical archive but inappropriate for a public application process that promises German support.

The redirect_on_fallback setting affects whether the visitor is redirected to the fallback language’s actual URL or sees fallback content under the originally requested address. The documentation describes redirection as the default. Keeping a German prefix while serving English content can confuse both readers and search systems; if an organization deliberately chooses that behavior, it should understand and document the tradeoff.

Decide on fallback by content risk. For low-stakes optional reading, an honest redirect to an English original may be useful. For fees, safety information, application rules or consent, publishing a partial target-language journey may create more harm than withholding it until complete. The best policy is the one the site can explain and test, not whichever setting makes missing pages disappear least visibly.

Use hide_untranslated and public responsibly

django CMS supports hiding pages without target-language content from language-specific menus. Its documentation describes hide_untranslated and a public flag in CMS_LANGUAGES. These controls influence what visitors can discover and whether a language is available to anonymous users. They are valuable for staging content without exposing unfinished sections.

A page hidden from the menu may still need direct URL testing, and a page visible to an editor may not be public. Build quality checks around the actual anonymous visitor response. Do not tell a stakeholder that German support is live merely because German PageContent rows exist in an administrative view.

Test each configuration choice intentionally. When hide_untranslated is disabled, a menu may show pages that ultimately serve a fallback language. A visitor might click a German navigation label and land on an English page. That could be an acceptable signposted behavior in a specialist archive, but it should not emerge accidentally from a forgotten default.

Treat PageContent as a complete editorial unit

A language-specific PageContent record can carry a title, meta description, template choice and navigation visibility. Its associated placeholders and plugins are language-specific as well in the modern model. Translators should therefore review the whole content presentation, not only the title field. A German page may have appropriate prose but a missing call-to-action plugin or an English-only sidebar.

Develop a checklist for every PageContent version: title, slug or route where relevant, meta description, visible body, plugins, navigation setting, links, media and publication state. Include an owner and a timestamp. The content team then knows what “reviewed” means. Otherwise a translation can pass a text check while the actual page shows a completely different visitor experience.

Avoid assuming that copying or creating a translation also duplicates every necessary plugin in precisely the right state. Inspect the target language’s placeholders in the actual editor and public output. Layout decisions can differ legitimately by language, but essential steps should not vanish because one localized placeholder was left empty.

Understand placeholders and language-specific plugins

A django CMS page can contain placeholders holding plugins. Plugins may render text, images, forms, cards, navigation fragments or custom applications. In the current multilingual architecture, each language can have its own content and plugins associated with the page content. That is powerful, but it creates additional translation tasks.

Imagine an English emergency-preparation page with a heading, a checklist plugin, a downloadable map and a contact card. If the German PageContent contains only the heading and introductory text, the page is not equivalent. The missing checklist may carry the most important instructions. Treat plugin inventories as part of translation scope and verify each plugin’s data source.

Some custom plugins may obtain text from Django models outside normal PageContent. Their behavior depends on how they were developed. Ask the technical owner whether the content is locale-aware, shared or supplied by an external system. A translator should not be expected to repair a data model by inserting extra explanatory paragraphs into the CMS page.

Translate plugin content without breaking behavior

A plugin often has editable text and technical settings side by side. The visible label may be translated, but a route name, identifier or API parameter may need to remain unchanged. Developers should document these boundaries so translators can work safely. A bilingual text review alone cannot determine whether a plugin still functions.

Consider a registration card with the visible label “Apply now,” a link target and a tracking code. The label should sound natural in the target language. The link should go to the appropriate localized application, if available. The tracking code must remain a valid machine-readable value. Treat these as three distinct checks: language, destination and integration.

Run functional tests after changing plugin data. Does the card open the correct form? Are validation errors translated? Does the widget still load on mobile? Is the plugin present on the public page and not merely in a draft? This discipline prevents an apparently fluent translation from becoming an unusable interface.

Distinguish Django gettext strings from CMS content

Django applications use internationalization mechanisms such as gettext-based message catalogs for static interface strings. That is separate from content held in django CMS PageContent records. A button rendered by a custom Django view may require translating a code string; the article next to it may be edited directly in the CMS.

Find the source of each visible message before making changes. If a translator cannot find “Search results” in the page editor, the text may originate in a view, template or plugin. Conversely, changing a message catalog will not rewrite the description paragraph an editor stored as page content. Both systems need to be considered in an international release.

Context matters enormously for short strings. “Open” may describe a verb or a state, “Apply” may be an instruction or a filter action, and “Current” can refer to time or electricity. Provide screenshots and expected behavior. Preserve placeholders and plural formatting and test dynamic messages with zero, one and multiple objects.

Build a language-aware navigation journey

Menus in django CMS reflect the availability and visibility of language-specific content. A translated page that is not in navigation may still exist, while a missing language version can be hidden or shown according to configuration. Create a route map that starts with the target-language homepage and reaches the actual information readers need.

For a university website, the German navigation might lead through “Study,” “Admissions,” “Entry requirements” and “Application.” The labels may differ linguistically from English, but the reader’s purpose must remain intact. A user should not encounter unrelated English links halfway through a critical route because a plugin was copied without updating its URL.

Test both top-down navigation and deep entry. Search engines and email links often land visitors directly inside a site. A reader arriving on the final requirements page still needs a clear route to the application form, privacy notice and support contacts. Navigation must function from every entry point, not just the top menu.

Coordinate apphooks and localized applications

django CMS can mount Django applications using apphooks. A page may therefore connect to a dynamic application that supplies many URLs and records outside ordinary page content. Translating the CMS page’s title does not automatically translate the app’s forms, listings, database content or notification emails.

Document which portions of the visitor journey are controlled by the CMS and which are handled by a mounted application. An events app may provide event descriptions, ticket types, filters and booking confirmation. A target-language landing page is useful only if the app can deliver the expected language experience or clearly explain its limitations.

Collaborate with application developers to keep stable URL names, identifiers and data values while localizing user-facing text. Test applications in the context of the surrounding CMS language, not just in isolation. A correct German event card that opens an English booking dialog is a gap even though both parts function technically.

Configure multiple sites without confusing language and region

django CMS can serve projects that use multiple Django Site objects. A per-domain language strategy might assign different languages to different sites, while another project might offer several languages under one host. The correct architecture depends on governance, local services, branding and maintenance capacity.

A regional service can legitimately vary by law or product availability. Do not force a German translation of a global policy to stand in for Germany-specific legal text unless it has actually been reviewed for that jurisdiction. Similarly, do not assume that two English domains provide identical services. A language and a country are different dimensions.

Maintain a matrix connecting domain, site identity, supported languages, default language, critical content and policy owner. It helps developers reason about URL resolution while giving editors a clear answer to which page version is authoritative. A coherent matrix also reduces the risk of duplicate or conflicting SEO signals across domains.

Make source content ready before translation

Translation quality improves when source pages are clear, current and purposeful. Eliminate ambiguous pronouns, inconsistent terminology and unexplained abbreviations where the source can be improved safely. An unclear source instruction is difficult to translate accurately because the translator must guess which meaning was intended.

Identify definitions, rules, examples, warnings and optional recommendations. The target page must preserve their different roles. “You may provide a reference” is not interchangeable with “You must provide a reference.” A word indicating uncertainty in a scientific claim should remain uncertain after translation. A fee waiver that applies only under a condition must keep that condition.

Provide translators with a page preview, screenshots of plugins, relevant terminology and audience context. If an image contains written instructions, include it in the translation package. The content handover should allow a reviewer to understand the reader’s whole task without reverse-engineering the project from database fields.

Build a terminology and style guide

A multilingual team needs shared decisions for frequently repeated concepts. For an admissions site, “programme,” “module,” “course,” “credit” and “qualification” may have specific definitions. A target-language glossary should preserve those distinctions even when everyday usage is more flexible. Add source examples, approved target expressions and a reviewer to resolve uncertainty.

Include style decisions about formality, address, abbreviations and use of regional vocabulary. The appropriate tone of a public service differs from the tone of a promotional article. Localization can change sentence order and sentence length while preserving factual claims and reader intent. Consistency should be conceptual, not an attempt to reproduce the source’s word count.

Update the glossary when new pages expose genuine ambiguity. Record why a choice was made. A translator joining later should be able to understand the decision without asking the original author. Controlled terminology becomes particularly valuable when different PageContent versions are edited independently over many months.

Handle dynamic data and formatted values

Page content may display data retrieved from an application: event dates, prices, capacities, percentages, student numbers or research statistics. The translation must not change the underlying value accidentally. Locale-sensitive formatting can adjust separators, day-month order and currency presentation while preserving the fact.

Use clear written months where an ambiguous numerical date could alter a deadline. Confirm the time zone of global events rather than merely translating the word “tomorrow.” Check negative conditions, thresholds and exceptions with the source owner. A number displayed in a plugin may come from a database field; its label and unit need translation even if the number itself remains invariant.

Test dynamic messages under multiple states. A registration interface may show “One place remaining” and “Three places remaining.” Plural grammar changes across languages, and a static replacement may not handle every count. Verify realistic data values and error conditions instead of approving a single default screenshot.

Plan metadata, canonical URLs and hreflang

A multilingual page should have a search title, description and heading that make sense to its intended reader. The django CMS PageContent model supports language-specific metadata, but the rendered outcome still depends on templates and deployment choices. Inspect the actual page source, not only the editor values.

Stable language-prefixed or language-domain URLs help search engines and users find the right version. Where hreflang annotations are used, they should point to genuine alternate pages with correct language-region codes and reciprocal relationships. A French page should not advertise a German translation if that destination falls back to English or is not public.

Review canonical tags in the context of each language version. Do not indiscriminately canonicalize every translated page to the English original. Search systems make their own indexing decisions, and no markup guarantees a ranking, but coherent titles, URLs and accurate alternate links reduce unnecessary confusion.

Test sitemaps, indexing and page discoverability

A page can be published in the CMS yet difficult to discover if navigation, sitemap or search configuration overlooks it. Test direct URL access, menu links, site search and XML sitemap output where applicable. A multilingual site should not rely entirely on a language dropdown to expose all target content.

Use a small set of real queries per language, including natural regional synonyms and proper nouns. Check that target-language search results show localized titles and excerpts and lead to the expected destinations. Search is often implemented by additional components, so inspect the site’s actual indexing pipeline rather than assuming a default Django mechanism covers every content field.

Be alert to fallback pages appearing under the wrong language URL. If the site serves source-language content without redirecting, search engines and readers may see a mismatch between URL and body. Make the intended policy explicit and ensure the SEO implementation reflects that policy consistently.

Review accessibility and content layout

Translation can expose defects that are invisible in the default language. German compounds may expand navigation labels, while Arabic or Hebrew may require right-to-left rendering and careful handling of mixed-direction numbers or names. A translated page should remain usable on narrow screens and with increased text size.

Check headings, language metadata, keyboard focus, link descriptions, image alternative text and form errors. The language of a page matters to speech synthesis: an incorrect language attribute can cause a screen reader to pronounce an entire paragraph incorrectly. If a plugin renders an icon-only language selector, ensure it has an accessible name.

Do not reduce essential meaning just to make a layout look like the English version. Fix responsive constraints, adjust plugin presentation or choose a naturally concise translation with qualified review. Accessibility and linguistic accuracy reinforce one another; a page is not truly translated for a reader who cannot navigate it.

Coordinate publishing per language

A multilingual content team needs a clear answer to what is public and what is still being edited. The modern django CMS model permits separate language-specific content, and releases may involve draft or publish states depending on installed version and workflow. Verify the site’s exact publication behavior before relying on an editor preview as proof of public availability.

Define explicit approval states: source ready, translated, meaning reviewed, functional QA passed and public. A target language might be prepared while CMS_LANGUAGES marks it nonpublic. That is a reasonable staging approach, but the team should know when the transition happens and what needs testing immediately afterward.

Publishing one translated PageContent row should not be mistaken for a whole journey being live. If the contact form, plugin data and related application are still untranslated, the visitor experience remains incomplete. Use a release bundle that groups the necessary pages and components, with a rollback owner and a written verification checklist.

Maintain translations when the source changes

A public website changes continuously. New eligibility rules, research findings, fees and deadlines can make a previously accurate translation outdated. Track material changes to the source and identify every affected PageContent and plugin. A shared Page identity does not automatically keep semantic equivalence across language versions.

Distinguish minor copy edits from substantive changes. A comma correction may be low priority; a revised scholarship deadline requires prompt review in every promised language. Keep a change log showing the source version, reviewer, target-language completion and public verification. This prevents a quiet drift where one language tells readers to follow last year’s rules.

Give high-risk content a stronger maintenance standard. Legal consent, public health instructions and application conditions may require specialist review. Translation technology can assist with identifying changed strings, but editorial accountability remains with the publisher. Accuracy is an ongoing responsibility rather than a one-time publishing milestone.

Worked example: a bilingual international research centre

Imagine a research centre that publishes English and French information about laboratory visits. Its website uses django CMS for visitor pages and a custom Django apphook for booking appointments. The reader must understand eligibility, safety requirements, available dates, accessibility arrangements and confirmation instructions. A translated landing page alone will not satisfy that goal.

The team starts by mapping the complete journey. In the CMS, one Page represents the visit programme while separate English and French PageContent versions hold the explanatory titles, descriptions and plugin content. The booking application has its own translated labels, date displays and messages. The team distinguishes shared rules from region-dependent contact information and records any differences explicitly.

The developer confirms the relevant LANGUAGES and CMS_LANGUAGES settings, URL strategy, fallback order and public flags. English and French content routes receive stable, shareable addresses. The release policy hides incomplete French pages from public navigation rather than exposing a French menu that leads to English safety instructions without explanation.

Editors prepare a glossary for “laboratory induction,” “supervised access,” “visitor clearance” and “restricted area.” The source says that visitors must receive approval before entering a laboratory; the French translation must preserve the condition and the timing. A safety diagram includes language-specific labels or an accessible equivalent. Dynamic appointment counts come from the application, and the text surrounding them is tested for proper grammar.

Next, reviewers inspect each PageContent’s plugins, metadata and menu visibility. They follow the French landing page to the booking apphook, leave required fields blank to check errors, then submit a valid test booking and inspect the email. They also test an intentionally untranslated archive page to confirm what fallback actually does. In this scenario, an explicit redirect to an English original may be more honest than displaying English text at a French URL.

Finally, the team checks language-prefixed links, alternate-language markup, sitemaps, accessibility and responsive layout. A native French reader completes the visit-booking task without relying on English knowledge. This is the true measure of a completed django CMS localization: PageContent, plugins, application functions and navigation work together to preserve meaning and action.

Troubleshooting the most common multilingual problems

A German URL serves English text

Check whether the requested Page has a German PageContent row. Then inspect CMS_LANGUAGES fallback order and redirect_on_fallback. A fallback can be intentional, but it should match the site’s published language policy.

A translated page is missing from the German menu

Inspect the language-specific PageContent, its in_navigation flag and hide_untranslated settings. Verify that the language is public and the content version is eligible for anonymous readers.

Editors see the translation but visitors do not

Check publication state, language public flag, caching and permissions. An editor preview is not equivalent to a public response. Reproduce the issue in a private browser session using a direct URL.

A translated page has no call-to-action

Inspect its language-specific placeholders and plugins. The source-language PageContent may have a plugin that was not created or configured in the target language. Review the whole rendered page, not just the body field.

A language switcher leads to the wrong route

Check language URL strategy, site configuration and the corresponding page’s availability. Confirm the target route actually resolves and that a hidden or unpublished translation is not being offered as live.

A form is translated but its errors are English

Find whether messages come from Django gettext strings, a custom app, a plugin or CMS content. Translate the correct layer, preserve placeholders and test invalid and valid submissions.

A region-specific price differs from the source

Determine whether this is a valid market difference or an accidental translation error. Keep invariant values separate from locale-specific business rules and record who approved the difference.

A long translated title breaks the page layout

Test text expansion with responsive layouts and larger text settings. Adjust CSS or plugin presentation instead of deleting important meaning. Native-language review should approve any shortened label.

A sitemap omits the new language

Check public content availability, route settings and the site’s sitemap implementation. A translated PageContent record in an editor view is not enough; inspect what the sitemap actually exposes.

Search results return the wrong language

Review the search index and query pipeline, including any custom apphook or third-party search integration. Test a target-only term and verify result URLs, titles and excerpts.

The same page appears under two unexpected URLs

Check language routing, canonical links, redirect policy and site/domain configuration. Decide which address is authoritative for each language and repair inconsistent signals without casually breaking existing public links.

A change to English left French instructions outdated

Use source-change tracking to identify affected PageContent and plugin content. Review meaning, not only literal string differences, and release the updated French journey with public verification.

A four-week learning and deployment plan

Week one documents what exists. List the supported languages, CMS_LANGUAGES settings, URL scheme, page types, plugin types and apphooks. Identify two complete visitor tasks and all content they require. Build a glossary and record high-risk conditions, such as fees, deadlines and legal commitments. This produces a shared model for both editors and developers.

Week two proves the approach on staging. Create or review one source Page with two PageContent versions, check title and description, and inspect a simple plugin and a form. Test direct routes, fallback redirection, menu visibility and the public flag. Make one version intentionally unavailable so the team learns how a missing translation actually behaves.

Week three expands the useful content. Translate priority pages, plugins, downloads and application interface strings. Review target-language readability, accessibility, metadata and search. Test the two user journeys with native speakers. Record incomplete target PageContent and any fallback behavior that would surprise readers.

Week four publishes the approved language paths and performs public read-back. Use direct links, anonymous sessions and realistic form submissions. Review canonical and hreflang signals, responsive design and search visibility. Assign owners for source changes and for future translated releases, because the quality of an international website depends on maintenance long after the initial launch.

Release verification checklist

Select representative routes: a language homepage, a deep translated page, a page with multiple plugins, an apphook path, a form, a search result and an intentionally unavailable translation. Check the requested language, PageContent availability, fallback behavior, navigation visibility, public status and actual rendering. Record the observed result and expected behavior for each.

Compare facts, quantities, exceptions, dates and negations against the source. Confirm that required plugin content exists in the target language and that dynamic interfaces use localized labels without corrupting machine values. Test accessibility, mobile screens and keyboard navigation. An editor can approve a beautiful paragraph only after the attached journey works.

For search and discoverability, inspect stable URLs, page titles, descriptions, canonical metadata, alternate-language signals and public sitemap coverage. These checks do not guarantee search ranking. They make the content interpretable and reachable, which is the foundation on which readers and search systems can rely.

Frequently asked questions

Are Page and PageContent the same object?

No. In the modern django CMS architecture, Page represents the shared page identity and PageContent represents language-specific content. One page may have distinct content rows for different supported languages.

What is CMS_LANGUAGES used for?

It controls CMS content-language behavior such as supported languages, fallback rules, public availability and visibility behavior. It complements Django’s general language configuration rather than replacing it.

Why does a missing translated page redirect to English?

The configured fallback list may select English, and redirect_on_fallback can send the visitor to the fallback’s own URL. This behavior can be useful, but must be tested and explained in a multilingual publishing policy.

Does django CMS automatically translate every plugin?

No. Language-specific content and plugins need appropriate editorial work, and custom plugins or apps may have their own translation mechanisms. Inspect the rendered target page to identify every visible text source.

Can the French menu contain fewer pages than the English menu?

Yes. Content availability and navigation flags affect which items appear. A shorter menu may accurately reflect incomplete or market-specific content, but essential promoted journeys should remain coherent.

Should international SEO rely only on hreflang?

No. Search visibility also depends on accurate localized text, stable URLs, crawlable navigation, sensible canonicalization and page usefulness. Hreflang is one relationship signal, not a substitute for a complete translation.

What is a useful final acceptance test?

Ask a target-language reader to locate the right information, follow its instructions and complete the next task without switching languages unexpectedly. Validate that the process preserves facts, choices and outcomes, not just fluent text.

Official documentation and deeper study

Consult django CMS’s Serving content in multiple languages and How to serve multiple languages for the modern PageContent model and configuration behavior, plus the Django translation documentation for application-level strings. Check the version of your installed project before following implementation details. Explore the Master Art of Translation and the Translate Like a Pro series index for the wider educational architecture.