diff options
Diffstat (limited to 'src/web/helper/lang.php')
-rw-r--r-- | src/web/helper/lang.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/web/helper/lang.php b/src/web/helper/lang.php new file mode 100644 index 0000000..48acba9 --- /dev/null +++ b/src/web/helper/lang.php @@ -0,0 +1,77 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ +$lang = array(); + +function lang($key, $default = NULL, $sub = NULL) { + $lang = $GLOBALS['lang']; + if(array_key_exists($key, $lang)) { + if ($sub) { + return sprintf($lang[$key], ...$sub); + } else { + return $lang[$key]; + } + } else if ($default !== NULL) { + return $default; + } else { + return $key; + } +} + +function ilang($key, + $class = NULL, + $id = NULL, + $href = NULL, + $click = NULL, + $attrs = array(), + $sub = NULL, + $button = FALSE, +) { + $text = lang($key . "_text", FALSE, sub: $sub); + $tip = lang($key . "_tip", FALSE); + $icon = lang($key . "_icon", FALSE); + $content = lang($key . "_content", FALSE); + + if ($click || $button) { + echo '<button '; + } else { + echo '<a '; + } + if ($tip) { + echo 'title="' . $tip . '" '; + echo 'aria-label="' . $tip . '" '; + } + if ($class) { + echo 'class="' . $class . '" '; + } + if ($id) { + echo 'id="' . $id . '" '; + } + if ($click) { + echo 'onclick="' . $click . '" '; + } + if ($href) { + echo 'href="' . $href . '" '; + } + foreach ($attrs as $key => $attr) { + echo $key . '="' . $attr . '" '; + } + echo '> '; + if ($icon) { + echo '<i class="' . $icon . '">'; + if ($content) { + echo $content; + } + echo '</i>'; + } + if ($text) { + echo '<span'; + if ($icon) { + echo ' class="ml-sm"'; + } + echo '>' . $text . '</span>'; + } + if ($click || $button) { + echo '</button>'; + } else { + echo '</a>'; + } +} |