]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
✨ Generate automatic language names for docs translations (#5354)
authorCraig Blaszczyk <masterjakul@gmail.com>
Tue, 9 Jan 2024 20:37:09 +0000 (20:37 +0000)
committerGitHub <noreply@github.com>
Tue, 9 Jan 2024 20:37:09 +0000 (20:37 +0000)
Co-authored-by: Craig Blaszczyk <craig@boughtbymany.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
docs/en/mkdocs.yml
docs/language_names.yml [new file with mode: 0644]
scripts/docs.py

index a64eff26969aaf86507ab8fc9c750f0f6e879f2b..92d081aa12333e3667975b49010b987a8acc327a 100644 (file)
@@ -58,15 +58,18 @@ plugins:
       python:
         options:
           extensions:
-            - griffe_typingdoc
+          - griffe_typingdoc
           show_root_heading: true
           show_if_no_docstring: true
-          preload_modules: [httpx, starlette]
+          preload_modules:
+          - httpx
+          - starlette
           inherited_members: true
           members_order: source
           separate_signature: true
           unwrap_annotated: true
-          filters: ["!^_"]
+          filters:
+          - '!^_'
           merge_init_into_class: true
           docstring_section_style: spacy
           signature_crossrefs: true
@@ -264,25 +267,25 @@ extra:
   - link: /
     name: en - English
   - link: /de/
-    name: de
-  - link: /em/
-    name: 😉
+    name: de - Deutsch
   - link: /es/
     name: es - español
   - link: /fa/
-    name: fa
+    name: fa - فارسی
   - link: /fr/
     name: fr - français
   - link: /he/
-    name: he
+    name: he - עברית
+  - link: /hu/
+    name: hu - magyar
   - link: /id/
-    name: id
+    name: id - Bahasa Indonesia
   - link: /ja/
     name: ja - 日本語
   - link: /ko/
     name: ko - 한국어
   - link: /pl/
-    name: pl
+    name: pl - Polski
   - link: /pt/
     name: pt - português
   - link: /ru/
@@ -290,15 +293,17 @@ extra:
   - link: /tr/
     name: tr - Türkçe
   - link: /uk/
-    name: uk
+    name: uk - українська мова
   - link: /ur/
-    name: ur
+    name: ur - اردو
   - link: /vi/
     name: vi - Tiếng Việt
   - link: /yo/
     name: yo - Yorùbá
   - link: /zh/
     name: zh - 汉语
+  - link: /em/
+    name: 😉
 extra_css:
 - css/termynal.css
 - css/custom.css
diff --git a/docs/language_names.yml b/docs/language_names.yml
new file mode 100644 (file)
index 0000000..fbbbde3
--- /dev/null
@@ -0,0 +1,182 @@
+aa: Afaraf
+ab: аҧсуа бызшәа
+ae: avesta
+af: Afrikaans
+ak: Akan
+am: አማርኛ
+an: aragonés
+ar: اللغة العربية
+as: অসমীয়া
+av: авар мацӀ
+ay: aymar aru
+az: azərbaycan dili
+ba: башҡорт теле
+be: беларуская мова
+bg: български език
+bh: भोजपुरी
+bi: Bislama
+bm: bamanankan
+bn: বাংলা
+bo: བོད་ཡིག
+br: brezhoneg
+bs: bosanski jezik
+ca: Català
+ce: нохчийн мотт
+ch: Chamoru
+co: corsu
+cr: ᓀᐦᐃᔭᐍᐏᐣ
+cs: čeština
+cu: ѩзыкъ словѣньскъ
+cv: чӑваш чӗлхи
+cy: Cymraeg
+da: dansk
+de: Deutsch
+dv: Dhivehi
+dz: རྫོང་ཁ
+ee: Eʋegbe
+el: Ελληνικά
+en: English
+eo: Esperanto
+es: español
+et: eesti
+eu: euskara
+fa: فارسی
+ff: Fulfulde
+fi: suomi
+fj: Vakaviti
+fo: føroyskt
+fr: français
+fy: Frysk
+ga: Gaeilge
+gd: Gàidhlig
+gl: galego
+gu: ગુજરાતી
+gv: Gaelg
+ha: هَوُسَ
+he: עברית
+hi: हिन्दी
+ho: Hiri Motu
+hr: Hrvatski
+ht: Kreyòl ayisyen
+hu: magyar
+hy: Հայերեն
+hz: Otjiherero
+ia: Interlingua
+id: Bahasa Indonesia
+ie: Interlingue
+ig: Asụsụ Igbo
+ii: ꆈꌠ꒿ Nuosuhxop
+ik: Iñupiaq
+io: Ido
+is: Íslenska
+it: italiano
+iu: ᐃᓄᒃᑎᑐᑦ
+ja: 日本語
+jv: basa Jawa
+ka: ქართული
+kg: Kikongo
+ki: Gĩkũyũ
+kj: Kuanyama
+kk: қазақ тілі
+kl: kalaallisut
+km: ខេមរភាសា
+kn: ಕನ್ನಡ
+ko: 한국어
+kr: Kanuri
+ks: कश्मीरी
+ku: Kurdî
+kv: коми кыв
+kw: Kernewek
+ky: Кыргызча
+la: latine
+lb: Lëtzebuergesch
+lg: Luganda
+li: Limburgs
+ln: Lingála
+lo: ພາສາ
+lt: lietuvių kalba
+lu: Tshiluba
+lv: latviešu valoda
+mg: fiteny malagasy
+mh: Kajin M̧ajeļ
+mi: te reo Māori
+mk: македонски јазик
+ml: മലയാളം
+mn: Монгол хэл
+mr: मराठी
+ms: Bahasa Malaysia
+mt: Malti
+my: ဗမာစာ
+na: Ekakairũ Naoero
+nb: Norsk bokmål
+nd: isiNdebele
+ne: नेपाली
+ng: Owambo
+nl: Nederlands
+nn: Norsk nynorsk
+'no': Norsk
+nr: isiNdebele
+nv: Diné bizaad
+ny: chiCheŵa
+oc: occitan
+oj: ᐊᓂᔑᓈᐯᒧᐎᓐ
+om: Afaan Oromoo
+or: ଓଡ଼ିଆ
+os: ирон æвзаг
+pa: ਪੰਜਾਬੀ
+pi: पाऴि
+pl: Polski
+ps: پښتو
+pt: português
+qu: Runa Simi
+rm: rumantsch grischun
+rn: Ikirundi
+ro: Română
+ru: русский язык
+rw: Ikinyarwanda
+sa: संस्कृतम्
+sc: sardu
+sd: सिन्धी
+se: Davvisámegiella
+sg: yângâ tî sängö
+si: සිංහල
+sk: slovenčina
+sl: slovenščina
+sn: chiShona
+so: Soomaaliga
+sq: shqip
+sr: српски језик
+ss: SiSwati
+st: Sesotho
+su: Basa Sunda
+sv: svenska
+sw: Kiswahili
+ta: தமிழ்
+te: తెలుగు
+tg: тоҷикӣ
+th: ไทย
+ti: ትግርኛ
+tk: Türkmen
+tl: Wikang Tagalog
+tn: Setswana
+to: faka Tonga
+tr: Türkçe
+ts: Xitsonga
+tt: татар теле
+tw: Twi
+ty: Reo Tahiti
+ug: ئۇيغۇرچە‎
+uk: українська мова
+ur: اردو
+uz: Ўзбек
+ve: Tshivenḓa
+vi: Tiếng Việt
+vo: Volapük
+wa: walon
+wo: Wollof
+xh: isiXhosa
+yi: ייִדיש
+yo: Yorùbá
+za: Saɯ cueŋƅ
+zh: 汉语
+zu: isiZulu
index 73e1900ada0c485af8567e95d75309261da404ed..a6710d7a50faca2ff0333bf9945f900a10d203cd 100644 (file)
@@ -274,22 +274,24 @@ def live(
 def update_config() -> None:
     config = get_en_config()
     languages = [{"en": "/"}]
-    alternate: List[Dict[str, str]] = config["extra"].get("alternate", [])
-    alternate_dict = {alt["link"]: alt["name"] for alt in alternate}
     new_alternate: List[Dict[str, str]] = []
+    # Language names sourced from https://quickref.me/iso-639-1
+    # Contributors may wish to update or change these, e.g. to fix capitalization.
+    language_names_path = Path(__file__).parent / "../docs/language_names.yml"
+    local_language_names: Dict[str, str] = mkdocs.utils.yaml_load(
+        language_names_path.read_text(encoding="utf-8")
+    )
     for lang_path in get_lang_paths():
-        if lang_path.name == "en" or not lang_path.is_dir():
+        if lang_path.name in {"en", "em"} or not lang_path.is_dir():
             continue
-        name = lang_path.name
-        languages.append({name: f"/{name}/"})
+        code = lang_path.name
+        languages.append({code: f"/{code}/"})
     for lang_dict in languages:
-        name = list(lang_dict.keys())[0]
-        url = lang_dict[name]
-        if url not in alternate_dict:
-            new_alternate.append({"link": url, "name": name})
-        else:
-            use_name = alternate_dict[url]
-            new_alternate.append({"link": url, "name": use_name})
+        code = list(lang_dict.keys())[0]
+        url = lang_dict[code]
+        use_name = f"{code} - {local_language_names[code]}"
+        new_alternate.append({"link": url, "name": use_name})
+    new_alternate.append({"link": "/em/", "name": "😉"})
     config["extra"]["alternate"] = new_alternate
     en_config_path.write_text(
         yaml.dump(config, sort_keys=False, width=200, allow_unicode=True),