Skip to content

Commit 714bff4

Browse files
committed
🎄 feat!: create weblate.py for tracking translation progress
Created weblate.py to track translation progress for project languages in the Flask application. This change replaces the old trans_progress.py functionality.
1 parent 261504e commit 714bff4

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

‎weblate.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import requests
2+
import os
3+
4+
def fetch_weblate_languages(project_slug):
5+
"""
6+
Obtiene los idiomas y sus porcentajes de traducción de un proyecto en Weblate.
7+
8+
:param project_slug: Identificador del proyecto en Weblate.
9+
:return: Lista de diccionarios con la información procesada.
10+
"""
11+
api_token = os.getenv("WEBLATE_API_TOKEN")
12+
if not api_token:
13+
raise ValueError("El token de la API (WEBLATE_API_TOKEN) no está configurado en las variables de entorno.")
14+
15+
headers = {
16+
'Authorization': f'Token {api_token}'
17+
}
18+
url = f"https://hosted.weblate.org/api/projects/{project_slug}/languages/"
19+
20+
try:
21+
response = requests.get(url, headers=headers)
22+
response.raise_for_status()
23+
data = response.json()
24+
25+
# Procesar, filtrar y ordenar los idiomas
26+
languages = sorted(
27+
[
28+
{
29+
"code": language["code"],
30+
"name": language["name"],
31+
"translated_percent": language["translated_percent"],
32+
"weblate_url": language["url"],
33+
"docs_url": f"https://flask.palletsprojects.com/{language['code']}/latest/"
34+
}
35+
for language in data if language["code"] != "en" # Excluir el inglés
36+
],
37+
key=lambda lang: lang["translated_percent"], # Ordenar por porcentaje traducido
38+
reverse=True # Orden descendente
39+
)
40+
41+
return languages
42+
except requests.exceptions.RequestException as e:
43+
raise RuntimeError(f"Error al conectarse a Weblate: {e}")
44+
45+
# Ejemplo de uso independiente
46+
if __name__ == "__main__":
47+
PROJECT_SLUG = "flask"
48+
49+
try:
50+
languages = fetch_weblate_languages(PROJECT_SLUG)
51+
for lang in languages:
52+
print(lang)
53+
except Exception as e:
54+
print(str(e))

0 commit comments

Comments
 (0)