You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.8 KiB
						
					
					
				| #!/usr/bin/env python3
 | |
| import json
 | |
| import os
 | |
| import requests
 | |
| 
 | |
| from common.basedir import BASEDIR
 | |
| from selfdrive.ui.update_translations import LANGUAGES_FILE, TRANSLATIONS_DIR
 | |
| 
 | |
| TRANSLATION_TAG = "<translation"
 | |
| UNFINISHED_TRANSLATION_TAG = "<translation type=\"unfinished\""
 | |
| BADGE_HEIGHT = 20 + 8
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|   with open(LANGUAGES_FILE, "r") as f:
 | |
|     translation_files = json.load(f)
 | |
| 
 | |
|   badge_svg = [f'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="{len(translation_files) * BADGE_HEIGHT}">']
 | |
|   for idx, (name, file) in enumerate(translation_files.items()):
 | |
|     with open(os.path.join(TRANSLATIONS_DIR, f"{file}.ts"), "r") as tr_f:
 | |
|       tr_file = tr_f.read()
 | |
| 
 | |
|     total_translations = 0
 | |
|     unfinished_translations = 0
 | |
|     for line in tr_file.splitlines():
 | |
|       if TRANSLATION_TAG in line:
 | |
|         total_translations += 1
 | |
|       if UNFINISHED_TRANSLATION_TAG in line:
 | |
|         unfinished_translations += 1
 | |
| 
 | |
|     percent_finished = int(100 - (unfinished_translations / total_translations * 100.))
 | |
|     color = "green" if percent_finished == 100 else "orange" if percent_finished >= 70 else "red"
 | |
| 
 | |
|     r = requests.get(f"https://img.shields.io/badge/LANGUAGE {name}-{percent_finished}%25 complete-{color}", timeout=10)
 | |
|     assert r.status_code == 200, "Error downloading badge"
 | |
|     content_svg = r.content.decode("utf-8")
 | |
| 
 | |
|     # make tag ids in each badge unique
 | |
|     for tag in ("r", "s"):
 | |
|       content_svg = content_svg.replace(f'id="{tag}"', f'id="{tag}{idx}"')
 | |
|       content_svg = content_svg.replace(f'"url(#{tag})"', f'"url(#{tag}{idx})"')
 | |
| 
 | |
|     badge_svg.extend([f'<g transform="translate(0, {idx * BADGE_HEIGHT})">', content_svg, "</g>"])
 | |
| 
 | |
|   badge_svg.append("</svg>")
 | |
| 
 | |
|   with open(os.path.join(BASEDIR, "translation_badge.svg"), "w") as badge_f:
 | |
|     badge_f.write("\n".join(badge_svg))
 | |
| 
 |