You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			55 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
| #!/bin/python
 | |
| 
 | |
| 
 | |
| # usage : ./tools/unusedLocalizedString.py |grep False
 | |
| 
 | |
| import re
 | |
| import os
 | |
| from glob import glob
 | |
| 
 | |
| # get all files matching .js, .ts and .tsx in ./
 | |
| dir_path = './'
 | |
| files = [y for x in os.walk(dir_path) for y in glob(os.path.join(x[0], '*.js'))]
 | |
| files += [y for x in os.walk(dir_path) for y in glob(os.path.join(x[0], '*.ts'))]
 | |
| files += [y for x in os.walk(dir_path) for y in glob(os.path.join(x[0], '*.tsx'))]
 | |
| 
 | |
| # exclude node_modules directories
 | |
| filtered_files = [f for f in files if "node_modules" not in f]
 | |
| 
 | |
| # search for this pattern in _locales/en/messages.json: it is a defined localized string
 | |
| patternLocalizedString = re.compile("^  \".*\"\: {")
 | |
| 
 | |
| localizedStringToSearch = 0
 | |
| localizedStringNotFound = 0
 | |
| for i, line in enumerate(open('_locales/en/messages.json')):
 | |
|     for match in re.finditer(patternLocalizedString, line):
 | |
|         localizedStringToSearch = localizedStringToSearch + 1
 | |
|         found = match.group()
 | |
|         # extract the key only from the line
 | |
|         foundAline = found[3:-4]
 | |
|         # print 'Found on line %s: \'%s\'' % (i + 1, foundAline)
 | |
| 
 | |
|         # generate a new regex to be searched for to find its usage in the code
 | |
|         # currently, it matches
 | |
|         #       * i18n('key') with or without line return
 | |
|         #       * messages.key (used in some places)
 | |
|         #       * and also 'key'. (some false positive might be present here)
 | |
|         searchedLine = "i18n\([\r\n]?\s*'{0}'|messages.{0}|'{0}'".format(foundAline)
 | |
| 
 | |
| 
 | |
|         found = False
 | |
|         # skip timerOptions string constructed dynamically
 | |
|         if 'timerOption_' in foundAline:
 | |
|             found = True
 | |
|         else:
 | |
|             for file_path in filtered_files:
 | |
|                 fileContent = open(file_path, 'r').read()
 | |
|                 if len(re.findall(searchedLine,fileContent,re.MULTILINE)) > 0:
 | |
|                     found = True
 | |
|                     break
 | |
|             if not found:
 | |
|                 localizedStringNotFound = localizedStringNotFound + 1
 | |
|         print "i18n for '{0}': found:{1}:".format(foundAline, found)
 | |
| 
 | |
| print "number of localized string found in messages.json:{0}".format(localizedStringToSearch)
 | |
| print "number of localized string NOT found:{0}".format(localizedStringNotFound) |