From d2d2628e563ebfff2bdea3db8a1461c96cef893b Mon Sep 17 00:00:00 2001 From: Lars Noack Date: Thu, 10 Apr 2025 17:49:59 +0200 Subject: [PATCH] feat: added language info --- stsg/build.py | 4 +- stsg/config.py | 153 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+), 1 deletion(-) diff --git a/stsg/build.py b/stsg/build.py index dff4863..000166f 100644 --- a/stsg/build.py +++ b/stsg/build.py @@ -67,6 +67,8 @@ class Context: def convert_md(src: Path, dst: Path, context: Optional[Context] = None): + logger.info("converting %s", src) + html_content = markdown.markdown(src.read_text()) context = context or Context(str(src.parent)) full_page = context.get_text(content=html_content) @@ -86,7 +88,7 @@ class CustomLanguageCode: @property def language_code(self) -> str: return self.file.name.replace(".md", "") - + @property def relative_url(self) -> str: return "/" + str(Path(self.file.parent, self.language_code)) diff --git a/stsg/config.py b/stsg/config.py index 9c70174..b1fcd7e 100644 --- a/stsg/config.py +++ b/stsg/config.py @@ -7,3 +7,156 @@ STATIC_DIRECTORY = "static" # FOR DEVELOPMENT CODE_DIRECTORY = "stsg" + +# LANGUAGE INFORMATION + +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' }, +}