diff --git a/configs/banner.ini b/configs/banner.ini
new file mode 100644
index 0000000..4c1d396
--- /dev/null
+++ b/configs/banner.ini
@@ -0,0 +1,3 @@
+[banner]
+url = https://summerofcode.withgoogle.com/programs/2026/organizations/kolibrios-project-team
+img = gsoc.png
diff --git a/locales/de.ini b/locales/de.ini
index 5d547c9..fb0528b 100644
--- a/locales/de.ini
+++ b/locales/de.ini
@@ -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
diff --git a/locales/en.ini b/locales/en.ini
index 99f2650..ad72b91 100644
--- a/locales/en.ini
+++ b/locales/en.ini
@@ -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
diff --git a/locales/es.ini b/locales/es.ini
index 9bcd658..b6b53e1 100644
--- a/locales/es.ini
+++ b/locales/es.ini
@@ -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
diff --git a/locales/fr.ini b/locales/fr.ini
index e349167..609b96b 100644
--- a/locales/fr.ini
+++ b/locales/fr.ini
@@ -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
diff --git a/locales/it.ini b/locales/it.ini
index ad9fa1d..5f691b2 100644
--- a/locales/it.ini
+++ b/locales/it.ini
@@ -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
diff --git a/locales/nl.ini b/locales/nl.ini
index 32978b1..da82371 100644
--- a/locales/nl.ini
+++ b/locales/nl.ini
@@ -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
diff --git a/locales/ru.ini b/locales/ru.ini
index 1eaa3ba..90f6df7 100644
--- a/locales/ru.ini
+++ b/locales/ru.ini
@@ -14,9 +14,10 @@ forum = Форум
wiki = Вики
git = Git
-[git]
-header = КолибриОС перешла на Git!
-text = Ознакомьтесь с нашей новой, удобной для разработчиков инфраструктурой
+[banner]
+header = KolibriOS принята в GSoC 2026!
+text = Ознакомьтесь с деталями программы и нашими идеями проектов
+alt = GSoC
[article]
p1 = {kolibrios} — это крошечная, но невероятно мощная и быстрая операционная
diff --git a/locales/zh-Hans.ini b/locales/zh-Hans.ini
index c6db5f3..1b7084b 100644
--- a/locales/zh-Hans.ini
+++ b/locales/zh-Hans.ini
@@ -14,9 +14,10 @@ forum = 论坛
wiki = 百科
git = Git
-[git]
-header = KolibriOS 现已拥抱 Git!
-text = 来看看我们全新又对开发者友好的代码仓库吧:
+[banner]
+header = KolibriOS 已被 GSoC 2026 录取!
+text = 查看项目详情和我们的项目创意
+alt = GSoC
[article]
p1 = {kolibrios} 是一个体积微小、功能强大、响应迅速的,面向 x86 兼容机的操作系统。
diff --git a/locales/zh-Hant.ini b/locales/zh-Hant.ini
index 594c3ef..2fb2796 100644
--- a/locales/zh-Hant.ini
+++ b/locales/zh-Hant.ini
@@ -14,9 +14,10 @@ forum = 論壇
wiki = 百科
git = Git
-[git]
-header = KolibriOS 現已移入 Git!
-text = 來看看我們又新又友好的代碼倉庫吧:
+[banner]
+header = KolibriOS 已入選 GSoC 2026!
+text = 查看計畫詳情和我們的專案構想
+alt = GSoC
[article]
p1 = {kolibrios} 是一個空間小、功能強、回應快的,面向 x86 兼容機的作業系統。
diff --git a/modules/configs.py b/modules/configs.py
new file mode 100644
index 0000000..0ed6e8b
--- /dev/null
+++ b/modules/configs.py
@@ -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()}
diff --git a/modules/locales.py b/modules/locales.py
index c9f698f..6ef9ba9 100644
--- a/modules/locales.py
+++ b/modules/locales.py
@@ -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"]
diff --git a/static/img/gitea.png b/static/img/banners/gitea.png
similarity index 100%
rename from static/img/gitea.png
rename to static/img/banners/gitea.png
diff --git a/static/img/banners/gsoc.png b/static/img/banners/gsoc.png
new file mode 100644
index 0000000..ca348b5
Binary files /dev/null and b/static/img/banners/gsoc.png differ
diff --git a/static/style.scss b/static/style.scss
index acb7c12..c80811e 100644
--- a/static/style.scss
+++ b/static/style.scss
@@ -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;
}
}
diff --git a/templates/index.html b/templates/index.html
index 4e11f4d..8f347a7 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -10,7 +10,7 @@
{% include 'tmpl/_menu.htm' %}
- {% include 'tmpl/_git.htm' %}
+ {% include 'tmpl/_banner.htm' %}
{% include 'tmpl/_article.htm' %}
diff --git a/templates/tmpl/_banner.htm b/templates/tmpl/_banner.htm
new file mode 100644
index 0000000..ca32245
--- /dev/null
+++ b/templates/tmpl/_banner.htm
@@ -0,0 +1,17 @@
+
+
+
diff --git a/templates/tmpl/_git.htm b/templates/tmpl/_git.htm
deleted file mode 100644
index d244f6b..0000000
--- a/templates/tmpl/_git.htm
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-