1# 2# This file is an aid to generate the Languages rules file. 3# usage: 4# python languages.py > ..\winbuild\Languages.rules 5# 6import os 7import re 8 9files = [f for f in os.listdir('.') if re.match(r'translator_[a-z][a-z]\.h', f)] 10new_list = [] 11for f in files: 12 new_list.append([f,(os.path.splitext(f)[0]).replace("translator_","").upper()]) 13 14# 15# generating file is lang_cfg.py 16# the rules file has to output lang_cfg.h 17# 18print("""\ 19<?xml version="1.0" encoding="utf-8"?> 20<VisualStudioToolFile 21 Name="languages" 22 Version="8.00" 23 > 24 <Rules> 25 <CustomBuildRule 26 Name="Languages" 27 DisplayName="Settings" 28 CommandLine="python $(InputPath) [AllOptions] [AdditionalOptions] > $(InpDir)/$(InputName).h" 29 Outputs="$(IntDir)/$(InputName).h" 30 FileExtensions="*.py" 31 AdditionalDependencies="" 32 ExecutionDescription="Executing languages ..." 33 ShowOnlyRuleProperties="false" 34 > 35 <Properties> 36 <EnumProperty 37 Name="EnglishOnly" 38 DisplayName="Use English Only" 39 Description="Use English Only" 40 DefaultValue="0" 41 > 42 <Values> 43 <EnumValue 44 Value="0" 45 Switch="" 46 DisplayName="Don't use English Only" 47 /> 48 <EnumValue 49 Value="1" 50 Switch="ENONLY" 51 DisplayName="Use English Only" 52 /> 53 </Values> 54 </EnumProperty> 55""") 56# 57# generate loop, English is mandatory (so cannot be chosen) 58# 59for f in new_list: 60 if (f[1] != "EN"): 61 # search for the language description 62 fil = open(f[0], 'r') 63 tmp = "" 64 for line in fil: 65 if "idLanguage" in line: 66 tmp = line 67 if "}" in line: 68 break 69 elif (tmp != ""): 70 tmp += line 71 if "}" in line: 72 break 73 74 tmp = tmp.replace("\n","") 75 l = re.sub('[^"]*"([^"]*)".*','\\1',tmp) 76 l1 = l.replace("-","") 77 # capitalize first letter 78 l = l.title() 79 print("""\ 80 <EnumProperty 81 Name="%s" 82 DisplayName="Use %s" 83 Description="Use %s" 84 DefaultValue="1" 85 > 86 <Values> 87 <EnumValue 88 Value="0" 89 Switch="" 90 DisplayName="Don't use %s" 91 /> 92 <EnumValue 93 Value="1" 94 Switch="%s" 95 DisplayName="Use %s" 96 /> 97 </Values> 98 </EnumProperty> 99 """ % (l1, l, l, l, f[1], l)) 100 101print("""\ 102 </Properties> 103 </CustomBuildRule> 104 </Rules> 105</VisualStudioToolFile> 106""") 107