Mercurial Hosting > reactionary
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 90:0dced626778b | 91:76baf48ea36b |
|---|---|
| 1 local Luan = require "luan:Luan.luan" | 1 local Luan = require "luan:Luan.luan" |
| 2 local error = Luan.error | 2 local error = Luan.error |
| 3 local ipairs = Luan.ipairs or error() | 3 local ipairs = Luan.ipairs or error() |
| 4 local pairs = Luan.pairs or error() | |
| 5 local Time = require "luan:Time.luan" | |
| 6 local Http = require "luan:http/Http.luan" | |
| 7 local Site_translator = require "luan:gpt/Site_translator.luan" | |
| 8 local get_lang = Site_translator.get_lang or error() | |
| 9 local languages = Site_translator.languages or error() | |
| 4 | 10 |
| 5 | 11 |
| 6 local Shared = {} | 12 local Shared = {} |
| 13 | |
| 14 Http.not_found_handler = Site_translator.not_found_handler or error() | |
| 15 | |
| 16 local started = Time.now() | |
| 7 | 17 |
| 8 function Shared.head() | 18 function Shared.head() |
| 9 %> | 19 %> |
| 10 <meta name="viewport" content="width=device-width, initial-scale=1"> | 20 <meta name="viewport" content="width=device-width, initial-scale=1"> |
| 11 <style> | 21 <style> |
| 12 @import "/site.css"; | 22 @import "/site.css?s=<%=started%>"; |
| 13 </style> | 23 </style> |
| 24 <script src="/site.js?s=<%=started%>"></script> | |
| 14 <% | 25 <% |
| 15 end | 26 end |
| 16 | 27 |
| 17 local function header(crumbs) | 28 local function header(crumbs) |
| 29 local lang = get_lang() | |
| 30 local home | |
| 31 if lang == "en" then | |
| 32 home = "/" | |
| 33 else | |
| 34 home = "/"..lang.."/" | |
| 35 end | |
| 18 %> | 36 %> |
| 19 <div header> | 37 <div header> |
| 20 <span breadcrumbs> | 38 <span breadcrumbs> |
| 21 <a href="/">Reactionary Software</a> | 39 <a href="<%=home%>">Reactionary Software</a> |
| 22 <% for _, crumb in ipairs(crumbs or {}) do %> | 40 <% for _, crumb in ipairs(crumbs or {}) do %> |
| 23 / <%=crumb%> | 41 / <%=crumb%> |
| 24 <% end %> | 42 <% end %> |
| 43 - <select onchange="setLanguage(value)"> | |
| 44 <% for code, name in pairs(languages) do | |
| 45 local selected = code==lang and "selected" or "" | |
| 46 %> | |
| 47 <option value="<%=code%>" <%=selected%> ><%=name%></option> | |
| 48 <% end %> | |
| 49 </select> | |
| 25 </span> | 50 </span> |
| 26 <span>by <a href="https://linkmy.style/fschmidt">fschmidt</a></span> | 51 <span>by <a href="https://linkmy.style/fschmidt">fschmidt</a></span> |
| 27 </div> | 52 </div> |
| 28 <% | 53 <% |
| 29 end | 54 end |
| 30 Shared.header = header | 55 Shared.header = header |
| 31 | 56 |
| 32 function Shared.existing_header() | 57 function Shared.existing_header() |
| 33 header{[[<a href="/existing.html">Existing</a>]]} | 58 header{[[<a href="existing.html">Existing</a>]]} |
| 34 end | 59 end |
| 35 | 60 |
| 36 function Shared.needed_header() | 61 function Shared.needed_header() |
| 37 header{[[<a href="/needed.html">Needed</a>]]} | 62 header{[[<a href="needed.html">Needed</a>]]} |
| 63 end | |
| 64 | |
| 65 function Shared.luan_url() | |
| 66 local url = "https://www.luan.software" | |
| 67 local lang = get_lang() | |
| 68 if lang ~= "en" then | |
| 69 url = url.."/"..lang | |
| 70 end | |
| 71 return url | |
| 38 end | 72 end |
| 39 | 73 |
| 40 return Shared | 74 return Shared |
