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.
		
		
		
		
		
			
		
			
				
					
					
						
							41 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							41 lines
						
					
					
						
							1.6 KiB
						
					
					
				#!/usr/bin/env python3
 | 
						|
from itertools import chain
 | 
						|
import os
 | 
						|
from openpilot.common.basedir import BASEDIR
 | 
						|
from openpilot.system.ui.lib.multilang import SYSTEM_UI_DIR, UI_DIR, TRANSLATIONS_DIR, multilang
 | 
						|
 | 
						|
POT_FILE = os.path.join(str(TRANSLATIONS_DIR), "app.pot")
 | 
						|
 | 
						|
 | 
						|
def update_translations():
 | 
						|
  files = []
 | 
						|
  for root, _, filenames in chain(os.walk(SYSTEM_UI_DIR),
 | 
						|
                                  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.relpath(os.path.join(root, filename), BASEDIR))
 | 
						|
 | 
						|
  # Create main translation file
 | 
						|
  cmd = ("xgettext -L Python --keyword=tr --keyword=trn:1,2 --keyword=tr_noop --from-code=UTF-8 " +
 | 
						|
         "--flag=tr:1:python-brace-format --flag=trn:1:python-brace-format --flag=trn:2:python-brace-format " +
 | 
						|
         f"-D {BASEDIR} -o {POT_FILE} {' '.join(files)}")
 | 
						|
 | 
						|
  ret = os.system(cmd)
 | 
						|
  assert ret == 0
 | 
						|
 | 
						|
  # Generate/update translation files for each language
 | 
						|
  for name in multilang.languages.values():
 | 
						|
    if os.path.exists(os.path.join(TRANSLATIONS_DIR, f"app_{name}.po")):
 | 
						|
      cmd = f"msgmerge --update --no-fuzzy-matching --backup=none --sort-output {TRANSLATIONS_DIR}/app_{name}.po {POT_FILE}"
 | 
						|
      ret = os.system(cmd)
 | 
						|
      assert ret == 0
 | 
						|
    else:
 | 
						|
      cmd = f"msginit -l {name} --no-translator --input {POT_FILE} --output-file {TRANSLATIONS_DIR}/app_{name}.po"
 | 
						|
      ret = os.system(cmd)
 | 
						|
      assert ret == 0
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
  update_translations()
 | 
						|
 |