33 lines
996 B
Forth
33 lines
996 B
Forth
module language
|
|
|
|
open System.IO
|
|
open System.Text.RegularExpressions
|
|
open Thoth.Json.Net
|
|
open FSharp.Data
|
|
let defaultLanguage = "english"
|
|
let languageFile = "wwwroot/languages/" + defaultLanguage + "/main.json"
|
|
let languageData = languageFile |> File.ReadAllText
|
|
|
|
|
|
//Returns an array of all language variables as defined in the the language file.
|
|
let languageVars =
|
|
languageData
|
|
|> Decode.unsafeFromString (Decode.keyValuePairs Decode.string)
|
|
|> Map.ofList
|
|
|
|
|
|
//Gets a value of a language variable
|
|
let get var =
|
|
if languageVars.ContainsKey var then
|
|
languageVars[var]
|
|
else
|
|
"Missing language variable: " + var
|
|
|
|
let getAndReplace languageVar replacements =
|
|
let langString = get languageVar
|
|
replacements
|
|
|> List.mapi (fun index string
|
|
-> index + 1, string)
|
|
|> List.fold (fun (result: string) (index, string)
|
|
-> result.Replace($"[{index}]", string)
|
|
) langString |