The official Luanti website, living at www.luanti.org.
- Uses the Bulma CSS framework.
- Uses modern Web design techniques:
remunits,hslcolors. - Responsive site and favicon.
- Translation support using i18next.
This site uses the Eleventy static site generator.
- Ensure you have Node 24 or later installed.
- We recommend using
nvm. First install nvm, and then runnvm usewhenever you open the project.
- We recommend using
- Run
npm install. - Run
npm startto serve the website locally.
When working on new features, keep in mind this website only supports evergreen browsers:
- Chrome (two most recent versions)
- Edge (two most recent versions)
- Firefox (two most recent versions + latest ESR version)
- Opera (two most recent versions)
- Safari (two most recent versions)
Internet Explorer isn't supported.
Unfortunately, Weblate is not yet available. In the meantime, you can translate by GitHub Pull Request.
-
Clone the Git repo
-
Find out your language code https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
-
Copy locales/en/translation.json file to your language. For example, locales/fr/translation.json for French.
-
Update the values of the JSON file, leaving the keys in English. So it should be of the form
"English": "Translated"so:{ "Hello {{name}}": "Bonjour {{name}}" }You can use a desktop application like PoEdit to easily edit this JSON file.
In case you need to know, this is the i18next JSON format.
-
(Optional) If you've 100% completed your translation, you can enable it like so:
- Copy
content/frtocontent/LANG_CODEwhere LANG_CODE is your language code. - Rename
content/LANG_CODE/fr.jsontocontent/LANG_CODE/LANG_CODE.json. - Edit
content/LANG_CODE/LANG_CODE.jsonto have"lang": "LANG_CODE".
- Copy
-
Create a PR for your updates. Alternatively, send the translation.json to rubenwardy.
Luanti.org uses i18next for translations. This is exposed to liquid templates by a custom i18n filter:
{{ "Hello world" | i18n }}As double curly braces are used by liquid, use double square braces instead:
{{ "Hello [[name]]" | i18n: "name", "Bob" }}When Eleventy builds the website, it'll update the locales/en/translation.json
file with any new strings it finds. It'll replace [[name]] with {{name}} to
match i18next's interpolation syntax:
{
"Hello {{name}}": "Bonjour {{name}}"
}- Stop the site if it is running locally.
- Edit
locales/en/translation.jsonto{}and save. - Run
npm start. - Commit changes to
locales/en/translation.json.
Copyright © 2015-2025 Hugo Locurcio, rubenwardy, and contributors
Unless otherwise specified, code is licensed under the MIT license. Media (except gallery) and content are licensed under CC BY-SA 3.0 Unported.
Gallery screenshots are by various authors and are credited on the webpage.