Skip to content

Support simple-language variants of the same locale (e.g. German Leichte/Einfache Sprache) #623

@apermo

Description

@apermo

Summary

Add first-class support for offering a "simple language" variant of the same
base language alongside the standard variant — primarily German Leichte
Sprache
/ Einfache Sprache, but the same shape applies to any
accessibility-driven simplified register.

Background

German public-sector and many private sites are required or strongly
encouraged to provide content in Leichte Sprache (Easy Language) and/or
Einfache Sprache (Plain Language) for accessibility reasons (BITV 2.0,
BFSG / EU Accessibility Act). In a WordPress multisite this is naturally
modelled as an extra blog whose content mirrors the standard German blog at
a simpler reading level.

The blocker today: both blogs use the WordPress locale de_DE. MSLS keys
blogs and translation links by locale string, so two blogs sharing de_DE
cannot both participate in the same translation group — only the first match
wins.

Relation to #112

This is the same underlying limitation reported in #112 (multiple Canadian
provinces all using en_CA). #623 is the German accessibility instance of
that pattern. Whatever mechanism resolves #112 — e.g. a per-blog
language-variant suffix, a blog-id-based key, or a configurable
"discriminator" alongside the locale — should also unblock this case.

Listing them as separate tickets so the accessibility use case stays
discoverable, but they should be solved together.

Desired behaviour

  1. Two (or more) blogs in the same multisite can declare locale de_DE
    while being distinguishable to MSLS — e.g. via an additional
    "variant"/"flavour" setting per blog (standard, leichte-sprache,
    einfache-sprache, …).
  2. Translation links connect a post on the standard-German blog to its
    counterpart on the Leichte-Sprache blog (and vice versa) without
    collisions.
  3. The language switcher / hreflang output represents the variant
    sensibly. There is no IETF BCP 47 tag for Leichte Sprache; reasonable
    options are a private-use subtag (de-DE-x-easy) or a documented
    non-standard label — to be decided as part of the implementation.

Notes for implementation

Relevant entry points (no change proposed here, just orientation):

  • MslsBlogCollection::get_blog_language() and get_blog() /
    get_blog_id() in includes/MslsBlogCollection.php — currently assume
    one blog per locale.
  • Translation link storage as locale => post_id in
    includes/MslsLanguageArray.php; admin field naming
    (msls_input_<LOCALE>) parsed in includes/MslsMain.php.
  • Existing filters that may help: msls_blog_collection_get_blog,
    msls_blog_collection_get_blog_id, msls_input_select_name.

Out of scope

  • Generating or auto-translating simple-language content.
  • Editorial workflow for keeping the simple-language version in sync.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions