66from pathlib import Path
77
88
9- def entry_check (pofile :polib .POFile )-> str :
9+ def get_progress (pofile :polib .POFile )-> float :
1010'''
1111 Check the po file with how many entries are translated or not.
1212 '''
1313
1414lines_tranlated = len (pofile .translated_entries ())
1515lines_untranlated = len (pofile .untranslated_entries ())
1616
17- if lines_tranlated == 0 :
18- result = "❌"
19- elif lines_untranlated == 0 :
20- result = "✅"
21- else :
22- lines_all = lines_tranlated + lines_untranlated
23- progress = lines_tranlated / lines_all
24- progress_percentage = round (progress * 100 ,2 )
25- result = f"{ progress_percentage } %"
26-
27- return result
17+ # if lines_tranlated == 0:
18+ # result = "❌"
19+ # elif lines_untranlated == 0:
20+ # result = "✅"
21+ # else:
22+ lines_all = lines_tranlated + lines_untranlated
23+ progress = lines_tranlated / lines_all
24+ progress_percentage = round (progress * 100 ,2 )
25+ return progress_percentage
2826
2927
3028def get_open_issues_count ()-> int :
@@ -93,13 +91,21 @@ def format_line_table_header() -> list:
9391f"|-------:|:-------|:----|:-------|\r \n " ]
9492
9593
96- def format_issue_link (url :str )-> str :
97- return f"[{ url .split ('/' )[- 1 ]} ]({ url } )" if len (url )> 0 else ''
94+ def format_line_po_issue_display (issue_link :str ,issue_number :str ,create_issue_link :str ,progress :float )-> str :
95+ if issue_link :
96+ return f"[{ issue_number } ]({ issue_link } )"
97+ if progress != 100 :
98+ return f"[create issue]({ create_issue_link } )"
99+ return ""
98100
99101
100- def format_line_file (dirname :str ,filename :str ,data :dict )-> str :
101- return f"|[`{ filename } `](https://github.com/python/python-docs-zh-tw/tree/3.13/{ dirname } /{ filename } )" + \
102- f"|{ data ['progress' ]} |{ format_issue_link (data ['issue' ])} |{ data ['assignee' ]} |\r \n "
102+ def format_line_po (filename :str ,po_link :str ,progress :str ,issue_display :str ,assignee :str )-> str :
103+ progress_display = f"{ progress } %"
104+ if progress == 0 :
105+ progress_display = "❌"
106+ elif progress == 100 :
107+ progress_display = "✅"
108+ return f"|[`{ filename } `]({ po_link } )|{ progress_display } |{ issue_display } |{ assignee } |\r \n "
103109
104110
105111def format_line_directory (dirname :str )-> str :
@@ -122,7 +128,7 @@ def format_line_directory(dirname: str) -> str:
122128po = polib .pofile (filepath )
123129
124130summary .setdefault (dirname , {})[filename ]= {
125- 'progress' :entry_check (po ),
131+ 'progress' :get_progress (po ),
126132'issue' :'' ,
127133'assignee' :'' ,
128134 }
@@ -153,7 +159,14 @@ def format_line_directory(dirname: str) -> str:
153159
154160filedict_sorted = dict (sorted (filedict .items ()))
155161for filename ,filedata in filedict_sorted .items ():
156- writeliner .append (format_line_file (dirname ,filename ,filedata ))
162+ file_path = f"{ dirname } /{ filename } "
163+ po_link = f"https://github.com/python/python-docs-zh-tw/tree/3.13/{ file_path } "
164+ issue_link = filedata ['issue' ]
165+ issue_number = f"#{ issue_link .split ('/' )[- 1 ]} "
166+ create_issue_link = f"https://github.com/python/python-docs-zh-tw/issues/new?title=Translate `{ file_path } `"
167+ issue_display = format_line_po_issue_display (issue_link ,issue_number ,filedata ['progress' ],create_issue_link )
168+ line_po = format_line_po (filename ,po_link ,filedata ['progress' ],issue_display ,filedata ['assignee' ])
169+ writeliner .append (line_po )
157170
158171with open (
159172f"summarize_progress/result.md" ,