amelinium.http.middleware.language
added in 1.0.0
amelinium service, language middleware.
config
(config req)(config req config)Returns language settings obtained from a request map.
default-lang-id
(default-lang-id req)(default-lang-id _ config)Returns an ID (a keyword) of a default language set in config (under the :default key) or a value of the default-fallback-language variable (:en).
force
(force req language)Forces different language in a request map by setting :language/id and :language/str.
from-form-params
(from-form-params req)(from-form-params req config)(from-form-params req _ lang-param supp)get-in-req
(get-in-req req supported k)(get-in-req req supported k1 k2)(get-in-req req supported k1 k2 k3)(get-in-req req supported k1 k2 k3 & kpath)Reads a language from the given request map by getting a value specified by a sequence of keys, converting the result to a keyword and checking against a set of supported languages.
param
(param req)(param _ config)Returns a value associated with :param key in settings obtained from a request map or a config. If it does not exist or has falsy value, default-lang-param is returned.
pick
(pick req)(pick req pickers)(pick req picker-id)(pick req pickers picker-id)Picks the right language using a chain of picking functions identified by a keyword. In its unary variant it obtains language picker chains configuration from a request map (under :language/pickers key) and looks for the picker chain identified by the :default key. When it’s not nil, it is used.
In its binary variant it takes a request map and pickers configuration given as a map OR a request map and an ID of a picker given as a keyword. When a map is given, the picker chain associated with the :default key will be used. When a picker ID is given the chain will be selected from picker chains obtained from the req under the key :language/pickers. Next, the picker chain will be run with a request map as its argument and the result will be then returned.
In its ternary variant the given pickers map will be used to look for a chain under the given picker-id. This chain will be run with a request map as its argument to get the language.
If the value returned by a language picker chain will be nil or false then the default language will be returned (if configured).
pick-without-fallback
(pick-without-fallback req)(pick-without-fallback req pickers-or-picker-id)(pick-without-fallback req pickers picker-id)The same as pick but returns nil instead of a default language when pickers cannot get one.
process-picker
(process-picker config p)Prepares a single picker. If it is a map, :compile key should be associated with a function which will return a language-picking function. Symbol may be given and it will be resolved. The compiling function should take a single argument which is a middleware configuration. All keys of the map except :handler and :compile will be passed to it.
If :handler is specified in a map, it should be a function or a symbol which resolves to a function.
If the p is not a map, it should be a function.
A function returned by the compiling function, given as :handler, or simply assigned should take one argument, a request map, and return a language identifier as a keyword.
When a language-picking function is created on a basis of a map (specified by :handler or :compile) then it has the responsibility of transforming its result to a keyword and checking if the chosen language identifier belongs to a supported languages expressed in a configuration as a set under the :supported key. Note that picker compiling function will receive configuration under the config key and should generate a function which takes a single argument (request map) whereas handler should take two arguments, the first being a configuration.
When a language-picking function is not a map but a function (or a symbolic, resolvable identifier of a function) then it will be wrapped in another function and its result will be converted to a keyword and tested against existence in the aforementioned set of supported languages.
supported
(supported req)(supported _ config)Returns a value associated with :supported key in settings obtained from a request map or a config.