STSG/stsg/__init__.py
2025-05-22 15:47:46 +02:00

801 lines
22 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class config:
default_author = "anonymous"
fall_back_to_overview_in_translation = True
class setup:
source_directory = "src"
dist_directory = "dist"
class formatting:
datetime_format = "%d. %B %Y"
fallback_language = "en"
preview_length = 400
preview_header_shift = 2
markdown_extras = [
"fenced-code-blocks"
]
languages = {
"af": {
"flag": "🇿🇦",
"name": "Afrikaans",
"native_name": "Afrikaans"
},
"am": {
"flag": "🇪🇹",
"name": "Amharic",
"native_name": "አማርኛ"
},
"an": {
"flag": "🇪🇸",
"name": "Aragonese",
"native_name": "aragonés"
},
"ar": {
"flag": "🇸🇦",
"name": "Arabic",
"native_name": "العربية"
},
"ar_ae": {
"flag": "🇦🇪",
"name": "Arabic (UAE)",
"native_name": "العربية (الإمارات)"
},
"ar_bh": {
"flag": "🇧🇭",
"name": "Arabic (Bahrain)",
"native_name": "العربية (البحرين)"
},
"ar_dz": {
"flag": "🇩🇿",
"name": "Arabic (Algeria)",
"native_name": "العربية (الجزائر)"
},
"ar_eg": {
"flag": "🇪🇬",
"name": "Arabic (Egypt)",
"native_name": "العربية (مصر)"
},
"ar_iq": {
"flag": "🇮🇶",
"name": "Arabic (Iraq)",
"native_name": "العربية (العراق)"
},
"ar_jo": {
"flag": "🇯🇴",
"name": "Arabic (Jordan)",
"native_name": "العربية (الأردن)"
},
"ar_kw": {
"flag": "🇰🇼",
"name": "Arabic (Kuwait)",
"native_name": "العربية (الكويت)"
},
"ar_lb": {
"flag": "🇱🇧",
"name": "Arabic (Lebanon)",
"native_name": "العربية (لبنان)"
},
"ar_ly": {
"flag": "🇱🇾",
"name": "Arabic (Libya)",
"native_name": "العربية (ليبيا)"
},
"ar_ma": {
"flag": "🇲🇦",
"name": "Arabic (Morocco)",
"native_name": "العربية (المغرب)"
},
"ar_om": {
"flag": "🇴🇲",
"name": "Arabic (Oman)",
"native_name": "العربية (عُمان)"
},
"ar_qa": {
"flag": "🇶🇦",
"name": "Arabic (Qatar)",
"native_name": "العربية (قطر)"
},
"ar_sa": {
"flag": "🇸🇦",
"name": "Arabic (Saudi Arabia)",
"native_name": "العربية (السعودية)"
},
"ar_sd": {
"flag": "🇸🇩",
"name": "Arabic (Sudan)",
"native_name": "العربية (السودان)"
},
"ar_sy": {
"flag": "🇸🇾",
"name": "Arabic (Syria)",
"native_name": "العربية (سوريا)",
},
"ar_tn": {
"flag": "🇹🇳",
"name": "Arabic (Tunisia)",
"native_name": "العربية (تونس)"
},
"ar_ye": {
"flag": "🇾🇪",
"name": "Arabic (Yemen)",
"native_name": "العربية (اليمن)"
},
"ars_ae": {
"flag": "🇦🇪",
"name": "Najdi Arabic (UAE)",
"native_name": "نَجْدِيّ"
},
"ars_arab_sa": {
"flag": "🇸🇦",
"name": "Najdi Arabic (Saudi Arabia, Arabic Script)",
"native_name": "نَجْدِيّ"
},
"ars_sa": {
"flag": "🇸🇦",
"name": "Najdi Arabic (Saudi Arabia)",
"native_name": "نَجْدِيّ"
},
"as": {
"flag": "🇮🇳",
"name": "Assamese",
"native_name": "অসমীয়া"
},
"az": {
"flag": "🇦🇿",
"name": "Azerbaijani",
"native_name": "Azərbaycan"
},
"be": {
"flag": "🇧🇾",
"name": "Belarusian",
"native_name": "Беларуская"
},
"bg": {
"flag": "🇧🇬",
"name": "Bulgarian",
"native_name": "Български"
},
"bm": {
"flag": "🇲🇱",
"name": "Bambara",
"native_name": "bamanankan"
},
"bn": {
"flag": "🇧🇩",
"name": "Bengali",
"native_name": "বাংলা"
},
"bn_in": {
"flag": "🇮🇳",
"name": "Bengali (India)",
"native_name": "বাংলা (ভারত)"
},
"br": {
"flag": "🏴",
"name": "Breton",
"native_name": "brezhoneg"
},
"bs": {
"flag": "🇧🇦",
"name": "Bosnian",
"native_name": "Bosanski"
},
"ca": {
"flag": "🇪🇸",
"name": "Catalan",
"native_name": "Català"
},
"crh": {
"flag": "🇺🇦",
"name": "Crimean Tatar",
"native_name": "qırımtatarca"
},
"cs": {
"flag": "🇨🇿",
"name": "Czech",
"native_name": "Čeština"
},
"cv": {
"flag": "🇷🇺",
"name": "Chuvash",
"native_name": "чӑваш чӗлхи"
},
"cy": {
"flag": "🏴",
"name": "Welsh",
"native_name": "Cymraeg"
},
"da": {
"flag": "🇩🇰",
"name": "Danish",
"native_name": "Dansk"
},
"de": {
"flag": "🇩🇪",
"name": "German",
"native_name": "Deutsch",
},
"de_at": {
"flag": "🇦🇹",
"name": "German (Austria)",
"native_name": "Deutsch (Österreich)"
},
"de_be": {
"flag": "🇧🇪",
"name": "German (Belgium)",
"native_name": "Deutsch (Belgien)"
},
"de_ch": {
"flag": "🇨🇭",
"name": "German (Switzerland)",
"native_name": "Deutsch (Schweiz)"
},
"dv": {
"flag": "🇲🇻",
"name": "Dhivehi",
"native_name": "ދިވެހި"
},
"dz": {
"flag": "🇧🇹",
"name": "Dzongkha",
"native_name": "རྫོང་ཁ"
},
"el": {
"flag": "🇬🇷",
"name": "Greek",
"native_name": "Ελληνικά"
},
"en": {
"flag": "🇺🇸",
"name": "English",
"native_name": "English",
},
"en_au": {
"flag": "🇦🇺",
"name": "English (Australia)",
"native_name": "English (Australia)"
},
"en_ca": {
"flag": "🇨🇦",
"name": "English (Canada)",
"native_name": "English (Canada)"
},
"en_gb": {
"flag": "🇬🇧",
"name": "English (UK)",
"native_name": "English (UK)",
},
"en_ie": {
"flag": "🇮🇪",
"name": "English (Ireland)",
"native_name": "English (Ireland)"
},
"en_in": {
"flag": "🇮🇳",
"name": "English (India)",
"native_name": "English (India)"
},
"en_nz": {
"flag": "🇳🇿",
"name": "English (New Zealand)",
"native_name": "English (New Zealand)"
},
"en_us": {
"flag": "🇺🇸",
"name": "English (US)",
"native_name": "English (US)",
},
"es": {
"flag": "🇪🇸",
"name": "Spanish",
"native_name": "Español"
},
"es_ar": {
"flag": "🇦🇷",
"name": "Spanish (Argentina)",
"native_name": "Español (Argentina)"
},
"es_mx": {
"flag": "🇲🇽",
"name": "Spanish (Mexico)",
"native_name": "Español (México)"
},
"et": {
"flag": "🇪🇪",
"name": "Estonian",
"native_name": "Eesti"
},
"fa": {
"flag": "🇮🇷",
"name": "Persian",
"native_name": "فارسی"
},
"ff": {
"flag": "🌍",
"name": "Fula",
"native_name": "Fulfulde"
},
"fi": {
"flag": "🇫🇮",
"name": "Finnish",
"native_name": "Suomi"
},
"fo": {
"flag": "🇫🇴",
"name": "Faroese",
"native_name": "føroyskt"
},
"fr": {
"flag": "🇫🇷",
"name": "French",
"native_name": "Français"
},
"fr_ca": {
"flag": "🇨🇦",
"name": "French (Canada)",
"native_name": "Français (Canada)"
},
"fr_ch": {
"flag": "🇨🇭",
"name": "French (Switzerland)",
"native_name": "Français (Suisse)"
},
"ga": {
"flag": "🇮🇪",
"name": "Irish",
"native_name": "Gaeilge"
},
"gl": {
"flag": "🇪🇸",
"name": "Galician",
"native_name": "Galego"
},
"gn": {
"flag": "🇵🇾",
"name": "Guarani",
"native_name": "Avañe'"
},
"gu": {
"flag": "🇮🇳",
"name": "Gujarati",
"native_name": "ગુજરાતી"
},
"ha": {
"flag": "🇳🇬",
"name": "Hausa",
"native_name": "هَوُسَ"
},
"he": {
"flag": "🇮🇱",
"name": "Hebrew",
"native_name": "עברית"
},
"hi": {
"flag": "🇮🇳",
"name": "Hindi",
"native_name": "हिन्दी"
},
"hr": {
"flag": "🇭🇷",
"name": "Croatian",
"native_name": "Hrvatski"
},
"ht": {
"flag": "🇭🇹",
"name": "Haitian Creole",
"native_name": "Kreyòl ayisyen"
},
"hu": {
"flag": "🇭🇺",
"name": "Hungarian",
"native_name": "Magyar"
},
"id": {
"flag": "🇮🇩",
"name": "Indonesian",
"native_name": "Bahasa Indonesia"
},
"io": {
"flag": "🌍",
"name": "Ido",
"native_name": "Ido"
},
"is": {
"flag": "🇮🇸",
"name": "Icelandic",
"native_name": "Íslenska"
},
"it": {
"flag": "🇮🇹",
"name": "Italian",
"native_name": "Italiano"
},
"ja": {
"flag": "🇯🇵",
"name": "Japanese",
"native_name": "日本語"
},
"jv_id": {
"flag": "🇮🇩",
"name": "Javanese (Indonesia)",
"native_name": "basa jawa"
},
"ka": {
"flag": "🇬🇪",
"name": "Georgian",
"native_name": "ქართული"
},
"kg": {
"flag": "🇨🇬",
"name": "Kongo",
"native_name": "KiKongo"
},
"kj": {
"flag": "🇳🇦",
"name": "Kuanyama",
"native_name": "Oshikwanyama"
},
"kk": {
"flag": "🇰🇿",
"name": "Kazakh",
"native_name": "Қазақ"
},
"kl": {
"flag": "🇬🇱",
"name": "Kalaallisut",
"native_name": "kalaallisut"
},
"km": {
"flag": "🇰🇭",
"name": "Khmer",
"native_name": "ខ្មែរ"
},
"ko": {
"flag": "🇰🇷",
"name": "Korean",
"native_name": "한국어"
},
"ks": {
"flag": "🇮🇳",
"name": "Kashmiri",
"native_name": "کٲشُر"
},
"ku": {
"flag": "🇮🇶",
"name": "Kurdish",
"native_name": "Kurdî",
},
"lo": {
"flag": "🇱🇦",
"name": "Lao",
"native_name": "ລາວ"
},
"lt": {
"flag": "🇱🇹",
"name": "Lithuanian",
"native_name": "Lietuvių"
},
"lv": {
"flag": "🇱🇻",
"name": "Latvian",
"native_name": "Latviešu"
},
"mg": {
"flag": "🇲🇬",
"name": "Malagasy",
"native_name": "Malagasy"
},
"mg_mg": {
"flag": "🇲🇬",
"name": "Malagasy (Madagascar)",
"native_name": "malagasy"
},
"mh": {
"flag": "🇲🇭",
"name": "Marshallese",
"native_name": "Kajin M̧ajeļ"
},
"mk": {
"flag": "🇲🇰",
"name": "Macedonian",
"native_name": "Македонски"
},
"mn_mn": {
"flag": "🇲🇳",
"name": "Mongolian (Mongolia)",
"native_name": "Монгол хэл"
},
"mr_in": {
"flag": "🇮🇳",
"name": "Marathi (India)",
"native_name": "मराठी"
},
"ms": {
"flag": "🇲🇾",
"name": "Malay",
"native_name": "Bahasa Melayu"
},
"my": {
"flag": "🇲🇲",
"name": "Burmese",
"native_name": "မြန်မာဘာသာ"
},
"na": {
"flag": "🇳🇷",
"name": "Nauruan",
"native_name": "Dorerin Naoero"
},
"nb": {
"flag": "🇳🇴",
"name": "Norwegian Bokmål",
"native_name": "Norsk Bokmål"
},
"ng": {
"flag": "🇳🇦",
"name": "Ndonga",
"native_name": "Oshindonga"
},
"nl": {
"flag": "🇳🇱",
"name": "Dutch",
"native_name": "Nederlands"
},
"om": {
"flag": "🇪🇹",
"name": "Oromo",
"native_name": "Afaan Oromoo"
},
"os": {
"flag": "🇷🇺",
"name": "Ossetian",
"native_name": "ирон æвзаг"
},
"pl": {
"flag": "🇵🇱",
"name": "Polish",
"native_name": "Polski"
},
"pt": {
"flag": "🇵🇹",
"name": "Portuguese",
"native_name": "Português"
},
"pt_br": {
"flag": "🇧🇷",
"name": "Portuguese (Brazil)",
"native_name": "Português (Brasil)"
},
"qu": {
"flag": "🇵🇪",
"name": "Quechua",
"native_name": "Runa Simi"
},
"ro": {
"flag": "🇷🇴",
"name": "Romanian",
"native_name": "Română"
},
"ru": {
"flag": "🇷🇺",
"name": "Russian",
"native_name": "Русский"
},
"rw": {
"flag": "🇷🇼",
"name": "Kinyarwanda",
"native_name": "Ikinyarwanda"
},
"sc": {
"flag": "🇮🇹",
"name": "Sardinian",
"native_name": "sardu"
},
"sg": {
"flag": "🇨🇫",
"name": "Sango",
"native_name": "yângâ tî sängö"
},
"sk": {
"flag": "🇸🇰",
"name": "Slovak",
"native_name": "Slovenčina"
},
"sl": {
"flag": "🇸🇮",
"name": "Slovenian",
"native_name": "Slovenščina"
},
"sm": {
"flag": "🇼🇸",
"name": "Samoan",
"native_name": "Gagana Samoa"
},
"sn": {
"flag": "🇿🇼",
"name": "Shona",
"native_name": "chiShona"
},
"so": {
"flag": "🇸🇴",
"name": "Somali",
"native_name": "Soomaaliga"
},
"sr": {
"flag": "🇷🇸",
"name": "Serbian",
"native_name": "Српски"
},
"ss": {
"flag": "🇸🇿",
"name": "Swati",
"native_name": "SiSwati"
},
"st": {
"flag": "🇱🇸",
"name": "Southern Sotho",
"native_name": "Sesotho"
},
"su_id": {
"flag": "🇮🇩",
"name": "Sundanese (Indonesia)",
"native_name": "basa sunda"
},
"sv": {
"flag": "🇸🇪",
"name": "Swedish",
"native_name": "Svenska"
},
"th": {
"flag": "🇹🇭",
"name": "Thai",
"native_name": "ไทย"
},
"tk": {
"flag": "🇹🇲",
"name": "Turkmen",
"native_name": "Türkmen"
},
"tn": {
"flag": "🇧🇼",
"name": "Tswana",
"native_name": "Setswana"
},
"to": {
"flag": "🇹🇴",
"name": "Tongan",
"native_name": "faka-Tonga"
},
"tr": {
"flag": "🇹🇷",
"name": "Turkish",
"native_name": "Türkçe",
},
"ts": {
"flag": "🇿🇦",
"name": "Tsonga",
"native_name": "Xitsonga"
},
"ts_zw": {
"flag": "🇿🇼",
"name": "Tsonga (Zimbabwe)",
"native_name": "xitsonga"
},
"ty": {
"flag": "🇵🇫",
"name": "Tahitian",
"native_name": "Reo Tahiti"
},
"uk": {
"flag": "🇺🇦",
"name": "Ukrainian",
"native_name": "Українська"
},
"ur": {
"flag": "🇵🇰",
"name": "Urdu",
"native_name": "اردو"
},
"uz": {
"flag": "🇺🇿",
"name": "Uzbek",
"native_name": "oʻzbek"
},
"ve": {
"flag": "🇿🇦",
"name": "Venda",
"native_name": "Tshivenda"
},
"vi": {
"flag": "🇻🇳",
"name": "Vietnamese",
"native_name": "Tiếng Việt"
},
"vo": {
"flag": "🌍",
"name": "Volapük",
"native_name": "Volapük"
},
"wa": {
"flag": "🇧🇪",
"name": "Walloon",
"native_name": "walon"
},
"xh": {
"flag": "🇿🇦",
"name": "Xhosa",
"native_name": "isiXhosa"
},
"yi": {
"flag": "🌍",
"name": "Yiddish",
"native_name": "ייִדיש"
},
"yo": {
"flag": "🇳🇬",
"name": "Yoruba",
"native_name": "Yorùbá"
},
"zh": {
"flag": "🇨🇳",
"name": "Chinese",
"native_name": "中文"
},
"zh_hk": {
"flag": "🇭🇰",
"name": "Chinese (Hong Kong)",
"native_name": "中文(香港)"
},
"zh_tw": {
"flag": "🇹🇼",
"name": "Chinese (Taiwan)",
"native_name": "中文(台灣)"
},
"zu": {
"flag": "🇿🇦",
"name": "Zulu",
"native_name": "isiZulu"
}
}
if True:
import toml
from pathlib import Path
def process_data_dict(data: dict, existing: dict):
for key, value in data.items():
if key not in existing:
existing[key] = value
continue
if isinstance(value, dict):
if isinstance(existing[key], dict):
process_data_dict(value, existing[key])
continue
existing[key] = value
def process_data(data: dict, obj):
for key, value in data.items():
if not hasattr(obj, key):
continue
existing = getattr(obj, key)
if isinstance(existing, dict):
process_data_dict(value, existing)
continue
if isinstance(value, dict):
process_data(value, getattr(obj, key))
continue
setattr(obj, key, value)
config_file = Path("stsg.toml")
if config_file.exists() and config_file.is_file():
with config_file.open("r") as f:
process_data(toml.loads(f.read()), config)