jb/src/lang.ml
2025-01-03 20:49:15 +01:00

54 lines
1.1 KiB
OCaml

open Drame
type t =
| French
| English
type choice =
{ fr : string
; en : string
}
type img =
{ name : string
; alt : choice
}
let default = French
let session_param_name = "lang"
let pp fmt = function
| French -> Fmt.string fmt "fr"
| English -> Fmt.string fmt "en"
let of_string = function
| "fr" -> Some French
| "en" -> Some English
| _unknown_lang -> None
let of_request request =
match Option.bind (Session.get request session_param_name) of_string with
| None -> default
| Some lang -> lang
let txt request ~fr ~en =
let lang_txt = match of_request request with French -> fr | English -> en in
Tyxml.Html.txt lang_txt
let txt_choice request { fr; en } =
let lang_txt = match of_request request with French -> fr | English -> en in
Tyxml.Html.txt lang_txt
let txt_anylang txt = Tyxml.Html.txt txt
let img request ~a ~src ~alt =
let alt =
match of_request request with French -> alt.fr | English -> alt.en
in
Tyxml.Html.img ~a ~src ~alt ()
let a_content request ~fr ~en =
let lang_txt = match of_request request with French -> fr | English -> en in
Tyxml.Html.a_content lang_txt