38 lines
1.3 KiB
Nix
38 lines
1.3 KiB
Nix
{ core, ... } @ env:
|
|
let
|
|
inherit(core) error library list string type;
|
|
|
|
english = library.import ./english.nix env {};
|
|
german = library.import ./german.nix env english;
|
|
in
|
|
{
|
|
inherit english german;
|
|
translate
|
|
= locale:
|
|
let
|
|
parts = string.match "([a-z]+)(_[A-Z]+)?([.][0-9A-Za-z-]+)?(@.+)?" locale;
|
|
getPart = list.get parts;
|
|
locale'
|
|
= if string.isInstanceOf locale
|
|
then
|
|
if parts != null
|
|
then
|
|
{
|
|
language = getPart 0;
|
|
territory = getPart 1;
|
|
codeset = getPart 2;
|
|
modifier = getPart 3;
|
|
}
|
|
else
|
|
error.panic ""
|
|
else
|
|
locale;
|
|
translate
|
|
= {
|
|
"de" = german.translate;
|
|
"en" = english.translate;
|
|
}.${locale'.language}
|
|
or ( error.panic "Unknown language »${locale'.language}«" );
|
|
in
|
|
translate locale';
|
|
} |