Localization
The Cloudrexx localization system provides a robust solution for creating and managing multilingual content as well as localized interfaces.
Architectural Overview
The localization system revolves around the following key entities:
Language Entity
The \Cx\Core\Locale\Model\Entity\Language
entity represents a language and its corresponding ISO 639-1 (Language::$iso1
) and ISO 639-3 (Language::$iso3
) codes.
Language entities that provide Interface Texts have the property Language::$source
set to true
and are mapped through Language::$localeRelatedBySourceLanguages
by Locale
entities using it as Locale::$sourceLanguage
.
Language entities that are installed in the Backend have an association to a Backend
entity (through Language::$backend
).
Language entities that are used in the Frontend are associated to Locale
entities (through Language::$localeRelatedByIso1s
).
Backend Entity
The \Cx\Core\Locale\Model\Entity\Backend
entity represents an installed Language
(referenced through Backend::$iso1
) of the Backend.
Locale Entity
The \Cx\Core\Locale\Model\Entity\Locale
entity represents an installed locale of the Frontend which is specificed as a Language
-Country
combination.
Language
The associated Language
entity (which is mandatory for every Locale) is represented by Locale::$iso1
.
Country
The associated Country
entity (which is optional) is represented by Locale::$country
.
Source
Aside from the associated Language
entity, each locale is assigned a second Language
entity as its $sourceLanguage
property. The source language refers to the localization set used for Interface Texts.
Label
By default the label (Locale::$label
) of a locale is autogenerated based on its Language
-Country
combination.
However it can be overwritten using Locale::setLabel()
.
Examples for autogenerated labels (if not set manually)
The following combinations show the generated labels:
Fallback
For each Locale
a Fallback Locale can be defined (as Locale::$fallback
). The Fallback Locale should be used by Components for autogenerated translation of missing localized data.
A Fallback Locale is represented as an other already existing Locale
.
Frontend
Each Locale
entity is mapped by one or more \Cx\Core\View\Model\Entity\Frontend
entities.
Translation Entity
The entity \Cx\Core\Locale\Model\Entity\Translation
is used to store the localized data of localized Doctrine entities.
Implementation Examples
Here are some common usage scenarios when working with the Cloudrexx localization system:
Add a new locale
Retrieving a locale by language and country