6 Commits

Author SHA1 Message Date
961692241a Add Matrix and IRC to socials block (#13)
All checks were successful
Docker Build and Push / build-and-push (push) Successful in 48s
Reviewed-on: #13
Reviewed-by: Gleb Zaharov <risdeveau@lair.moe>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
2026-03-08 17:16:53 +00:00
f9a07bcadd rework and update banner on main page (#11)
All checks were successful
Docker Build and Push / build-and-push (push) Successful in 1m43s
Refactor banner code to be more universal, and updated it's content to GSoC 2026.

<img width="auto" alt="image.png" src="attachments/a9eee86a-eaf5-4a9b-b21c-8bd2bb6a7d07">

Reviewed-on: #11
Reviewed-by: Gleb Zaharov <risdeveau@lair.moe>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
2026-03-02 11:09:15 +00:00
d0b267f0ea fix autobuild version and date parsing
All checks were successful
Docker Build and Push / build-and-push (push) Successful in 3m24s
2026-02-19 20:13:10 +02:00
5d4d587d1d Fix missing spaces in text
All checks were successful
Docker Build and Push / build-and-push (push) Successful in 2m17s
2026-01-23 12:53:19 -05:00
ea969132f8 l10n: add the function of specifing date format, formatted the code
All checks were successful
Docker Build and Push / build-and-push (push) Successful in 2m49s
2026-01-18 15:03:34 +03:00
9a99aa4f3b l10n: add the Chinese translation 2026-01-18 15:03:34 +03:00
25 changed files with 389 additions and 102 deletions

15
app.py
View File

@@ -45,12 +45,16 @@ def before_request():
@app.context_processor
def _inject_autobuild_vers():
return {'autobuild_vers': autobuild.autobuild_vers}
return {"autobuild_vers": autobuild.autobuild_vers}
@app.context_processor
def _inject_autobuild_date():
return {'autobuild_date': autobuild.autobuild_date}
return {
"autobuild_date": g.translations.get("downloads", {})
.get("date-format", "{DD}.{MM}.{YYYY}")
.format(**autobuild.autobuild_date)
}
@app.context_processor
@@ -58,16 +62,17 @@ def inject_translations():
def translate(text, **kwargs):
section, key = text.split(":", 1)
template = g.translations \
.get(section, {}) \
template = (
g.translations.get(section, {})
.get(key, f"${section}: {key}$")
)
try:
return template.format(**kwargs)
except Exception:
return template
return {'_': translate}
return {"_": translate}
# ---------- ROUTES -------------------------------------------------------

3
configs/banner.ini Normal file
View File

@@ -0,0 +1,3 @@
[banner]
url = https://summerofcode.withgoogle.com/programs/2026/organizations/kolibrios-project-team
img = gsoc.png

View File

@@ -14,9 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS ist zu Git gewechselt!
text = Schau dir unsere neue entwicklerfreundliche Infrastruktur an
[banner]
header = KolibriOS wurde zu GSoC 2026 angenommen!
text = Informieren Sie sich über Programmdetails und unsere Projektideen
alt = GSoC
[article]
p1 = {kolibrios} ist ein winziges, aber unglaublich leistungsfähiges und
@@ -51,6 +52,7 @@ header = Herunterladen
version = Version:
date = Build-Datum:
date-format = {DD}.{MM}.{YYYY}
img-descr = Disketten-Image
iso-descr = LiveCD-Abbild
@@ -65,10 +67,10 @@ screenshots = Bildschirmfotos
download_choice = Was soll ich wählen?
download_help = Für einen Einsteiger ist die LiveCD am besten geeignet.\n\
\n\
Im Vergleich zu einer LiveCD hat ein universelles Image den Vorteil, dass\
Im Vergleich zu einer LiveCD hat ein universelles Image den Vorteil, dass \
Sie die in KolibriOS vorgenommenen Änderungen speichern können.\n\
\n\
Das Hybrid-Image enthält Unterstützung für die UEFI-Technologie, die zum\
Das Hybrid-Image enthält Unterstützung für die UEFI-Technologie, die zum \
Booten des Systems auf neuen Computern und Laptops verwendet wird.
download_description = Auf dieser Seite können Sie die nächtlichen

View File

@@ -14,9 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS moved to Git!
text = Check our new developers-friendly infrastructure
[banner]
header = KolibriOS accepted to GSoC 2026!
text = Check program details and our project ideas
alt = GSoC
[article]
p1 = {kolibrios} is a tiny yet incredibly powerful and fast operating system for
@@ -49,6 +50,7 @@ header = Downloads
version = Version:
date = Build date:
date-format = {DD}/{MM}/{YYYY}
img-descr = Floppy disk image
iso-descr = LiveCD image
@@ -61,10 +63,10 @@ all_rev = All nightly builds
download_choice = Which to choose?
download_help = For a beginner, the LiveCD is best.\n\
\n\
Compared to a LiveCD, the advantage of a universal image is that you can\
Compared to a LiveCD, the advantage of a universal image is that you can \
save changes made in KolibriOS.\n\
\n\
Hybrid image includes support for UEFI technology, which is used to boot\
Hybrid image includes support for UEFI technology, which is used to boot \
the system on new computers and laptops.
download_description = On this page you can download the nightly builds

View File

@@ -14,9 +14,10 @@ forum = Foro
wiki = Wiki
git = Git
[git]
header = ¡KolibriOS se ha trasladado a Git!
text = Mira nuestra nueva infraestructura amigable para desarrolladores
[banner]
header = ¡KolibriOS fue aceptado en GSoC 2026!
text = Consulta los detalles del programa y nuestras ideas de proyecto
alt = GSoC
[article]
p1 = {kolibrios} es un sistema operativo diminuto, pero increíblemente potente y
@@ -51,6 +52,7 @@ header = Descargas
version = Versión:
date = Fecha de compilación:
date-format = {DD}.{MM}.{YYYY}
img-descr = Imagen de disquete
iso-descr = Imagen LiveCD
@@ -63,10 +65,10 @@ all_rev = Todos los montajes nocturnos
download_choice = ¿Cuál elegir?
download_help = Para un principiante, el LiveCD es lo mejor.\n\
\n\
En comparación con un LiveCD, la ventaja de una imagen universal es que\
En comparación con un LiveCD, la ventaja de una imagen universal es que \
puedes guardar los cambios realizados en KolibriOS.\n\
\n\
Imagen híbrida incluye soporte para la tecnología UEFI, que se utiliza para\
Imagen híbrida incluye soporte para la tecnología UEFI, que se utiliza para \
arrancar el sistema en los nuevos ordenadores y portátiles.
download_description = En esta página puedes descargar la distribución de

View File

@@ -14,9 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS a déménagé sur Git !
text = Découvrez notre nouvelle infrastructure conviviale pour les développeurs
[banner]
header = KolibriOS a été accepté au GSoC 2026 !
text = Consultez les détails du programme et nos idées de projets
alt = GSoC
[article]
p1 = {kolibrios} est un système d`exploitation minuscule, mais incroyablement
@@ -51,6 +52,7 @@ header = Téléchargements
version = Version :
date = Date de compilation :
date-format = {DD}/{MM}/{YYYY}
img-descr = Image de la disquette
iso-descr = Image du LiveCD
@@ -63,10 +65,10 @@ all_rev = Toutes les constructions nocturnes
download_choice = Que choisir ?
download_help = Pour un débutant, le LiveCD est le meilleur.\n\
\n\
Par rapport à un LiveCD, l`avantage d`une image universelle est que vous\
Par rapport à un LiveCD, l`avantage d`une image universelle est que vous \
pouvez sauvegarder les changements effectués dans KolibriOS.\n\
\n\
L`image hybride inclut le support de la technologie UEFI, qui est utilisée\
L`image hybride inclut le support de la technologie UEFI, qui est utilisée \
pour démarrer le système sur les nouveaux ordinateurs et portables.
download_description = Sur cette page, vous pouvez télécharger la distribution

View File

@@ -14,10 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS si è spostato su Git!
text = Dai un`occhiata alla nostra nuova infrastruttura pensata per gli
sviluppatori
[banner]
header = KolibriOS è stato accettato al GSoC 2026!
text = Consulta i dettagli del programma e le nostre idee di progetto
alt = GSoC
[article]
p1 = {kolibrios} è un sistema operativo minuscolo, ma incredibilmente potente e
@@ -50,6 +50,7 @@ header = Scaricamento
version = Versione:
date = Data di compilazione:
date-format = {DD}/{MM}/{YYYY}
img-descr = Immagine su dischetto
iso-descr = Immagine LiveCD
@@ -62,10 +63,10 @@ all_rev = Tutte le build notturne
download_choice = Quale scegliere?
download_help = Per un principiante, il LiveCD è la soluzione migliore.\n\
\n\
Rispetto a un LiveCD, il vantaggio di un`immagine universale è che è\
Rispetto a un LiveCD, il vantaggio di un`immagine universale è che è \
possibile salvare le modifiche apportate in KolibriOS.\n\
\n\
L`immagine ibrida include il supporto per la tecnologia UEFI, utilizzata\
L`immagine ibrida include il supporto per la tecnologia UEFI, utilizzata \
per avviare il sistema su nuovi computer e portatili.
download_description = In questa pagina puoi scaricare la distribuzione delle

View File

@@ -14,9 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS is verhuisd naar Git!
text = Bekijk onze nieuwe, ontwikkelaarsvriendelijke infrastructuur
[banner]
header = KolibriOS is geaccepteerd voor GSoC 2026!
text = Bekijk de programmadetails en onze projectideeën
alt = GSoC
[article]
p1 = {kolibrios} is een klein maar ongelooflijk krachtig en snel
@@ -51,6 +52,7 @@ header = Downloads
version = Versie:
date = Builddatum:
date-format = {DD}.{MM}.{YYYY}
img-descr = Afbeelding op diskette
iso-descr = LiveCD-afbeelding
@@ -63,10 +65,10 @@ all_rev = Alle nachtelijke builds
download_choice = Welke moet ik kiezen?
download_help = Voor een beginner is de LiveCD het beste.\n\
\n\
Vergeleken met een LiveCD heeft een universeel image het voordeel dat je\
Vergeleken met een LiveCD heeft een universeel image het voordeel dat je \
wijzigingen die je in KolibriOS hebt aangebracht, kunt opslaan.\n\
\n\
Hybride image bevat ondersteuning voor UEFI-technologie, die wordt gebruikt\
Hybride image bevat ondersteuning voor UEFI-technologie, die wordt gebruikt \
om het systeem op te starten op nieuwe computers en laptops.
download_description = Op deze pagina kunt u de nightly builds-distributie

View File

@@ -14,9 +14,10 @@ forum = Форум
wiki = Вики
git = Git
[git]
header = КолибриОС перешла на Git!
text = Ознакомьтесь с нашей новой, удобной для разработчиков инфраструктурой
[banner]
header = KolibriOS принята в GSoC 2026!
text = Ознакомьтесь с деталями программы и нашими идеями проектов
alt = GSoC
[article]
p1 = {kolibrios} — это крошечная, но невероятно мощная и быстрая операционная
@@ -51,6 +52,7 @@ header = Скачать
version = Версия:
date = Дата сборки:
date-format = {DD}.{MM}.{YYYY}
img-descr = Образ дискеты
iso-descr = Образ LiveCD
@@ -63,10 +65,10 @@ all_rev = Все ночные сборки
download_choice = Какой выбрать?
download_help = Для новичка лучше всего подойдет LiveCD.\n \
\n\
По сравнению с LiveCD преимущество универсального образа в том, что вы\
По сравнению с LiveCD преимущество универсального образа в том, что вы \
можете сохранить изменения, сделанные в КолибриОС.\n\
\n\
Гибридный образ включает поддержку технологии UEFI, которая используется\
Гибридный образ включает поддержку технологии UEFI, которая используется \
для загрузки системы на новых компьютерах и ноутбуках.
download_description = На этой странице вы можете скачать ночные сборки

86
locales/zh-Hans.ini Normal file
View File

@@ -0,0 +1,86 @@
[title]
language = 简体中文
index = KolibriOS
download = KolibriOS - 下载
[header]
index = KolibriOS 官方网站
download = KolibriOS 下载页
[menu]
kolibrios = KolibriOS
download = 下载
forum = 论坛
wiki = 百科
git = Git
[banner]
header = KolibriOS 已被 GSoC 2026 录取!
text = 查看项目详情和我们的项目创意
alt = GSoC
[article]
p1 = {kolibrios} 是一个体积微小、功能强大、响应迅速的,面向 x86 兼容机的操作系统。
只需要寥寥数兆字节的磁盘空间、一个 i586 处理器和 12 兆字节内存,
你就能体验到一个丰富的应用生态:
文字处理、图像查看、图形编辑、网页浏览等基本应用一应俱全,甚至还有三十多个有意思的游戏。
在文件系统方面,{kolibrios} 完全支持 FAT12/16/32
同时也支持读取 NTFS、exFAT、ISO9660 和 Ext2/3/4 文件系统。
它还提供了一套丰富的{drivers},囊括众多主流声卡、网卡、显卡。
drivers = 驱动程序
p2 = 试想一款能在短短几秒内启动到图形化界面的操作系统!
不再囿于转着小圈圈的鼠标指针,所有的应用软件都在鼠标点击后极速开启!
得益于 {kolibrios} 的核心部分(内核、驱动)完全采用 {fasm} 汇编语言来编写,这样的高速已经不再是幻想!
快来试试我们的 {kolibrios},将其与现代臃肿的 Windows 和 Linux 系统比比看,你就会发现它们之间的速度差距。
p3 = {kolibrios} 是一个 MenuetOS 的派生分支,从 2004 开始脱离其独立开发。
如果你有需要{feedback}的问题,我们会非常欢迎~
当然,如果能为我们提供{help},我们也感激不尽!
feedback = 反馈
help = 帮助
p_subscription = 希望你能尽情享用我们的作品!
[downloads]
header = 下载链接
version = 当前版本:
date = 构建日期:
date-format = {YYYY}年{MM}月{DD}日
img-descr = 软盘镜像
iso-descr = Live 光盘镜像
distr-descr = 优盘或多系统启动通用包
raw-descr = UEFI/BIOS 混合包
prev_rev = 先前版本
all_rev = 所有即时构建包
download_choice = 该怎么选?
download_help = 对新手而言Live 光盘就是最优解。\n\
\n\
而与之不同的是,通用包允许用户把在系统运行过程中对 KolibriOS 的更改保存下来,例如系统设置之类就可以保存。\n\
\n\
混合启动镜像包含了对 UEFI 技术的支持,可以让你在现代的电脑上更好地启动之。
download_description = 在此页面中,你可以下载我们的即时构建版本,也就是包含了最新的更新。
需要知道的是:这些特性往往会致使系统不稳定,使用时请牢记此项。
这些文件都经过 {zip} 压缩打包。{kolibrios} 以 {gpl} 协议发布,其源码可见于{git}。
git-server = 此仓库站
download_warn = 有些时候,一些防病毒软件会错误地将 {kolibrios} 的镜像标记为威胁项目,这应当是误判。{kolibrios} 完全开源,如果担心存在问题,无论何时何地,你都可以自行构建一份来确保安全。
[screenshots]
header = 内容截屏
1 = KolibriOS 桌面
2 = 演示程序
3 = 不同的文件管理器
4 = 网络相关的程序
5 = 游戏
6 = 开发调试工具
[footer]
team = KolibriOS 开发团队

86
locales/zh-Hant.ini Normal file
View File

@@ -0,0 +1,86 @@
[title]
language = 繁體中文
index = KolibriOS
download = KolibriOS - 下載
[header]
index = KolibriOS 官方站
download = KolibriOS 下載頁
[menu]
kolibrios = KolibriOS
download = 下載
forum = 論壇
wiki = 百科
git = Git
[banner]
header = KolibriOS 已入選 GSoC 2026
text = 查看計畫詳情和我們的專案構想
alt = GSoC
[article]
p1 = {kolibrios} 是一個空間小、功能強、回應快的,面向 x86 兼容機的作業系統。
只需要寥寥數 MB 磁碟空間、一個 i586 處理器和 12 MB RAM
即可體驗到一個豐富的應用生態:
文字處理、圖像查看、圖形編輯、網頁流覽等基本應用一應俱全,甚至還有三十多個有意思的小遊戲。
在檔案系統方面,{kolibrios} 完全支援 FAT12/16/32
同時也能夠讀取 NTFS、exFAT、ISO9660 和 Ext2/3/4 檔案系統。
它還提供了一套豐富的{drivers},囊括眾多主流音效卡、網卡、顯卡。
drivers = 驅動程式
p2 = 試想一款能在短短幾秒內啟動到圖形化介面的作業系統!
不再囿於轉著小圈圈的滑鼠指標,所有的應用軟體都在點擊後極速開啟!
得益於 {kolibrios} 的核心部分(內核、驅動)完全採用 {fasm} 組合語言來編寫,這樣的高速已不再是幻想!
快來試試我們的 {kolibrios},將其與現代臃腫的 Windows 和 Linux 系統比比看,你就會發現它們之間的速度差距。
p3 = {kolibrios} 是 2004 年自 MenuetOS Fork 而來,也從那一刻起開始脫離它進行自主開發。
歡飲您{feedback}您遇到的任何問題。
如果能為我們提供{help},我們也會感激不盡!
feedback = 回饋
help = 幫助
p_subscription = 希望你能盡情享用我們的作品!
[downloads]
header = 下載連結
version = 當前版本:
date = 構建日期:
date-format = {YYYY}年{MM}月{DD}日
img-descr = 軟碟鏡像
iso-descr = LiveCD 鏡像
distr-descr = 閃存盤或多系統啟用的動通用包
raw-descr = UEFI/BIOS 混合包
prev_rev = 早期版本
all_rev = 所有 Nightly 構建包
download_choice = 如何選擇我要的包?
download_help = 對新手而言LiveCD 就是最優解。\n\
\n\
而與之不同的是,通用包允許使用者把在系統運行過程中對 KolibriOS 作出的更改保存下來,例如系統設置之類就可以保留。\n\
\n\
混合啟動鏡像包含了對 UEFI 技術的支援,可以讓你在現代的電腦上更好地啟動之。
download_description = 在此頁面裏,你可以下載我們的 Nightly 構建包,也即包含了當下最新的更新。
需要知道的是:因爲是即時更新並構建的,這些包往往包含一些導致系統不穩定的特性,請在使用時牢記此項。
這些檔案都是經過 {zip} 壓縮打包的,使用前需解壓。{kolibrios} 以 {gpl} 許可證發佈,其源碼可見於{git}。
git-server = 此倉庫站
download_warn = 有些時候,一些防毒軟體會錯誤地將 {kolibrios} 的鏡像標記為威脅項,這應當是一種誤判。我們的 {kolibrios} 完全開源,如果擔心存在安全問題,無論何時何地,你都可以自行構建一份來確保運行的内容是安全的。
[screenshots]
header = 內容截屏
1 = KolibriOS 桌面
2 = 演示程式
3 = 不同的檔案管理員
4 = 網路相關的程式
5 = 遊戲
6 = 開發調試工具
[footer]
team = KolibriOS 開發團隊

View File

@@ -3,10 +3,10 @@ import threading
import time
STATUS_URL = "https://builds.kolibrios.org/status.html"
STATUS_URL = "http://builds.kolibrios.org/status.html"
STATUS_SEC = 300 # refetch each 5 minutes
autobuild_date = "DD.MM.YYYY"
autobuild_date = {"YYYY": "YYYY", "MM": "MM", "DD": "DD"}
autobuild_vers = "0.0.0.0+0000-0000000"
_started = False
@@ -17,7 +17,6 @@ def _refresh_build_date_once():
global autobuild_date, autobuild_vers
try:
from urllib.request import Request, urlopen
req = Request(
STATUS_URL,
headers={
@@ -30,41 +29,58 @@ def _refresh_build_date_once():
r.headers.get_content_charset() or "utf-8", "replace"
)
ver_re = re.compile(
r"\b(\d+\.\d+\.\d+\.\d+\+\d{3,8}-[0-9a-fA-F]{7,40})\b"
)
last_ver = None
rows = re.findall(r"(<tr\b[^>]*>.*?</tr>)", html, flags=re.I | re.S)
if not rows:
return
last_commit_ver = None
for row in rows:
cls = re.search(r'class\s*=\s*"([^"]*)"', row, flags=re.I)
classes = cls.group(1).lower() if cls else ""
text = re.sub(r"<[^>]+>", " ", row)
if "commit" in classes:
mver = re.search(
r"\b(\d+\.\d+\.\d+\.\d+\+\d{3,8}-[0-9a-fA-F]{7,40})\b", row
)
mver = ver_re.search(row)
if mver:
last_commit_ver = mver.group(1)
elif "success" in classes:
mts = re.search(
r"\b(\d{4})\.(\d{2})\.(\d{2})\s+\d{2}:\d{2}:\d{2}\b", text
last_ver = mver.group(1)
continue
if "success" not in classes:
continue
text = re.sub(r"<[^>]+>", " ", row)
mts = re.search(
r"\b(\d{4})\.(\d{2})\.(\d{2})\s+\d{2}:\d{2}:\d{2}\b", text
)
if mts:
autobuild_date["YYYY"], autobuild_date["MM"], autobuild_date["DD"] = mts.groups()
else:
mds = re.search(r"\b(\d{2})\.(\d{2})\.(\d{4})\b", text)
if not mds:
return
autobuild_date["YYYY"], autobuild_date["MM"], autobuild_date["DD"] = (
mds.group(3),
mds.group(2),
mds.group(1),
)
if not mts:
mds = re.search(r"\b(\d{2})\.(\d{2})\.(\d{4})\b", text)
if mds:
autobuild_date = f"{mds.group(1)}.{mds.group(2)}.{mds.group(3)}"
else:
return
else:
y, mo, d = mts.groups()
autobuild_date = f"{d}.{mo}.{y}"
if last_ver:
autobuild_vers = last_ver
return
if last_commit_ver:
autobuild_vers = last_commit_ver
# Fallback for plain-text log format (no HTML table)
# Example: 2025.09.20 20:45:10 user 💚 Build processing completed successfully. Thank you.
log_line_re = re.compile(
r"^(\d{4})\.(\d{2})\.(\d{2})\s+\d{2}:\d{2}:\d{2}\s+(.*)$"
)
for raw in html.splitlines():
mline = log_line_re.match(raw.strip())
if not mline:
continue
yyyy, mm, dd, rest = mline.groups()
mver = ver_re.search(rest)
if mver:
last_ver = mver.group(1)
if "Build processing completed successfully" in rest:
autobuild_date["YYYY"], autobuild_date["MM"], autobuild_date["DD"] = yyyy, mm, dd
if last_ver:
autobuild_vers = last_ver
return
except Exception:

50
modules/configs.py Normal file
View File

@@ -0,0 +1,50 @@
from os import path, listdir
from configparser import ConfigParser
import threading
_configs = {}
_loaded = False
_load_lock = threading.Lock()
def load_all_configs():
new_configs = {}
configs_dir = "configs"
if not path.isdir(configs_dir):
return new_configs
for filename in sorted(listdir(configs_dir)):
if not filename.endswith(".ini"):
continue
file_path = path.join(configs_dir, filename)
cp = ConfigParser()
with open(file_path, encoding="utf-8") as f:
cp.read_file(f)
for section in cp.sections():
section_data = new_configs.setdefault(section, {})
section_data.update(dict(cp[section]))
return new_configs
def ensure_loaded():
global _configs, _loaded
with _load_lock:
if _loaded:
return
_configs = load_all_configs()
_loaded = True
def get_section(name):
ensure_loaded()
return dict(_configs.get(name, {}))
def get_all_sections():
ensure_loaded()
return {section: dict(values) for section, values in _configs.items()}

View File

@@ -2,6 +2,8 @@ from os import path, listdir
from configparser import ConfigParser
import threading
from modules import configs
translations = {}
locales_name = {}
@@ -33,6 +35,13 @@ def load_all_locales():
section: dict(cp[section]) for section in cp.sections()
}
shared_sections = configs.get_all_sections()
if shared_sections:
for locale_translation in new_translations.values():
for section_name, section_values in shared_sections.items():
locale_section = locale_translation.setdefault(section_name, {})
locale_section.update(section_values)
new_locales_code = locales_code_default + tuple(sorted(locales_code_extra))
new_locales_name = {
locale_code: new_translations[locale_code]["title"]["language"]

View File

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
static/img/banners/gsoc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

BIN
static/img/icons/i_irc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

View File

@@ -16,7 +16,9 @@ $c-shadow-soft: #1C1A281F;
$c-article-bd: #C0B9C491;
$c-primary: #609A21;
$c-primary-ink: #609A21AA;
$c-banner: #F9AB00;
$c-banner-ink: #F9AB00AA;
$c-link: #0472D8;
$c-link-hover: #0053B9;
@@ -180,12 +182,21 @@ body {
text-decoration: none;
&:hover {
box-shadow: inset 0 0 0 4px $c-primary-ink;
box-shadow: inset 0 0 0 4px $c-banner-ink;
}
table {
table-layout: fixed;
}
td {
text-align: center;
vertical-align: middle;
&:first-child,
&:last-child {
width: 128px;
}
}
img {
@@ -193,7 +204,7 @@ body {
}
h1 {
color: $c-primary;
color: $c-banner;
font-size: 2.5em;
margin: 0 0 16px;
}
@@ -202,14 +213,14 @@ body {
margin: 0em;
}
.p-link {
margin-top: 16px;
color: $c-primary;
font-weight: bold;
}
a {
color: $c-primary;
display: block;
margin-top: 16px;
overflow-wrap: anywhere;
word-break: break-word;
font-weight: bold;
color: $c-banner;
border: none;
}
}
@@ -475,7 +486,7 @@ iframe {
margin-bottom: 0;
}
p, .p-link {
p {
margin-top: 0.5em;
}
}

View File

@@ -10,7 +10,7 @@
{% include 'tmpl/_menu.htm' %}
<div id="article">
{% include 'tmpl/_git.htm' %}
{% include 'tmpl/_banner.htm' %}
{% include 'tmpl/_article.htm' %}

View File

@@ -0,0 +1,17 @@
<a id="banner" href="{{ _('banner:url') }}" target="_blank">
<table>
<tr>
<td valign="top" width="128">
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="{{ _('title:index')}}">
</td>
<td valign="top">
<h1>{{ _('banner:header') }}</h1>
<p>{{ _('banner:text') }}</p>
<a href="{{ _('banner:url') }}">{{ _('banner:url') }}</a>
</td>
<td valign="top" width="128">
<img src="{{ url_for('static', filename='img/banners/' + _('banner:img')) }}" alt="{{ _('banner:alt') }}">
</td>
</tr>
</table>
</a>

View File

@@ -1,19 +0,0 @@
<a id="banner" href="https://git.kolibrios.org" target="_blank">
<table>
<tr>
<td valign="top" width="128">
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="KolibriOS">
</td>
<td valign="top">
<h1>{{ _('git:header') }}</h1>
<p>{{ _('git:text') }}</p>
<p class="p-link">
<a href="https://git.kolibrios.org">https://git.kolibrios.org</a>
</p>
</td>
<td valign="top" width="128">
<img src="{{ url_for('static', filename='img/gitea.png') }}" alt="Gitea">
</td>
</tr>
</table>
</a>

View File

@@ -14,4 +14,14 @@
<a href="https://www.reddit.com/r/KolibriOS/" target="_blank">
<img src="{{ url_for('static', filename='img/icons/i_reddit.png') }}" alt="Reddit">Reddit
</a>
</p>
<p class="p-socials">
<a href="https://matrix.to/#/#kolibrios:lair.moe" target="_blank">
<img src="{{ url_for('static', filename='img/icons/i_matrix.png') }}" alt="Matrix">Matrix
</a>
<br />
<a href="irc://kolibrios.org" target="_blank">
<img src="{{ url_for('static', filename='img/icons/i_irc.png') }}" alt="IRC">IRC
</a>
</p>