|
| 1 | +"""Analiza los achivos .po y obtiene información necesaria para actualizar el README.md""" |
| 2 | + |
| 3 | +import os |
| 4 | +import polib |
| 5 | +from tabulate import tabulate |
| 6 | + |
| 7 | +def contar_strings_faltantes(pofile): |
| 8 | + """ |
| 9 | + Cuenta los archivos .po que faltan por traducir |
| 10 | + """ |
| 11 | + po = polib.pofile(pofile) |
| 12 | + strings_faltantes = 0 |
| 13 | + |
| 14 | + for entry in po: |
| 15 | + if not entry.translated() and not entry.obsolete: |
| 16 | + strings_faltantes += 1 |
| 17 | + |
| 18 | + return strings_faltantes |
| 19 | + |
| 20 | +def obtener_last_translator(pofile): |
| 21 | + """ |
| 22 | + Obtiene al ultimo traductor del archivo .po dado |
| 23 | + """ |
| 24 | + po = polib.pofile(pofile) |
| 25 | + last_translator = po.metadata.get("Last-Translator", "Desconocido") |
| 26 | + return last_translator |
| 27 | + |
| 28 | +def po_analize(): |
| 29 | + """ |
| 30 | + Itera los archivos .po y obtiene la resectiva información |
| 31 | + """ |
| 32 | + # Directorio donde se encuentran los archivos .po y sus subdirectorios |
| 33 | + directorio_base = "docs/locales/es/LC_MESSAGES" |
| 34 | + data = [] |
| 35 | + total_faltantes = 0 |
| 36 | + |
| 37 | + for root, _, archivos in os.walk(directorio_base): |
| 38 | + for archivo in archivos: |
| 39 | + if archivo.endswith(".po"): |
| 40 | + ruta_completa = os.path.join(root, archivo) |
| 41 | + # Obtener el directorio padre |
| 42 | + # directorio_padre = os.path.dirname(ruta_completa) |
| 43 | + # Eliminar el string contenido en directorio_base |
| 44 | + ruta_final = ruta_completa.replace(directorio_base, "") |
| 45 | + # Verificar si hay strings faltantes |
| 46 | + faltantes = contar_strings_faltantes(ruta_completa) |
| 47 | + # Obtener el Last-Translator |
| 48 | + last_translator = obtener_last_translator(ruta_completa) |
| 49 | + # Mostrar la ruta final, OK/NO y Last-Translator |
| 50 | + if faltantes == 0: |
| 51 | + data.append([ruta_final, "SÍ", last_translator]) |
| 52 | + else: |
| 53 | + data.append([ruta_final, f"NO ({faltantes} restantes)", last_translator]) |
| 54 | + total_faltantes += faltantes |
| 55 | + |
| 56 | + # Ordenar las filas por la ruta del archivo (primera columna) |
| 57 | + data.sort(key=lambda x: x[0]) |
| 58 | + |
| 59 | + headers = ["Archivo", "Traducción completa", "Último traductor"] |
| 60 | + |
| 61 | + return tabulate(data, headers=headers, tablefmt="github") |
| 62 | + |
| 63 | +if __name__ == "__main__": |
| 64 | + print(po_analize()) |
0 commit comments