Issue #224 discussed various options for supporting multiple languages. As it turned out, the option labelled "cleanest" -- or something very like it -- was also the least confusing and easiest to implement. Specifically, configuration has now been divided into a text portion and a values portion.
All text presented to the user is defined in the text portion. Text is broken down into English (en) and French (fr) versions, in subdirectories of those names.
Almost all values used by the code are defined in the values portion. These values are common to all languages. A very small number of values are defined in the text portion (and repeated between languages); these are currently limited to definitions for a couple of dropdowns.
For both text and values configuration content -- particularly for text --, module config provides an interface that hides most of the organization inside the configuration files. If the configuration files are refactored, most of the effect will be confined to module config.
Resolves #224
Issue #224 discussed various options for supporting multiple languages. As it turned out, the option labelled "cleanest" -- or something very like it -- was also the least confusing and easiest to implement. Specifically, configuration has now been divided into a text portion and a values portion.
All text presented to the user is defined in the text portion. Text is broken down into English (en) and French (fr) versions, in subdirectories of those names.
Almost all values used by the code are defined in the values portion. These values are common to all languages. A very small number of values are defined in the text portion (and repeated between languages); these are currently limited to definitions for a couple of dropdowns.
For both text and values configuration content -- particularly for text --, module
config
provides an interface that hides most of the organization inside the configuration files. If the configuration files are refactored, most of the effect will be confined to moduleconfig
.