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.
		
		
		
		
		
			
		
			
				
					
					
						
							43 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							43 lines
						
					
					
						
							1.5 KiB
						
					
					
				| #!/usr/bin/env python3
 | |
| from itertools import chain
 | |
| import argparse
 | |
| import json
 | |
| import os
 | |
| 
 | |
| from openpilot.system.ui.lib.multilang import UI_DIR, TRANSLATIONS_DIR, LANGUAGES_FILE
 | |
| 
 | |
| 
 | |
| def update_translations():
 | |
|   files = []
 | |
|   for root, _, filenames in chain(os.walk(os.path.join(UI_DIR, "widgets")),
 | |
|                                   os.walk(os.path.join(UI_DIR, "layouts")),
 | |
|                                   os.walk(os.path.join(UI_DIR, "onroad"))):
 | |
|     for filename in filenames:
 | |
|       if filename.endswith(".py"):
 | |
|         files.append(os.path.join(root, filename))
 | |
| 
 | |
|   # Create main translation file
 | |
|   cmd = ("xgettext -L Python --keyword=tr --keyword=trn:1,2 --keyword=pgettext:1c,2 --from-code=UTF-8 " +
 | |
|          "--flag=tr:1:python-brace-format --flag=trn:1:python-brace-format --flag=trn:2:python-brace-format " +
 | |
|          "-o translations/app.pot {}").format(" ".join(files))
 | |
| 
 | |
|   ret = os.system(cmd)
 | |
|   assert ret == 0
 | |
| 
 | |
|   # Generate/update translation files for each language
 | |
|   with open(LANGUAGES_FILE) as f:
 | |
|     translation_files = json.load(f).values()
 | |
| 
 | |
|   for name in translation_files:
 | |
|     if os.path.exists(os.path.join(TRANSLATIONS_DIR, f"app_{name}.po")):
 | |
|       cmd = f"msgmerge --update --backup=none --sort-output translations/app_{name}.po translations/app.pot"
 | |
|       ret = os.system(cmd)
 | |
|       assert ret == 0
 | |
|     else:
 | |
|       cmd = f"msginit -l {name} --no-translator --input translations/app.pot --output-file translations/app_{name}.po"
 | |
|       ret = os.system(cmd)
 | |
|       assert ret == 0
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|   update_translations()
 | |
| 
 |