Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f47165486 | ||
|
|
b9b7f55359 | ||
|
|
7fc14b794b | ||
|
|
3449a7beeb | ||
|
|
d98037450c | ||
|
|
d75112192d |
@@ -0,0 +1,160 @@
|
||||
# SPDX-FileCopyrightText: Free Software Foundation Europe e.V. <https://fsfe.org>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
"""Giant dict of iso code and lang directions."""
|
||||
|
||||
LANG_CODE_DIRECTION_MAPPINGS = {
|
||||
"aa": "ltr",
|
||||
"ab": "ltr",
|
||||
"af": "ltr",
|
||||
"am": "ltr",
|
||||
"an": "rtl",
|
||||
"ar": "rtl",
|
||||
"as": "ltr",
|
||||
"av": "ltr",
|
||||
"ca": "ltr",
|
||||
"be": "ltr",
|
||||
"bg": "ltr",
|
||||
"bh": "ltr",
|
||||
"bi": "ltr",
|
||||
"bm": "ltr",
|
||||
"bn": "ltr",
|
||||
"bs": "ltr",
|
||||
"ce": "ltr",
|
||||
"co": "ltr",
|
||||
"cr": "ltr",
|
||||
"cs": "ltr",
|
||||
"cu": "ltr",
|
||||
"cv": "ltr",
|
||||
"cy": "ltr",
|
||||
"da": "ltr",
|
||||
"de": "ltr",
|
||||
"dv": "ltr",
|
||||
"el": "ltr",
|
||||
"en": "ltr",
|
||||
"eo": "ltr",
|
||||
"es": "ltr",
|
||||
"et": "ltr",
|
||||
"eu": "ltr",
|
||||
"fa": "rtl",
|
||||
"ff": "ltr",
|
||||
"fi": "ltr",
|
||||
"fj": "ltr",
|
||||
"fo": "ltr",
|
||||
"fr": "ltr",
|
||||
"fy": "ltr",
|
||||
"ga": "ltr",
|
||||
"gd": "ltr",
|
||||
"gl": "ltr",
|
||||
"gn": "ltr",
|
||||
"gu": "ltr",
|
||||
"gv": "ltr",
|
||||
"ha": "rtl",
|
||||
"he": "ltr",
|
||||
"ho": "ltr",
|
||||
"hr": "ltr",
|
||||
"hu": "ltr",
|
||||
"hy": "ltr",
|
||||
"ia": "ltr",
|
||||
"id": "ltr",
|
||||
"ie": "ltr",
|
||||
"ig": "ltr",
|
||||
"ii": "ltr",
|
||||
"io": "ltr",
|
||||
"is": "ltr",
|
||||
"it": "ltr",
|
||||
"iu": "ltr",
|
||||
"ja": "ltr",
|
||||
"jv": "ltr",
|
||||
"ka": "ltr",
|
||||
"kg": "ltr",
|
||||
"ki": "ltr",
|
||||
"kj": "ltr",
|
||||
"kk": "ltr",
|
||||
"kl": "ltr",
|
||||
"km": "ltr",
|
||||
"ko": "ltr",
|
||||
"kr": "ltr",
|
||||
"ks": "rtl",
|
||||
"ku": "rtl",
|
||||
"kv": "ltr",
|
||||
"kw": "ltr",
|
||||
"ky": "ltr",
|
||||
"la": "ltr",
|
||||
"lg": "ltr",
|
||||
"li": "ltr",
|
||||
"ln": "ltr",
|
||||
"lo": "ltr",
|
||||
"lu": "ltr",
|
||||
"lv": "ltr",
|
||||
"mg": "ltr",
|
||||
"mh": "ltr",
|
||||
"mi": "ltr",
|
||||
"mk": "ltr",
|
||||
"mn": "ltr",
|
||||
"mr": "ltr",
|
||||
"ms": "ltr",
|
||||
"mt": "ltr",
|
||||
"my": "ltr",
|
||||
"nb": "ltr",
|
||||
"nd": "ltr",
|
||||
"ne": "ltr",
|
||||
"ng": "ltr",
|
||||
"nl": "ltr",
|
||||
"nn": "ltr",
|
||||
"nv": "ltr",
|
||||
"ny": "ltr",
|
||||
"oc": "ltr",
|
||||
"oj": "ltr",
|
||||
"om": "ltr",
|
||||
"or": "ltr",
|
||||
"os": "ltr",
|
||||
"pa": "ltr",
|
||||
"pi": "ltr",
|
||||
"pl": "rtl",
|
||||
"pt": "ltr",
|
||||
"rm": "ltr",
|
||||
"rn": "ltr",
|
||||
"ro": "ltr",
|
||||
"ru": "ltr",
|
||||
"sa": "ltr",
|
||||
"sc": "ltr",
|
||||
"sd": "rtl",
|
||||
"se": "ltr",
|
||||
"sg": "ltr",
|
||||
"si": "ltr",
|
||||
"sk": "ltr",
|
||||
"sl": "ltr",
|
||||
"sn": "ltr",
|
||||
"so": "ltr",
|
||||
"sq": "ltr",
|
||||
"sr": "ltr",
|
||||
"st": "ltr",
|
||||
"su": "ltr",
|
||||
"sv": "ltr",
|
||||
"ta": "ltr",
|
||||
"te": "ltr",
|
||||
"tg": "ltr",
|
||||
"th": "ltr",
|
||||
"tk": "ltr",
|
||||
"tl": "ltr",
|
||||
"tn": "ltr",
|
||||
"to": "ltr",
|
||||
"tr": "rtl",
|
||||
"tt": "ltr",
|
||||
"tw": "ltr",
|
||||
"ty": "ltr",
|
||||
"ug": "ltr",
|
||||
"uk": "rtl",
|
||||
"uz": "ltr",
|
||||
"ve": "ltr",
|
||||
"vi": "ltr",
|
||||
"vo": "ltr",
|
||||
"wa": "ltr",
|
||||
"wo": "ltr",
|
||||
"xh": "ltr",
|
||||
"yi": "rtl",
|
||||
"yo": "ltr",
|
||||
"za": "ltr",
|
||||
"zh": "ltr",
|
||||
}
|
||||
@@ -11,6 +11,7 @@ from typing import TYPE_CHECKING, Any
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from fsfe_website_build.lib.lang_directions import LANG_CODE_DIRECTION_MAPPINGS
|
||||
from fsfe_website_build.lib.misc import get_basename, get_version, lang_from_filename
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -34,8 +35,27 @@ def _get_xmls(file: Path, parser: etree.XMLParser) -> list[etree.Element]:
|
||||
# to this element instead of the actual content element.
|
||||
for elem in root.xpath("version"):
|
||||
root.remove(elem)
|
||||
lang = lang_from_filename(file)
|
||||
tmp_direction = LANG_CODE_DIRECTION_MAPPINGS.get(lang_from_filename(file))
|
||||
if tmp_direction is None:
|
||||
raise RuntimeError( # noqa: TRY003
|
||||
f"Lang {lang_from_filename(file)}"
|
||||
" missing from LANG_CODE_DIRECTION_MAPPINGS."
|
||||
" Please add it in lang_directions.py"
|
||||
)
|
||||
direction: str = tmp_direction
|
||||
for elem in root.xpath("*"):
|
||||
elem.set("filename", get_basename(file))
|
||||
# set the lang and direction on all elements
|
||||
# this ensure no matter how we source an elem
|
||||
# it has the right lang and direction
|
||||
elem.set("lang", lang)
|
||||
if direction != "ltr":
|
||||
elem.set("dir", direction)
|
||||
for subelem in elem.xpath("//*"):
|
||||
subelem.set("lang", lang)
|
||||
if direction != "ltr":
|
||||
subelem.set("dir", direction)
|
||||
elements.append(elem)
|
||||
# and then we return the element
|
||||
return elements
|
||||
|
||||
Reference in New Issue
Block a user