The multi-lingual multi-domain problem
- In a multi-lingual install, the schema is changed to add columns for all translatable fields.
- One column is added per language.
- The list of languages is stored in
- For unknown historical reasons,
localeswas only populated for domain 1. It was thus treated as a "master domain" although there doesn't appear to be any documentation of this.
- So in a multi-domain setup, domain 2 would inherit its language settings from domain 1.
civicrm_domain.localesbe populated for domain 1 but
nullfor domain 2+ is confusing to devs and leads to crashes when relying on that value from the current domain.
- Bug reported in #1800
- Ensure all domains have
localespopulated when enabling multilingual: https://github.com/civicrm/civicrm-core/pull/17733
- An upgrade script to ensure
localesis the same for all domains: https://github.com/civicrm/civicrm-core/pull/17738
Once the relatively easy stuff is solved by merging the fixes above, we might consider:
- What happens if the admin desires one domain to be single-language and another to be multi?
- When reverting from multi-lingual back to single, are all domains affected?
- What if different multi-lingual domains want to support different languages?
- Is all of the above completely unreasonable and multilingual settings should just always be the same across domains?
To upload designs, you'll need to enable LFS. More information