view src/lib/Shared.luan @ 91:76baf48ea36b

add translation
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 02 May 2025 17:17:52 -0600
parents c385a4f75b10
children 7a56c17befab
line wrap: on
line source

local Luan = require "luan:Luan.luan"
local error = Luan.error
local ipairs = Luan.ipairs or error()
local pairs = Luan.pairs or error()
local Time = require "luan:Time.luan"
local Http = require "luan:http/Http.luan"
local Site_translator = require "luan:gpt/Site_translator.luan"
local get_lang = Site_translator.get_lang or error()
local languages = Site_translator.languages or error()


local Shared = {}

Http.not_found_handler = Site_translator.not_found_handler or error()

local started = Time.now()

function Shared.head()
%>
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<style>
			@import "/site.css?s=<%=started%>";
		</style>
		<script src="/site.js?s=<%=started%>"></script>
<%
end

local function header(crumbs)
	local lang = get_lang()
	local home
	if lang == "en" then
		home = "/"
	else
		home = "/"..lang.."/"
	end
%>
		<div header>
			<span breadcrumbs>
				<a href="<%=home%>">Reactionary Software</a>
<%	for _, crumb in ipairs(crumbs or {}) do %>
				/ <%=crumb%>
<%	end %>
				- <select onchange="setLanguage(value)">
<%	for code, name in pairs(languages) do
		local selected = code==lang and "selected" or ""
%>
					<option value="<%=code%>" <%=selected%> ><%=name%></option>
<%	end %>
				</select>
			</span>
			<span>by <a href="https://linkmy.style/fschmidt">fschmidt</a></span>
		</div>
<%
end
Shared.header = header

function Shared.existing_header()
	header{[[<a href="existing.html">Existing</a>]]}
end

function Shared.needed_header()
	header{[[<a href="needed.html">Needed</a>]]}
end

function Shared.luan_url()
	local url = "https://www.luan.software"
	local lang = get_lang()
	if lang ~= "en" then
		url = url.."/"..lang
	end
	return url
end

return Shared