view src/lib/Shared.luan @ 92:7a56c17befab default tip

translation
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 02 May 2025 20:20:12 -0600
parents 76baf48ea36b
children
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 Translator = require "luan:gpt/Translator.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 = {}

function Translator.prompt(html,language)
%>
Please translate the HTML below delimited by triple quotes from English to <%=language%>.

Note that the content is related to computer programming, so keep that in mind while translating.  The English word "library" refers to a programming library, not a place to borrow books, so translate to the word in the target language that means programming library.  So for Spanish, use "librería".

Do not translate file names.

Do not translate the contents of <code> tags.

"""
<%=html%>
"""
<%
end

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