def ui_l10n(input_files, output, base):
'''Generate pot file from lib/ui/*'''
- output = io.open(output, 'w', encoding='utf_8')
+ output = io.open(output, 'w', encoding='utf_8', newline='\n')
Submenu = re.compile(r'^[^#]*Submenu\s+"([^"]*)"', re.IGNORECASE)
Popupmenu = re.compile(r'^[^#]*PopupMenu\s+"[^"]+"\s+"([^"]*)"', re.IGNORECASE)
IconPalette = re.compile(r'^[^#]*IconPalette\s+"[^"]+"\s+"([^"]*)"', re.IGNORECASE)
if 'wa' in languages:
languages.remove('wa')
- out = io.open(output, 'w', encoding='utf_8')
+ if layouttranslations:
+ out = io.open(output, 'w', encoding='utf_8')
+ else:
+ out = io.open(output, 'w', encoding='utf_8', newline='\n')
for src in input_files:
readingDescription = False
readingI18nPreamble = False
def qt4_l10n(input_files, output, base):
'''Generate pot file from src/frontends/qt4/ui/*.ui'''
- output = io.open(output, 'w', encoding='utf_8')
+ output = io.open(output, 'w', encoding='utf_8', newline='\n')
pat = re.compile(r'\s*<string>(.*)</string>')
prop = re.compile(r'\s*<property.*name.*=.*shortcut')
for src in input_files:
def languages_l10n(input_files, output, base):
'''Generate pot file from lib/languages'''
- out = io.open(output, 'w', encoding='utf_8')
+ out = io.open(output, 'w', encoding='utf_8', newline='\n')
GuiName = re.compile(r'^[^#]*GuiName\s+(.*)', re.IGNORECASE)
for src in input_files:
def latexfonts_l10n(input_files, output, base):
'''Generate pot file from lib/latexfonts'''
- out = io.open(output, 'w', encoding='utf_8')
+ out = io.open(output, 'w', encoding='utf_8', newline='\n')
GuiName = re.compile(r'^[^#]*GuiName\s+(.*)', re.IGNORECASE)
for src in input_files:
def external_l10n(input_files, output, base):
'''Generate pot file from lib/external_templates'''
- output = io.open(output, 'w', encoding='utf_8')
+ output = io.open(output, 'w', encoding='utf_8', newline='\n')
Template = re.compile(r'^Template\s+(.*)', re.IGNORECASE)
GuiName = re.compile(r'\s*GuiName\s+(.*)', re.IGNORECASE)
HelpTextStart = re.compile(r'\s*HelpText\s', re.IGNORECASE)
def formats_l10n(input_files, output, base):
'''Generate pot file from configure.py'''
- output = io.open(output, 'w', encoding='utf_8')
+ output = io.open(output, 'w', encoding='utf_8', newline='\n')
GuiName = re.compile(r'.*\\Format\s+\S+\s+\S+\s+"([^"]*)"\s+(\S*)\s+.*', re.IGNORECASE)
GuiName2 = re.compile(r'.*\\Format\s+\S+\s+\S+\s+([^"]\S+)\s+(\S*)\s+.*', re.IGNORECASE)
input = io.open(input_files[0], encoding='utf_8')
def encodings_l10n(input_files, output, base):
'''Generate pot file from lib/encodings'''
- output = io.open(output, 'w', encoding='utf_8')
+ output = io.open(output, 'w', encoding='utf_8', newline='\n')
# assuming only one encodings file
# Encoding utf8 utf8 "Unicode (utf8)" UTF-8 variable inputenc
reg = re.compile('Encoding [\w-]+\s+[\w-]+\s+"([\w \-\(\)]+)"\s+[\w-]+\s+(fixed|variable|variableunsafe)\s+\w+.*')
input_files += args
+ # Ensure a unique sorting of input files and ignore the order in which they
+ # are given on the command line. This is important to avoid huge
+ # pseudo-diffs in the generated .pot file which would then end up in the
+ # .po files as well. We had this situation for years with people using
+ # different build systems to remerge .po files.
+ input_files.sort()
+
if input_type == 'ui':
ui_l10n(input_files, output, base)
elif input_type == 'latexfonts':