diff 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 diff
--- a/src/lib/Shared.luan	Wed Apr 23 20:10:03 2025 -0600
+++ b/src/lib/Shared.luan	Fri May 02 17:17:52 2025 -0600
@@ -1,27 +1,52 @@
 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";
+			@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="/">Reactionary Software</a>
+				<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>
@@ -30,11 +55,20 @@
 Shared.header = header
 
 function Shared.existing_header()
-	header{[[<a href="/existing.html">Existing</a>]]}
+	header{[[<a href="existing.html">Existing</a>]]}
 end
 
 function Shared.needed_header()
-	header{[[<a href="/needed.html">Needed</a>]]}
+	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