Skip to content

Commit 603fd2a

Browse files
committed
Fixed #4: language name (native) on hover
1 parent 37e5705 commit 603fd2a

File tree

4 files changed

+44
-11
lines changed

4 files changed

+44
-11
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ RUN \
1616
&& /usr/local/bin/gen-home_env/bin/pip3 install --no-cache-dir -U pip \
1717
&& /usr/local/bin/gen-home_env/bin/pip3 install \
1818
--no-cache-dir \
19-
Jinja2==3.1.2 PyYAML==6.0.1 humanfriendly==10.0 iso639-lang==2.2.3 libzim==3.4.0 \
19+
Jinja2==3.1.2 PyYAML==6.0.1 humanfriendly==10.0 libzim==3.4.0 pycountry==23.12.11 \
2020
# install tailwind CSS cli
2121
&& curl -L -o /usr/local/bin/tailwindcss https://github.com/tailwindlabs/tailwindcss/releases/download/v3.4.3/tailwindcss-linux-arm64 \
2222
&& chmod +x /usr/local/bin/tailwindcss \

gen-home.py

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,16 @@
1515

1616
from __future__ import annotations
1717

18+
import collections
19+
import gettext
1820
import os
1921
import pathlib
2022
import re
2123
import traceback
2224
import urllib.parse
2325

2426
import humanfriendly
25-
import iso639
27+
import pycountry
2628
import yaml
2729
from jinja2 import Environment, FileSystemLoader, select_autoescape
2830

@@ -32,6 +34,9 @@
3234
# we don't NEED cython ext but it's faster so use it if avail.
3335
from yaml import SafeLoader
3436

37+
LanguageDef = collections.namedtuple(
38+
"LanguageDef", ["alpha_3", "alpha_2", "native", "english"]
39+
)
3540

3641
src_dir = pathlib.Path(os.getenv("SRC_DIR", "/src")).expanduser().resolve()
3742
packages_path = (
@@ -70,6 +75,33 @@ def round_to(size: int, scale: int) -> int:
7075
return str(size)
7176

7277

78+
def get_lang_def(alpha_3: str) -> LanguageDef:
79+
"""LanguageDef tuple with parsed/prepared language info"""
80+
try:
81+
language = pycountry.languages.get(alpha_3=alpha_3)
82+
if not language:
83+
raise ValueError("")
84+
except Exception:
85+
return LanguageDef(alpha_3, alpha_3[:2], alpha_3, alpha_3)
86+
87+
try:
88+
alpha_2 = language.alpha_2
89+
except AttributeError:
90+
alpha_2 = alpha_3[:2]
91+
92+
try:
93+
translator = gettext.translation(
94+
"iso639-3", pycountry.LOCALES_DIR, languages=[alpha_2]
95+
)
96+
native = translator.gettext(language.name).title()
97+
except Exception:
98+
native = language.name
99+
100+
return LanguageDef(
101+
alpha_3=alpha_3, alpha_2=alpha_2, native=native, english=language.name
102+
)
103+
104+
73105
env.filters["fsize"] = format_fsize
74106

75107

@@ -166,8 +198,8 @@ def visible(self):
166198
return False
167199

168200
@property
169-
def langs(self) -> list[str]:
170-
return [lang[:2] for lang in self.get("languages", [])]
201+
def langs(self) -> list[LanguageDef]:
202+
return [get_lang_def(lang) for lang in self.get("languages", [])]
171203

172204

173205
def gen_home(fpath: pathlib.Path):
@@ -186,8 +218,8 @@ def gen_home(fpath: pathlib.Path):
186218
context["languages"] = {}
187219
context["categories"] = set()
188220
for package in context["packages"]:
189-
for lang in package.get("languages", []):
190-
context["languages"][lang] = iso639.Lang(lang).name
221+
for lang in package.langs:
222+
context["languages"][lang.alpha_3] = lang.native
191223
for tag in package.get("tags", []):
192224
if tag.startswith("_category:"):
193225
package["category"] = tag.split(":", 1)[-1]

templates/download.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ <h2 class="flex-auto text-lg text-left">Kiwix Reader</h2>
164164
"
165165
data-target="{{ package.url }}"
166166
data-category="{{ package.category }}"
167-
data-langs="{% if package.langs %}{% for lang in package.languages %}{{ lang }} {% endfor %}{% endif %}"
167+
data-langs="{% if package.langs %}{% for lang in package.langs %}{{ lang }} {% endfor %}{% endif %}"
168168
data-name="{{ package.title }}"
169169
data-size="{% if package.download and package.download.size %}{{ package.download.size }}{% else %}0{% endif %}">
170170

@@ -267,7 +267,8 @@ <h2 class="flex-auto text-lg text-left">Kiwix Reader</h2>
267267
{% if loop.index0 < 2 %}
268268
<span
269269
class="rounded-md border-kwbordergrey border-solid border text-center text-[0.7em] pt-[0.32em] pb-[0.32em] px-[0.3em] uppercase me-1 last:me-0"
270-
>{{ lang }}</span>
270+
title="{{ lang.native }}"
271+
>{{ lang.alpha_2 }}</span>
271272
{% endif %}
272273
{% endfor %}
273274
{% endif %}

templates/home.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
"
6565
data-target="{{ package.url }}"
6666
data-category="{{ package.category }}"
67-
data-langs="{% if package.langs %}{% for lang in package.languages %}{{ lang }} {% endfor %}{% endif %}"
67+
data-langs="{% if package.langs %}{% for lang in package.langs %}{{ lang.alpha_3 }} {% endfor %}{% endif %}"
6868
data-name="{{ package.title }}"
6969
data-size="{% if package.download and package.download.size %}{{ package.download.size }}{% else %}0{% endif %}"
7070
>
@@ -147,7 +147,7 @@
147147
148148
">
149149
{% for lang in package.langs %}
150-
{% if loop.index0 <= 2 and lang != 'mu' %}
150+
{% if loop.index0 <= 2 and lang.alpha_3 != 'mul' %}
151151
<div class="
152152
rounded-md
153153
border-kwbordergrey
@@ -170,7 +170,7 @@
170170
171171
md:mb-1
172172
md:last:mb-1
173-
"><div class="text-[0.7em] pt-[0.1em] uppercase">{{ lang }}</div></div>
173+
"><div class="text-[0.7em] pt-[0.1em] uppercase" title="{{ lang.native }}">{{ lang.alpha_2 }}</div></div>
174174
{% endif %}
175175
{% endfor %}
176176
</div>

0 commit comments

Comments
 (0)